public async Task <QuerySaveResult> InitialSaveAsync(QuerySave query) { var urn = QueryUrn.Create(query.QueryId); var conceptids = query.Resources.Concepts.Select(c => c.Id.Value).Where(c => c != Guid.Empty); var queryids = query.Resources.Queries.Select(q => q.Id.Value); using (var cn = new SqlConnection(dbOpts.ConnectionString)) { await cn.OpenAsync(); var qsr = await cn.QueryFirstOrDefaultAsync <QuerySaveResultRecord>( initialQuerySave, new { queryid = query.QueryId, urn = urn.ToString(), name = query.Name, category = query.Category, conceptids = ResourceIdTable.From(conceptids), queryids = ResourceIdTable.From(queryids), definition = query.Definition, user = user.UUID }, commandType : CommandType.StoredProcedure, commandTimeout : dbOpts.DefaultTimeout ); if (qsr == null) { return(null); } return(new QuerySaveResult(query.QueryId, QueryUrn.From(qsr.UniversalId), qsr.Ver)); } }
public void QueryUrn_Create_Ok() { var id = Guid.NewGuid(); var urn = QueryUrn.Create(id); Assert.Contains(id.ToString(), urn.ToString()); }
async Task <QuerySaveResult> InitialSave(QuerySave query) { var urn = QueryUrn.Create(query.QueryId); var conceptids = query.Resources.Concepts.Select(c => c.Id.Value); var queryids = query.Resources.Queries.Select(q => q.Id.Value); try { using (var cn = new SqlConnection(dbOpts.ConnectionString)) { await cn.OpenAsync(); var qsr = await cn.QueryFirstOrDefaultAsync <QuerySaveResultRecord>( initialQuerySave, new { queryid = query.QueryId, urn = urn.ToString(), name = query.Name, category = query.Category, conceptids = ResourceIdTable.From(conceptids), queryids = ResourceIdTable.From(queryids), definition = query.Definition, user = user.UUID }, commandType : CommandType.StoredProcedure, commandTimeout : dbOpts.DefaultTimeout ); if (qsr == null) { return(null); } return(new QuerySaveResult(query.QueryId, QueryUrn.From(qsr.UniversalId), qsr.Ver)); } } catch (SqlException se) { logger.LogError("Could not save query. Query:{@Query} Code:{Code} Error:{Error}", query, se.ErrorCode, se.Message); se.MapThrow(); throw; } }