public async Task <IResultList <IContentEntity> > QueryAsync(ContentQueryContext context, Q query) { Guard.NotNull(context, nameof(context)); var schema = await GetSchemaAsync(context); CheckPermission(schema, context.Base.User); using (Profiler.TraceMethod <ContentQueryService>()) { var status = GetQueryStatus(context.Base); IResultList <IContentEntity> contents; if (query.Ids?.Count > 0) { contents = await contentRepository.QueryAsync(context.Base.App, schema, status, new HashSet <Guid>(query.Ids)); contents = Sort(contents, query.Ids); } else { var parsedQuery = ParseQuery(context.Base, query.ODataQuery, schema); contents = await contentRepository.QueryAsync(context.Base.App, schema, status, parsedQuery); } return(Transform(context.Base, schema, true, contents)); } }
public async Task <IContentEntity> FindContentAsync(ContentQueryContext context, Guid id, long version = -1) { Guard.NotNull(context, nameof(context)); var schema = await GetSchemaAsync(context); using (Profiler.TraceMethod <ContentQueryService>()) { var isVersioned = version > EtagVersion.Empty; var status = GetFindStatus(context.Base); var content = isVersioned ? await FindContentByVersionAsync(id, version) : await FindContentAsync(context.Base, id, status, schema); if (content == null || (content.Status != Status.Published && !context.Base.IsFrontendClient) || content.SchemaId.Id != schema.Id) { throw new DomainObjectNotFoundException(id.ToString(), typeof(ISchemaEntity)); } return(Transform(context.Base, schema, true, content)); } }
public ContentQueryServiceTests() { user = new ClaimsPrincipal(identity); A.CallTo(() => app.Id).Returns(appId); A.CallTo(() => app.Name).Returns(appName); A.CallTo(() => app.LanguagesConfig).Returns(LanguagesConfig.English); A.CallTo(() => schema.SchemaDef).Returns(new Schema("my-schema")); context = new ContentQueryContext(QueryContext.Create(app, user)); sut = new ContentQueryService(contentRepository, contentVersionLoader, appProvider, scriptEngine, modelBuilder); }
public ContentQueryServiceTests() { user = new ClaimsPrincipal(identity); A.CallTo(() => app.Id).Returns(appId); A.CallTo(() => app.Name).Returns(appName); A.CallTo(() => app.LanguagesConfig).Returns(LanguagesConfig.English); A.CallTo(() => schema.AppId).Returns(new NamedId <Guid>(appId, appName)); A.CallTo(() => schema.Id).Returns(schemaId); A.CallTo(() => schema.Name).Returns(schemaName); A.CallTo(() => schema.SchemaDef).Returns(new Schema(schemaName)); A.CallTo(() => schema.ScriptQuery).Returns(script); context = new ContentQueryContext(QueryContext.Create(app, user)); sut = new ContentQueryService(appProvider, contentRepository, contentVersionLoader, scriptEngine, Options.Create(new ContentOptions()), modelBuilder); }
public async Task <ISchemaEntity> GetSchemaAsync(ContentQueryContext context) { ISchemaEntity schema = null; if (Guid.TryParse(context.SchemaIdOrName, out var id)) { schema = await appProvider.GetSchemaAsync(context.Base.App.Id, id); } if (schema == null) { schema = await appProvider.GetSchemaAsync(context.Base.App.Id, context.SchemaIdOrName); } if (schema == null) { throw new DomainObjectNotFoundException(context.SchemaIdOrName, typeof(ISchemaEntity)); } return(schema); }
public Task ThrowIfSchemaNotExistsAsync(ContentQueryContext context) { return(GetSchemaAsync(context)); }