예제 #1
0
        public async Task <QueryDeleteResult> Delete(QueryUrn uid, bool force)
        {
            logger.LogInformation("Deleting query. Query:{Query}", uid.ToString());
            using (var cn = new SqlConnection(dbOpts.ConnectionString))
            {
                await cn.OpenAsync();

                try
                {
                    var dependents = await cn.QueryAsync <QueryDependentRecord>(
                        deleteQuery,
                        new { uid = uid.ToString(), force, user = user.UUID },
                        commandType : CommandType.StoredProcedure,
                        commandTimeout : dbOpts.DefaultTimeout
                        );

                    return(QueryDeleteResult.From(dependents.Select(d =>
                    {
                        return new QueryDependent(d.Id, QueryUrn.From(d.UniversalId), d.Name, d.Owner);
                    })));
                }
                catch (SqlException se)
                {
                    logger.LogError("Could not delete query. Query:{Query} Code:{Code} Error:{Error}", uid.ToString(), se.ErrorCode, se.Message);
                    se.MapThrow();
                    throw;
                }
            }
        }
예제 #2
0
파일: QueryService.cs 프로젝트: umcu/leaf
        public async Task <Query> GetQueryAsync(QueryUrn uid)
        {
            using (var cn = new SqlConnection(dbOpts.ConnectionString))
            {
                await cn.OpenAsync();

                var r = await cn.QueryFirstOrDefaultAsync <QueryRecord>(
                    queryQueryByUId,
                    new { uid = uid.ToString(), user = user.UUID, groups = GroupMembership.From(user), admin = user.IsAdmin },
                    commandType : CommandType.StoredProcedure,
                    commandTimeout : dbOpts.DefaultTimeout
                    );

                return(new Query
                {
                    Id = r.Id,
                    UniversalId = QueryUrn.From(r.UniversalId),
                    Name = r.Name,
                    Category = r.Category,
                    Owner = r.Owner,
                    Created = r.Created,
                    Updated = r.Updated,
                    Count = r.Count,
                    Definition = r.Definition
                });
            }
        }
예제 #3
0
파일: QueryService.cs 프로젝트: umcu/leaf
        public async Task <QueryDeleteResult> DeleteAsync(QueryUrn uid, bool force)
        {
            using (var cn = new SqlConnection(dbOpts.ConnectionString))
            {
                await cn.OpenAsync();

                var dependents = await cn.QueryAsync <QueryDependentRecord>(
                    deleteQuery,
                    new { uid = uid.ToString(), force, user = user.UUID, admin = user.IsAdmin },
                    commandType : CommandType.StoredProcedure,
                    commandTimeout : dbOpts.DefaultTimeout
                    );

                return(QueryDeleteResult.From(dependents.Select(d =>
                {
                    return new QueryDependent(d.Id, QueryUrn.From(d.UniversalId), d.Name, d.Owner);
                })));
            }
        }
예제 #4
0
        public async Task <Query> GetQuery(QueryUrn uid)
        {
            logger.LogInformation("Getting query UId:{UId}", uid);
            using (var cn = new SqlConnection(dbOpts.ConnectionString))
            {
                await cn.OpenAsync();

                try
                {
                    var r = await cn.QueryFirstOrDefaultAsync <QueryRecord>(
                        queryQueryByUId,
                        new { uid = uid.ToString(), user = user.UUID, groups = GroupMembership.From(user) },
                        commandType : CommandType.StoredProcedure,
                        commandTimeout : dbOpts.DefaultTimeout
                        );

                    return(new Query
                    {
                        Id = r.Id,
                        UniversalId = QueryUrn.From(r.UniversalId),
                        Name = r.Name,
                        Category = r.Category,
                        Owner = r.Owner,
                        Created = r.Created,
                        Updated = r.Updated,
                        Count = r.Count,
                        Definition = r.Definition
                    });
                }
                catch (SqlException se)
                {
                    logger.LogError("Could not get query. UniversalId:{UniversalId} Code:{Code} Error:{Error}", uid, se.ErrorCode, se.Message);
                    se.MapThrow();
                    throw;
                }
            }
        }