public async Task <PageBase <EntityVersion> > GetPageVersionAsync(EntityVersionQuery entityVersionQuery) { var result = new PageBase <EntityVersion> { CurrentPage = entityVersionQuery.CurrentPage, PageSize = entityVersionQuery.PageSize }; var strTotalSql = new StringBuilder(); var strSql = new StringBuilder(); //计算总数 strTotalSql.Append(@" SELECT COUNT(1) FROM T_Version where 1=1 "); if (!string.IsNullOrEmpty(entityVersionQuery.VersionName)) { strTotalSql.Append(" and VersionName like @versionName "); } //分页信息 strSql.Append(@"; SELECT Id , VersionId , VersionName , VersionStatus , CreateTime , Remark FROM T_Version where 1=1 "); if (!string.IsNullOrEmpty(entityVersionQuery.VersionName)) { strSql.Append(" and VersionName like @versionName "); } strSql.Append(@" order by createTime desc "); strSql.Append(@" limit @startIndex,@pageSize "); var paras = new DynamicParameters(new { versionName = "%" + entityVersionQuery.VersionName + "%", startIndex = (entityVersionQuery.CurrentPage - 1) * entityVersionQuery.PageSize, pageSize = entityVersionQuery.PageSize }); var versionRep = GetRepositoryInstance <TableVersions>(); var sqlQuery = new SqlQuery(strSql.ToString(), paras); var listResult = await versionRep.FindAllAsync(sqlQuery); result.Items = Mapper.Map <List <TableVersions>, List <EntityVersion> >(listResult.AsList()); result.TotalCounts = versionRep.Connection.ExecuteScalar <int>(strTotalSql.ToString(), paras); result.TotalPages = Convert.ToInt32(Math.Ceiling(result.TotalCounts / (entityVersionQuery.PageSize * 1.0))); return(result); }
public async Task <List <EntityUpdateView> > ExportAllUpdatesChunked(NpgsqlConnection conn, UpdateType type, EntityVersionQuery opts) { var q = new SqlKata.Query("updates") .ApplyBounds(opts, "timestamp") .ApplySorting(opts, "timestamp", "update_id") .Where("type", type); if (opts.Ids != null) { q.WhereIn("entity_id", opts.Ids); } var results = await conn.QueryKataAsync <EntityUpdateView>(q).ToListAsync(); // We do the "join" like this because the overhead of another query is less than the overhead of "duplicating" the objec var objectHashes = results.Select(r => r.Hash).ToHashSet(); var objects = await _objectStore.GetObjectsByHashes(conn, objectHashes); return(results.Where(update => { if (!objects.ContainsKey(update.Hash)) { return false; } update.Data = objects[update.Hash]; return true; }).ToList()); }
public async Task <ResponseModel> GetPageVersionsAsync([FromQuery] EntityVersionQuery entityVersionQuery) { return(Success(await VersionService.GetPageVersionAsync(entityVersionQuery))); }
public IAsyncEnumerable <EntityUpdateView> ExportAllUpdatesRaw(UpdateType type, EntityVersionQuery opts) { var q = new SqlKata.Query("updates") .ApplyBounds(opts, "timestamp") .ApplySorting(opts, "timestamp", "update_id") .Join("objects", "objects.hash", "updates.hash") .Where("type", type); if (opts.Ids != null) { q.WhereIn("entity_id", opts.Ids); } return(_db.QueryKataAsync <EntityUpdateView>(q)); }