Browse Source

Minor fix for flat content.

pull/537/head
Sebastian 6 years ago
parent
commit
a254639a5b
  1. 16
      backend/src/Squidex.Domain.Apps.Core.Operations/ConvertContent/ContentConverterFlat.cs
  2. 2
      backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Operations/QueryIdsAsync.cs
  3. 19
      backend/src/Squidex.Domain.Apps.Entities/History/NotifoService.cs
  4. 3
      backend/src/Squidex.Infrastructure.MongoDb/EventSourcing/MongoEventStore.cs
  5. 4
      backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/ContentConversionFlatTests.cs
  6. 20
      frontend/app/shared/state/contents.state.ts

16
backend/src/Squidex.Domain.Apps.Core.Operations/ConvertContent/ContentConverterFlat.cs

@ -20,7 +20,12 @@ namespace Squidex.Domain.Apps.Core.ConvertContent
foreach (var (key, value) in content)
{
result[key] = GetFirst(value);
var first = GetFirst(value);
if (first != null)
{
result[key] = first;
}
}
return result;
@ -32,7 +37,12 @@ namespace Squidex.Domain.Apps.Core.ConvertContent
foreach (var (key, value) in content)
{
result[key] = GetFirst(value, fallback);
var first = GetFirst(value, fallback);
if (first != null)
{
result[key] = first;
}
}
return result;
@ -40,7 +50,7 @@ namespace Squidex.Domain.Apps.Core.ConvertContent
private static object? GetFirst(ContentFieldData? fieldData)
{
if (fieldData == null)
if (fieldData == null || fieldData.Count == 0)
{
return null;
}

2
backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Operations/QueryIdsAsync.cs

@ -96,7 +96,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents.Operations
private static string GetSchemaIdField()
{
return BsonClassMap.LookupClassMap(typeof(MongoContentEntity)).GetMemberMap(nameof(MongoContentEntity.Id)).ElementName;
return BsonClassMap.LookupClassMap(typeof(MongoContentEntity)).GetMemberMap(nameof(MongoContentEntity.IndexedSchemaId)).ElementName;
}
}
}

19
backend/src/Squidex.Domain.Apps.Entities/History/NotifoService.cs

@ -7,6 +7,7 @@
using System.Threading;
using System.Threading.Tasks;
using Grpc.Core;
using Microsoft.Extensions.Options;
using NodaTime;
using Notifo.SDK;
@ -178,7 +179,14 @@ namespace Squidex.Domain.Apps.Entities.History
var request = BuildAllowedTopicRequest(contributorAssigned, contributorAssigned.ContributorId);
await client.AddAllowedTopicAsync(request);
try
{
await client.AddAllowedTopicAsync(request);
}
catch (RpcException ex) when (ex.StatusCode == StatusCode.NotFound)
{
break;
}
break;
}
@ -187,7 +195,14 @@ namespace Squidex.Domain.Apps.Entities.History
{
var request = BuildAllowedTopicRequest(contributorRemoved, contributorRemoved.ContributorId);
await client.RemoveAllowedTopicAsync(request);
try
{
await client.RemoveAllowedTopicAsync(request);
}
catch (RpcException ex) when (ex.StatusCode == StatusCode.NotFound)
{
break;
}
break;
}

3
backend/src/Squidex.Infrastructure.MongoDb/EventSourcing/MongoEventStore.cs

@ -48,6 +48,9 @@ namespace Squidex.Infrastructure.EventSourcing
{
return collection.Indexes.CreateManyAsync(new[]
{
new CreateIndexModel<MongoEventCommit>(
Index
.Ascending(x => x.Timestamp)),
new CreateIndexModel<MongoEventCommit>(
Index
.Ascending(x => x.EventStream)

4
backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/ContentConversionFlatTests.cs

@ -31,7 +31,9 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent
.AddValue("en", 6))
.AddField("field4",
new ContentFieldData()
.AddValue("it", 7));
.AddValue("it", 7))
.AddField("field5",
new ContentFieldData());
[Fact]
public void Should_return_flatten_value()

20
frontend/app/shared/state/contents.state.ts

@ -115,7 +115,7 @@ export abstract class ContentsStateBase extends State<Snapshot> {
of(this.snapshot.contents.find(x => x.id === id)).pipe(
switchMap(content => {
if (!content) {
return this.contentsService.getContent(this.appName, this.schemaId, id).pipe(catchError(() => of(null)));
return this.contentsService.getContent(this.appName, this.schemaName, id).pipe(catchError(() => of(null)));
} else {
return of(content);
}
@ -152,7 +152,7 @@ export abstract class ContentsStateBase extends State<Snapshot> {
}
private loadInternalCore(isReload: boolean) {
if (!this.appName || !this.schemaId) {
if (!this.appName || !this.schemaName) {
return empty();
}
@ -167,7 +167,7 @@ export abstract class ContentsStateBase extends State<Snapshot> {
query.query = this.snapshot.contentsQuery;
}
return this.contentsService.getContents(this.appName, this.schemaId, query).pipe(
return this.contentsService.getContents(this.appName, this.schemaName, query).pipe(
tap(({ total, items: contents, canCreate, canCreateAndPublish, statuses }) => {
if (isReload) {
this.dialogs.notifyInfo('Contents reloaded.');
@ -202,12 +202,12 @@ export abstract class ContentsStateBase extends State<Snapshot> {
}
public loadVersion(content: ContentDto, version: Version): Observable<Versioned<any>> {
return this.contentsService.getVersionData(this.appName, this.schemaId, content.id, version).pipe(
return this.contentsService.getVersionData(this.appName, this.schemaName, content.id, version).pipe(
shareSubscribed(this.dialogs));
}
public create(request: any, publish: boolean): Observable<ContentDto> {
return this.contentsService.postContent(this.appName, this.schemaId, request, publish).pipe(
return this.contentsService.postContent(this.appName, this.schemaName, request, publish).pipe(
tap(payload => {
this.dialogs.notifyInfo('Content created successfully.');
@ -330,6 +330,8 @@ export abstract class ContentsStateBase extends State<Snapshot> {
}
public abstract get schemaId(): string;
public abstract get schemaName(): string;
}
@Injectable()
@ -343,6 +345,10 @@ export class ContentsState extends ContentsStateBase {
public get schemaId() {
return this.schemasState.schemaId;
}
public get schemaName() {
return this.schemasState.schemaName;
}
}
@Injectable()
@ -358,6 +364,10 @@ export class ManualContentsState extends ContentsStateBase {
public get schemaId() {
return this.schema.id;
}
public get schemaName() {
return this.schema.name;
}
}
function buildStatusQueries(statuses: ReadonlyArray<StatusInfo> | undefined): ReadonlyArray<SavedQuery> {

Loading…
Cancel
Save