protected override void WriteEvent(DbCommand command, IPersistentRepresentation e, IImmutableSet <string> tags) { var manifest = string.IsNullOrEmpty(e.Manifest) ? QualifiedName(e) : e.Manifest; var t = _serialize(e); AddParameter(command, "@PersistenceId", DbType.String, e.PersistenceId); AddParameter(command, "@SequenceNr", DbType.Int64, e.SequenceNr); AddParameter(command, "@Timestamp", DbType.Int64, TimestampProvider.GenerateTimestamp(e)); AddParameter(command, "@IsDeleted", DbType.Boolean, false); AddParameter(command, "@Manifest", DbType.String, manifest); command.Parameters.Add(new NpgsqlParameter("@Payload", t.Key) { Value = t.Value }); if (tags.Count != 0) { var tagBuilder = new StringBuilder(";", tags.Sum(x => x.Length) + tags.Count + 1); foreach (var tag in tags) { tagBuilder.Append(tag).Append(';'); } AddParameter(command, "@Tag", DbType.String, tagBuilder.ToString()); } else { AddParameter(command, "@Tag", DbType.String, DBNull.Value); } }
protected override void WriteEvent(DbCommand command, IPersistentRepresentation e, IImmutableSet <string> tags) { var serializationResult = _serialize(e); var serializer = serializationResult.Serializer; var hasSerializer = serializer != null; string manifest = ""; if (hasSerializer && serializer is SerializerWithStringManifest) { manifest = ((SerializerWithStringManifest)serializer).Manifest(e.Payload); } else if (hasSerializer && serializer.IncludeManifest) { manifest = QualifiedName(e); } else { manifest = string.IsNullOrEmpty(e.Manifest) ? QualifiedName(e) : e.Manifest; } AddParameter(command, "@PersistenceId", DbType.String, e.PersistenceId); AddParameter(command, "@SequenceNr", DbType.Int64, e.SequenceNr); AddParameter(command, "@Timestamp", DbType.Int64, TimestampProvider.GenerateTimestamp(e)); AddParameter(command, "@IsDeleted", DbType.Boolean, false); AddParameter(command, "@Manifest", DbType.String, manifest); if (hasSerializer) { AddParameter(command, "@SerializerId", DbType.Int32, serializer.Identifier); } else { AddParameter(command, "@SerializerId", DbType.Int32, DBNull.Value); } command.Parameters.Add(new NpgsqlParameter("@Payload", serializationResult.DbType) { Value = serializationResult.Payload }); if (tags.Count != 0) { var tagBuilder = new StringBuilder(";", tags.Sum(x => x.Length) + tags.Count + 1); foreach (var tag in tags) { tagBuilder.Append(tag).Append(';'); } AddParameter(command, "@Tag", DbType.String, tagBuilder.ToString()); } else { AddParameter(command, "@Tag", DbType.String, DBNull.Value); } }
protected override void WriteEvent(DbCommand command, IPersistentRepresentation e, IImmutableSet <string> tags) { var payloadType = e.Payload.GetType(); var serializer = Serialization.FindSerializerForType(payloadType, Configuration.DefaultSerializer); var manifest = " "; // HACK if (serializer is SerializerWithStringManifest stringManifest) { manifest = stringManifest.Manifest(e.Payload); } else { if (serializer.IncludeManifest) { manifest = payloadType.TypeQualifiedName(); } } var binary = serializer.ToBinary(e.Payload); AddParameter(command, ":PersistenceId", OracleDbType.NVarchar2, e.PersistenceId); AddParameter(command, ":SequenceNr", OracleDbType.Int64, e.SequenceNr); AddParameter(command, ":Timestamp", OracleDbType.Int64, TimestampProvider.GenerateTimestamp(e)); AddParameter(command, ":IsDeleted", OracleDbType.Int16, e.IsDeleted); AddParameter(command, ":Manifest", OracleDbType.NVarchar2, manifest); AddParameter(command, ":Payload", OracleDbType.Blob, binary); AddParameter(command, ":SerializerId", OracleDbType.Int32, serializer.Identifier); if (tags.Count != 0) { var tagBuilder = new StringBuilder(";", tags.Sum(x => x.Length) + tags.Count + 1); foreach (var tag in tags) { tagBuilder.Append(tag).Append(';'); } AddParameter(command, ":Tag", OracleDbType.NVarchar2, tagBuilder.ToString()); } else { AddParameter(command, ":Tag", OracleDbType.NVarchar2, DBNull.Value); } }