public async Task Delete(PrimaryKey id) { using (var conn = tableInfo.CreateConnection()) { await conn.ExecuteAsync(deleteSql, new { StateId = id.ToString() }); } }
public async Task Delete(PrimaryKey stateId, string briefId) { using (var conn = tableInfo.CreateConnection()) { await conn.ExecuteAsync(deleteSql, new { Id = briefId }); } }
public async Task <IList <IFullyEvent <PrimaryKey> > > GetList(PrimaryKey stateId, long latestTimestamp, long startVersion, long endVersion) { var list = new List <IFullyEvent <PrimaryKey> >((int)(endVersion - startVersion)); await Task.Run(async() => { var getTableListTask = config.GetSubTables(); if (!getTableListTask.IsCompletedSuccessfully) { await getTableListTask; } using (var conn = config.CreateConnection() as NpgsqlConnection) { await conn.OpenAsync(); foreach (var table in getTableListTask.Result.Where(t => t.EndTime >= latestTimestamp)) { var sql = $"COPY (SELECT typecode,data,version,timestamp from {table.SubTable} WHERE stateid='{stateId.ToString()}' and version>={startVersion} and version<={endVersion} order by version asc) TO STDOUT (FORMAT BINARY)"; using (var reader = conn.BeginBinaryExport(sql)) { while (reader.StartRow() != -1) { var typeCode = reader.Read <string>(NpgsqlDbType.Varchar); var data = reader.Read <string>(NpgsqlDbType.Jsonb); var version = reader.Read <long>(NpgsqlDbType.Bigint); var timestamp = reader.Read <long>(NpgsqlDbType.Bigint); if (version <= endVersion && version >= startVersion) { if (serializer.Deserialize(TypeContainer.GetType(typeCode), Encoding.Default.GetBytes(data)) is IEvent evt) { list.Add(new FullyEvent <PrimaryKey> { StateId = stateId, Event = evt, Base = new EventBase(version, timestamp) }); } } } } } } }); return(list.OrderBy(e => e.Base.Version).ToList()); }
public async Task <FollowSnapshot <PrimaryKey> > Get(PrimaryKey id) { using (var conn = tableInfo.CreateConnection()) { var data = await conn.QuerySingleOrDefaultAsync <FollowStateModel>(getByIdSql, new { StateId = id.ToString() }); if (data != default) { return(new FollowSnapshot <PrimaryKey>() { StateId = id, Version = data.Version, DoingVersion = data.Version, StartTimestamp = data.StartTimestamp }); } } return(default);