Example #1
0
        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);
        }
Example #2
0
        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)));
 }
Example #4
0
        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));
        }