public async Task <IReadOnlyList <IContentEntity> > QueryContentsAsync(string schemaIdOrName, string query) { var contents = await contentQuery.QueryWithCountAsync(app, schemaIdOrName, user, false, query); foreach (var content in contents.Items) { cachedContents[content.Id] = content; } return(contents.Items); }
public async Task <IActionResult> GetContents(string name, [FromQuery] bool archived = false, [FromQuery] string ids = null) { HashSet <Guid> idsList = null; if (!string.IsNullOrWhiteSpace(ids)) { idsList = new HashSet <Guid>(); foreach (var id in ids.Split(',')) { if (Guid.TryParse(id, out var guid)) { idsList.Add(guid); } } } var isFrontendClient = User.IsFrontendClient(); var contents = idsList != null ? await contentQuery.QueryWithCountAsync(App, name, User, archived, idsList) : await contentQuery.QueryWithCountAsync(App, name, User, archived, Request.QueryString.ToString()); var response = new AssetsDto { Total = contents.Total, Items = contents.Items.Take(200).Select(item => { var itemModel = SimpleMapper.Map(item, new ContentDto()); if (item.Data != null) { itemModel.Data = item.Data.ToApiModel(contents.Schema.SchemaDef, App.LanguagesConfig, !isFrontendClient); } return(itemModel); }).ToArray() }; return(Ok(response)); }
public async Task Should_return_multiple_contens_when_querying_contents() { const string query = @" query { queryMySchemaContents(top: 30, skip: 5) { id version created createdBy lastModified lastModifiedBy url data { myString { iv } myNumber { iv } myBoolean { iv } myDatetime { iv } myJson { iv } myGeolocation { iv } } } }"; var content = CreateContent(Guid.NewGuid(), Guid.Empty, Guid.Empty); var contents = new List <IContentEntity> { content }; A.CallTo(() => contentQuery.QueryWithCountAsync(app, schema.Id.ToString(), user, false, "?$top=30&$skip=5")) .Returns((schema, 0L, (IReadOnlyList <IContentEntity>)contents)); var result = await sut.QueryAsync(app, user, new GraphQLQuery { Query = query }); var expected = new { data = new { queryMySchemaContents = new dynamic[] { new { id = content.Id, version = 1, created = content.Created.ToDateTimeUtc(), createdBy = "subject:user1", lastModified = content.LastModified.ToDateTimeUtc(), lastModifiedBy = "subject:user2", url = $"contents/my-schema/{content.Id}", data = new { myString = new { iv = "value" }, myNumber = new { iv = 1 }, myBoolean = new { iv = true }, myDatetime = new { iv = content.LastModified.ToDateTimeUtc() }, myJson = new { iv = new { value = 1 } }, myGeolocation = new { iv = new { latitude = 10, longitude = 20 } } } } } } }; AssertJson(expected, new { data = result.Data }); }