Browse Source

Merge branch 'master' of github.com:Squidex/squidex

pull/768/head
Sebastian 4 years ago
parent
commit
cb7b1014e8
  1. 6
      backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetFolderRepository.cs
  2. 10
      backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetFolderRepository_SnapshotStore.cs
  3. 14
      backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetRepository.cs
  4. 10
      backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetRepository_SnapshotStore.cs
  5. 14
      backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentCollection.cs
  6. 10
      backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentRepository_SnapshotStore.cs
  7. 16
      backend/src/Squidex.Domain.Apps.Entities/Apps/Indexes/AppsIndex.cs
  8. 2
      backend/src/Squidex.Domain.Apps.Entities/Assets/Queries/AssetEnricher.cs
  9. 2
      backend/src/Squidex.Domain.Apps.Entities/Assets/Queries/AssetLoader.cs
  10. 2
      backend/src/Squidex.Domain.Apps.Entities/Assets/Queries/AssetQueryParser.cs
  11. 18
      backend/src/Squidex.Domain.Apps.Entities/Assets/Queries/AssetQueryService.cs
  12. 4
      backend/src/Squidex.Domain.Apps.Entities/Backup/RestoreGrain.cs
  13. 1
      backend/src/Squidex.Domain.Apps.Entities/Contents/DomainObject/Guards/SecurityExtensions.cs
  14. 4
      backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/ContentEnricher.cs
  15. 2
      backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/ContentLoader.cs
  16. 2
      backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/ContentQueryParser.cs
  17. 9
      backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/ContentQueryService.cs
  18. 4
      backend/src/Squidex.Domain.Apps.Entities/Rules/Indexes/RulesIndex.cs
  19. 2
      backend/src/Squidex.Domain.Apps.Entities/Rules/Queries/RuleEnricher.cs
  20. 12
      backend/src/Squidex.Domain.Apps.Entities/Schemas/Indexes/SchemasIndex.cs
  21. 6
      backend/src/Squidex.Infrastructure.MongoDb/EventSourcing/MongoEventStore_Reader.cs
  22. 4
      backend/src/Squidex.Infrastructure.MongoDb/EventSourcing/MongoEventStore_Writer.cs
  23. 10
      backend/src/Squidex.Infrastructure.MongoDb/States/MongoSnapshotStore.cs
  24. 4
      backend/src/Squidex.Infrastructure/Orleans/J{T}.cs
  25. 26
      backend/src/Squidex.Infrastructure/Telemetry.cs
  26. 1
      backend/src/Squidex.Web/ETagExtensions.cs
  27. 1
      backend/src/Squidex.Web/Pipeline/ApiCostsFilter.cs
  28. 1
      backend/src/Squidex.Web/Pipeline/CachingManager.cs
  29. 1
      backend/src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs
  30. 6
      helm/index.yaml
  31. BIN
      helm/squidex-1.0.0.tgz

6
backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetFolderRepository.cs

@ -45,7 +45,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
public async Task<IResultList<IAssetFolderEntity>> QueryAsync(DomainId appId, DomainId parentId, public async Task<IResultList<IAssetFolderEntity>> QueryAsync(DomainId appId, DomainId parentId,
CancellationToken ct = default) CancellationToken ct = default)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetFolderRepository>("QueryAsyncByQuery")) using (Telemetry.Activities.StartActivity("MongoAssetFolderRepository/QueryAsync"))
{ {
var filter = BuildFilter(appId, parentId); var filter = BuildFilter(appId, parentId);
@ -60,7 +60,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
public async Task<IReadOnlyList<DomainId>> QueryChildIdsAsync(DomainId appId, DomainId parentId, public async Task<IReadOnlyList<DomainId>> QueryChildIdsAsync(DomainId appId, DomainId parentId,
CancellationToken ct = default) CancellationToken ct = default)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetRepository>()) using (Telemetry.Activities.StartActivity("MongoAssetFolderRepository/QueryChildIdsAsync"))
{ {
var filter = BuildFilter(appId, parentId); var filter = BuildFilter(appId, parentId);
@ -77,7 +77,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
public async Task<IAssetFolderEntity?> FindAssetFolderAsync(DomainId appId, DomainId id, public async Task<IAssetFolderEntity?> FindAssetFolderAsync(DomainId appId, DomainId id,
CancellationToken ct = default) CancellationToken ct = default)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetFolderRepository>()) using (Telemetry.Activities.StartActivity("MongoAssetFolderRepository/FindAssetFolderAsync"))
{ {
var documentId = DomainId.Combine(appId, id); var documentId = DomainId.Combine(appId, id);

10
backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetFolderRepository_SnapshotStore.cs

@ -24,7 +24,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
{ {
async Task<(AssetFolderDomainObject.State Value, bool Valid, long Version)> ISnapshotStore<AssetFolderDomainObject.State>.ReadAsync(DomainId key) async Task<(AssetFolderDomainObject.State Value, bool Valid, long Version)> ISnapshotStore<AssetFolderDomainObject.State>.ReadAsync(DomainId key)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetFolderRepository>()) using (Telemetry.Activities.StartActivity("MongoAssetFolderRepository/ReadAsync"))
{ {
var existing = var existing =
await Collection.Find(x => x.DocumentId == key) await Collection.Find(x => x.DocumentId == key)
@ -41,7 +41,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
async Task ISnapshotStore<AssetFolderDomainObject.State>.WriteAsync(DomainId key, AssetFolderDomainObject.State value, long oldVersion, long newVersion) async Task ISnapshotStore<AssetFolderDomainObject.State>.WriteAsync(DomainId key, AssetFolderDomainObject.State value, long oldVersion, long newVersion)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetFolderRepository>()) using (Telemetry.Activities.StartActivity("MongoAssetFolderRepository/WriteAsync"))
{ {
var entity = Map(value); var entity = Map(value);
@ -51,7 +51,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
async Task ISnapshotStore<AssetFolderDomainObject.State>.WriteManyAsync(IEnumerable<(DomainId Key, AssetFolderDomainObject.State Value, long Version)> snapshots) async Task ISnapshotStore<AssetFolderDomainObject.State>.WriteManyAsync(IEnumerable<(DomainId Key, AssetFolderDomainObject.State Value, long Version)> snapshots)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetFolderRepository>()) using (Telemetry.Activities.StartActivity("MongoAssetFolderRepository/WriteManyAsync"))
{ {
var updates = snapshots.Select(Map).Select(x => var updates = snapshots.Select(Map).Select(x =>
new ReplaceOneModel<MongoAssetFolderEntity>( new ReplaceOneModel<MongoAssetFolderEntity>(
@ -73,7 +73,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
async Task ISnapshotStore<AssetFolderDomainObject.State>.ReadAllAsync(Func<AssetFolderDomainObject.State, long, Task> callback, async Task ISnapshotStore<AssetFolderDomainObject.State>.ReadAllAsync(Func<AssetFolderDomainObject.State, long, Task> callback,
CancellationToken ct) CancellationToken ct)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetFolderRepository>()) using (Telemetry.Activities.StartActivity("MongoAssetFolderRepository/ReadAllAsync"))
{ {
await Collection.Find(new BsonDocument(), Batching.Options).ForEachAsync(x => callback(Map(x), x.Version), ct); await Collection.Find(new BsonDocument(), Batching.Options).ForEachAsync(x => callback(Map(x), x.Version), ct);
} }
@ -81,7 +81,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
async Task ISnapshotStore<AssetFolderDomainObject.State>.RemoveAsync(DomainId key) async Task ISnapshotStore<AssetFolderDomainObject.State>.RemoveAsync(DomainId key)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetFolderRepository>()) using (Telemetry.Activities.StartActivity("MongoAssetFolderRepository/RemoveAsync"))
{ {
await Collection.DeleteOneAsync(x => x.DocumentId == key); await Collection.DeleteOneAsync(x => x.DocumentId == key);
} }

14
backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetRepository.cs

@ -90,7 +90,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
public async Task<IResultList<IAssetEntity>> QueryAsync(DomainId appId, DomainId? parentId, Q q, public async Task<IResultList<IAssetEntity>> QueryAsync(DomainId appId, DomainId? parentId, Q q,
CancellationToken ct = default) CancellationToken ct = default)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetRepository>("QueryAsyncByQuery")) using (Telemetry.Activities.StartActivity("ContentQueryService/QueryAsync"))
{ {
try try
{ {
@ -152,7 +152,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
public async Task<IReadOnlyList<DomainId>> QueryIdsAsync(DomainId appId, HashSet<DomainId> ids, public async Task<IReadOnlyList<DomainId>> QueryIdsAsync(DomainId appId, HashSet<DomainId> ids,
CancellationToken ct = default) CancellationToken ct = default)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetRepository>("QueryAsyncByIds")) using (Telemetry.Activities.StartActivity("ContentQueryService/QueryIdsAsync"))
{ {
var assetEntities = var assetEntities =
await Collection.Find(BuildFilter(appId, ids)).Only(x => x.Id) await Collection.Find(BuildFilter(appId, ids)).Only(x => x.Id)
@ -167,7 +167,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
public async Task<IReadOnlyList<DomainId>> QueryChildIdsAsync(DomainId appId, DomainId parentId, public async Task<IReadOnlyList<DomainId>> QueryChildIdsAsync(DomainId appId, DomainId parentId,
CancellationToken ct = default) CancellationToken ct = default)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetRepository>()) using (Telemetry.Activities.StartActivity("ContentQueryService/QueryChildIdsAsync"))
{ {
var assetEntities = var assetEntities =
await Collection.Find(x => x.IndexedAppId == appId && !x.IsDeleted && x.ParentId == parentId).Only(x => x.Id) await Collection.Find(x => x.IndexedAppId == appId && !x.IsDeleted && x.ParentId == parentId).Only(x => x.Id)
@ -182,7 +182,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
public async Task<IAssetEntity?> FindAssetByHashAsync(DomainId appId, string hash, string fileName, long fileSize, public async Task<IAssetEntity?> FindAssetByHashAsync(DomainId appId, string hash, string fileName, long fileSize,
CancellationToken ct = default) CancellationToken ct = default)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetRepository>()) using (Telemetry.Activities.StartActivity("ContentQueryService/FindAssetByHashAsync"))
{ {
var assetEntity = var assetEntity =
await Collection.Find(x => x.IndexedAppId == appId && !x.IsDeleted && x.FileHash == hash && x.FileName == fileName && x.FileSize == fileSize) await Collection.Find(x => x.IndexedAppId == appId && !x.IsDeleted && x.FileHash == hash && x.FileName == fileName && x.FileSize == fileSize)
@ -195,7 +195,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
public async Task<IAssetEntity?> FindAssetBySlugAsync(DomainId appId, string slug, public async Task<IAssetEntity?> FindAssetBySlugAsync(DomainId appId, string slug,
CancellationToken ct = default) CancellationToken ct = default)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetRepository>()) using (Telemetry.Activities.StartActivity("ContentQueryService/FindAssetBySlugAsync"))
{ {
var assetEntity = var assetEntity =
await Collection.Find(x => x.IndexedAppId == appId && !x.IsDeleted && x.Slug == slug) await Collection.Find(x => x.IndexedAppId == appId && !x.IsDeleted && x.Slug == slug)
@ -208,7 +208,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
public async Task<IAssetEntity?> FindAssetAsync(DomainId appId, DomainId id, public async Task<IAssetEntity?> FindAssetAsync(DomainId appId, DomainId id,
CancellationToken ct = default) CancellationToken ct = default)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetRepository>()) using (Telemetry.Activities.StartActivity("ContentQueryService/FindAssetAsync"))
{ {
var documentId = DomainId.Combine(appId, id); var documentId = DomainId.Combine(appId, id);
@ -223,7 +223,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
public async Task<IAssetEntity?> FindAssetAsync(DomainId id, public async Task<IAssetEntity?> FindAssetAsync(DomainId id,
CancellationToken ct = default) CancellationToken ct = default)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetRepository>()) using (Telemetry.Activities.StartActivity("ContentQueryService/FindAssetAsync"))
{ {
var assetEntity = var assetEntity =
await Collection.Find(x => x.Id == id && !x.IsDeleted) await Collection.Find(x => x.Id == id && !x.IsDeleted)

10
backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetRepository_SnapshotStore.cs

@ -24,7 +24,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
{ {
async Task<(AssetDomainObject.State Value, bool Valid, long Version)> ISnapshotStore<AssetDomainObject.State>.ReadAsync(DomainId key) async Task<(AssetDomainObject.State Value, bool Valid, long Version)> ISnapshotStore<AssetDomainObject.State>.ReadAsync(DomainId key)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetRepository>()) using (Telemetry.Activities.StartActivity("MongoAssetRepository/ReadAsync"))
{ {
var existing = var existing =
await Collection.Find(x => x.DocumentId == key) await Collection.Find(x => x.DocumentId == key)
@ -41,7 +41,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
async Task ISnapshotStore<AssetDomainObject.State>.WriteAsync(DomainId key, AssetDomainObject.State value, long oldVersion, long newVersion) async Task ISnapshotStore<AssetDomainObject.State>.WriteAsync(DomainId key, AssetDomainObject.State value, long oldVersion, long newVersion)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetRepository>()) using (Telemetry.Activities.StartActivity("MongoAssetRepository/WriteAsync"))
{ {
var entity = Map(value); var entity = Map(value);
@ -51,7 +51,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
async Task ISnapshotStore<AssetDomainObject.State>.WriteManyAsync(IEnumerable<(DomainId Key, AssetDomainObject.State Value, long Version)> snapshots) async Task ISnapshotStore<AssetDomainObject.State>.WriteManyAsync(IEnumerable<(DomainId Key, AssetDomainObject.State Value, long Version)> snapshots)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetFolderRepository>()) using (Telemetry.Activities.StartActivity("MongoAssetRepository/WriteManyAsync"))
{ {
var updates = snapshots.Select(Map).Select(x => var updates = snapshots.Select(Map).Select(x =>
new ReplaceOneModel<MongoAssetEntity>( new ReplaceOneModel<MongoAssetEntity>(
@ -73,7 +73,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
async Task ISnapshotStore<AssetDomainObject.State>.ReadAllAsync(Func<AssetDomainObject.State, long, Task> callback, async Task ISnapshotStore<AssetDomainObject.State>.ReadAllAsync(Func<AssetDomainObject.State, long, Task> callback,
CancellationToken ct) CancellationToken ct)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetRepository>()) using (Telemetry.Activities.StartActivity("MongoAssetRepository/ReadAllAsync"))
{ {
await Collection.Find(new BsonDocument(), Batching.Options).ForEachAsync(x => callback(Map(x), x.Version), ct); await Collection.Find(new BsonDocument(), Batching.Options).ForEachAsync(x => callback(Map(x), x.Version), ct);
} }
@ -81,7 +81,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
async Task ISnapshotStore<AssetDomainObject.State>.RemoveAsync(DomainId key) async Task ISnapshotStore<AssetDomainObject.State>.RemoveAsync(DomainId key)
{ {
using (Telemetry.Activities.StartMethod<MongoAssetRepository>()) using (Telemetry.Activities.StartActivity("MongoAssetRepository/RemoveAsync"))
{ {
await Collection.DeleteOneAsync(x => x.DocumentId == key); await Collection.DeleteOneAsync(x => x.DocumentId == key);
} }

14
backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentCollection.cs

@ -106,7 +106,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
public async Task<IResultList<IContentEntity>> QueryAsync(IAppEntity app, List<ISchemaEntity> schemas, Q q, public async Task<IResultList<IContentEntity>> QueryAsync(IAppEntity app, List<ISchemaEntity> schemas, Q q,
CancellationToken ct) CancellationToken ct)
{ {
using (Telemetry.Activities.StartMethod<MongoContentRepository>()) using (Telemetry.Activities.StartActivity("MongoContentCollection/QueryAsync"))
{ {
if (q.Ids != null && q.Ids.Count > 0) if (q.Ids != null && q.Ids.Count > 0)
{ {
@ -135,7 +135,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
public async Task<IResultList<IContentEntity>> QueryAsync(IAppEntity app, ISchemaEntity schema, Q q, public async Task<IResultList<IContentEntity>> QueryAsync(IAppEntity app, ISchemaEntity schema, Q q,
CancellationToken ct) CancellationToken ct)
{ {
using (Telemetry.Activities.StartMethod<MongoContentRepository>()) using (Telemetry.Activities.StartActivity("MongoContentCollection/QueryAsync"))
{ {
if (q.Ids != null && q.Ids.Count > 0) if (q.Ids != null && q.Ids.Count > 0)
{ {
@ -159,7 +159,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
public async Task<IContentEntity?> FindContentAsync(ISchemaEntity schema, DomainId id, public async Task<IContentEntity?> FindContentAsync(ISchemaEntity schema, DomainId id,
CancellationToken ct) CancellationToken ct)
{ {
using (Telemetry.Activities.StartMethod<MongoContentRepository>()) using (Telemetry.Activities.StartActivity("MongoContentCollection/FindContentAsync"))
{ {
return await queryBdId.QueryAsync(schema, id, ct); return await queryBdId.QueryAsync(schema, id, ct);
} }
@ -168,7 +168,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
public async Task QueryScheduledWithoutDataAsync(Instant now, Func<IContentEntity, Task> callback, public async Task QueryScheduledWithoutDataAsync(Instant now, Func<IContentEntity, Task> callback,
CancellationToken ct) CancellationToken ct)
{ {
using (Telemetry.Activities.StartMethod<MongoContentRepository>()) using (Telemetry.Activities.StartActivity("MongoContentCollection/QueryScheduledWithoutDataAsync"))
{ {
await queryScheduled.QueryAsync(now, callback, ct); await queryScheduled.QueryAsync(now, callback, ct);
} }
@ -177,7 +177,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
public async Task<IReadOnlyList<(DomainId SchemaId, DomainId Id, Status Status)>> QueryIdsAsync(DomainId appId, HashSet<DomainId> ids, public async Task<IReadOnlyList<(DomainId SchemaId, DomainId Id, Status Status)>> QueryIdsAsync(DomainId appId, HashSet<DomainId> ids,
CancellationToken ct) CancellationToken ct)
{ {
using (Telemetry.Activities.StartMethod<MongoContentRepository>()) using (Telemetry.Activities.StartActivity("MongoContentCollection/QueryIdsAsync"))
{ {
return await queryByIds.QueryIdsAsync(appId, ids, ct); return await queryByIds.QueryIdsAsync(appId, ids, ct);
} }
@ -186,7 +186,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
public async Task<IReadOnlyList<(DomainId SchemaId, DomainId Id, Status Status)>> QueryIdsAsync(DomainId appId, DomainId schemaId, FilterNode<ClrValue> filterNode, public async Task<IReadOnlyList<(DomainId SchemaId, DomainId Id, Status Status)>> QueryIdsAsync(DomainId appId, DomainId schemaId, FilterNode<ClrValue> filterNode,
CancellationToken ct) CancellationToken ct)
{ {
using (Telemetry.Activities.StartMethod<MongoContentRepository>()) using (Telemetry.Activities.StartActivity("MongoContentCollection/QueryIdsAsync"))
{ {
return await queryByQuery.QueryIdsAsync(appId, schemaId, filterNode, ct); return await queryByQuery.QueryIdsAsync(appId, schemaId, filterNode, ct);
} }
@ -195,7 +195,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
public async Task<bool> HasReferrersAsync(DomainId appId, DomainId contentId, public async Task<bool> HasReferrersAsync(DomainId appId, DomainId contentId,
CancellationToken ct) CancellationToken ct)
{ {
using (Telemetry.Activities.StartMethod<MongoContentRepository>()) using (Telemetry.Activities.StartActivity("MongoContentCollection/HasReferrersAsync"))
{ {
return await queryReferrers.CheckExistsAsync(appId, contentId, ct); return await queryReferrers.CheckExistsAsync(appId, contentId, ct);
} }

10
backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentRepository_SnapshotStore.cs

@ -28,7 +28,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
async Task<(ContentDomainObject.State Value, bool Valid, long Version)> ISnapshotStore<ContentDomainObject.State>.ReadAsync(DomainId key) async Task<(ContentDomainObject.State Value, bool Valid, long Version)> ISnapshotStore<ContentDomainObject.State>.ReadAsync(DomainId key)
{ {
using (Telemetry.Activities.StartMethod<MongoContentRepository>()) using (Telemetry.Activities.StartActivity("MongoContentRepository/ReadAsync"))
{ {
var version = await collectionAll.FindVersionAsync(key); var version = await collectionAll.FindVersionAsync(key);
@ -38,7 +38,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
async Task ISnapshotStore<ContentDomainObject.State>.ClearAsync() async Task ISnapshotStore<ContentDomainObject.State>.ClearAsync()
{ {
using (Telemetry.Activities.StartMethod<MongoContentRepository>()) using (Telemetry.Activities.StartActivity("MongoContentRepository/ClearAsync"))
{ {
await collectionAll.ClearAsync(); await collectionAll.ClearAsync();
await collectionPublished.ClearAsync(); await collectionPublished.ClearAsync();
@ -47,7 +47,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
async Task ISnapshotStore<ContentDomainObject.State>.RemoveAsync(DomainId key) async Task ISnapshotStore<ContentDomainObject.State>.RemoveAsync(DomainId key)
{ {
using (Telemetry.Activities.StartMethod<MongoContentRepository>()) using (Telemetry.Activities.StartActivity("MongoContentRepository/RemoveAsync"))
{ {
await collectionAll.RemoveAsync(key); await collectionAll.RemoveAsync(key);
await collectionPublished.RemoveAsync(key); await collectionPublished.RemoveAsync(key);
@ -56,7 +56,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
async Task ISnapshotStore<ContentDomainObject.State>.WriteAsync(DomainId key, ContentDomainObject.State value, long oldVersion, long newVersion) async Task ISnapshotStore<ContentDomainObject.State>.WriteAsync(DomainId key, ContentDomainObject.State value, long oldVersion, long newVersion)
{ {
using (Telemetry.Activities.StartMethod<MongoContentRepository>()) using (Telemetry.Activities.StartActivity("MongoContentRepository/WriteAsync"))
{ {
if (value.SchemaId.Id == DomainId.Empty) if (value.SchemaId.Id == DomainId.Empty)
{ {
@ -71,7 +71,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
async Task ISnapshotStore<ContentDomainObject.State>.WriteManyAsync(IEnumerable<(DomainId Key, ContentDomainObject.State Value, long Version)> snapshots) async Task ISnapshotStore<ContentDomainObject.State>.WriteManyAsync(IEnumerable<(DomainId Key, ContentDomainObject.State Value, long Version)> snapshots)
{ {
using (Telemetry.Activities.StartMethod<MongoContentRepository>()) using (Telemetry.Activities.StartActivity("MongoContentRepository/WriteManyAsync"))
{ {
var entitiesPublished = new List<MongoContentEntity>(); var entitiesPublished = new List<MongoContentEntity>();
var entitiesAll = new List<MongoContentEntity>(); var entitiesAll = new List<MongoContentEntity>();

16
backend/src/Squidex.Domain.Apps.Entities/Apps/Indexes/AppsIndex.cs

@ -76,7 +76,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
public async Task<List<IAppEntity>> GetAppsAsync() public async Task<List<IAppEntity>> GetAppsAsync()
{ {
using (Telemetry.Activities.StartMethod<AppsIndex>()) using (Telemetry.Activities.StartActivity("AppProvider/GetAppsAsync"))
{ {
var ids = await GetAppIdsAsync(); var ids = await GetAppIdsAsync();
@ -90,7 +90,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
public async Task<List<IAppEntity>> GetAppsForUserAsync(string userId, PermissionSet permissions) public async Task<List<IAppEntity>> GetAppsForUserAsync(string userId, PermissionSet permissions)
{ {
using (Telemetry.Activities.StartMethod<AppsIndex>()) using (Telemetry.Activities.StartActivity("AppProvider/GetAppsForUserAsync"))
{ {
var ids = var ids =
await Task.WhenAll( await Task.WhenAll(
@ -108,7 +108,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
public async Task<IAppEntity?> GetAppByNameAsync(string name, bool canCache = false) public async Task<IAppEntity?> GetAppByNameAsync(string name, bool canCache = false)
{ {
using (Telemetry.Activities.StartMethod<AppsIndex>()) using (Telemetry.Activities.StartActivity("AppProvider/GetAppByNameAsync"))
{ {
if (canCache) if (canCache)
{ {
@ -131,7 +131,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
public async Task<IAppEntity?> GetAppAsync(DomainId appId, bool canCache) public async Task<IAppEntity?> GetAppAsync(DomainId appId, bool canCache)
{ {
using (Telemetry.Activities.StartMethod<AppsIndex>()) using (Telemetry.Activities.StartActivity("AppProvider/GetAppAsync"))
{ {
if (canCache) if (canCache)
{ {
@ -154,7 +154,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
private async Task<List<DomainId>> GetAppIdsByUserAsync(string userId) private async Task<List<DomainId>> GetAppIdsByUserAsync(string userId)
{ {
using (Telemetry.Activities.StartMethod<AppProvider>()) using (Telemetry.Activities.StartActivity("AppProvider/GetAppIdsByUserAsync"))
{ {
return await grainFactory.GetGrain<IAppsByUserIndexGrain>(userId).GetIdsAsync(); return await grainFactory.GetGrain<IAppsByUserIndexGrain>(userId).GetIdsAsync();
} }
@ -162,7 +162,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
private async Task<List<DomainId>> GetAppIdsAsync() private async Task<List<DomainId>> GetAppIdsAsync()
{ {
using (Telemetry.Activities.StartMethod<AppProvider>()) using (Telemetry.Activities.StartActivity("AppProvider/GetAllAppIdsAsync"))
{ {
return await grainFactory.GetGrain<IAppsByNameIndexGrain>(SingleGrain.Id).GetIdsAsync(); return await grainFactory.GetGrain<IAppsByNameIndexGrain>(SingleGrain.Id).GetIdsAsync();
} }
@ -170,7 +170,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
private async Task<List<DomainId>> GetAppIdsAsync(string[] names) private async Task<List<DomainId>> GetAppIdsAsync(string[] names)
{ {
using (Telemetry.Activities.StartMethod<AppProvider>()) using (Telemetry.Activities.StartActivity("AppProvider/GetAppIdsAsync"))
{ {
return await grainFactory.GetGrain<IAppsByNameIndexGrain>(SingleGrain.Id).GetIdsAsync(names); return await grainFactory.GetGrain<IAppsByNameIndexGrain>(SingleGrain.Id).GetIdsAsync(names);
} }
@ -178,7 +178,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
private async Task<DomainId> GetAppIdAsync(string name) private async Task<DomainId> GetAppIdAsync(string name)
{ {
using (Telemetry.Activities.StartMethod<AppProvider>()) using (Telemetry.Activities.StartActivity("AppProvider/GetAppIdAsync"))
{ {
return await grainFactory.GetGrain<IAppsByNameIndexGrain>(SingleGrain.Id).GetIdAsync(name); return await grainFactory.GetGrain<IAppsByNameIndexGrain>(SingleGrain.Id).GetIdAsync(name);
} }

2
backend/src/Squidex.Domain.Apps.Entities/Assets/Queries/AssetEnricher.cs

@ -47,7 +47,7 @@ namespace Squidex.Domain.Apps.Entities.Assets.Queries
Guard.NotNull(assets, nameof(assets)); Guard.NotNull(assets, nameof(assets));
Guard.NotNull(context, nameof(context)); Guard.NotNull(context, nameof(context));
using (Telemetry.Activities.StartMethod<AssetEnricher>()) using (Telemetry.Activities.StartActivity("ContentQueryService/EnrichAsync"))
{ {
var results = assets.Select(x => SimpleMapper.Map(x, new AssetEntity())).ToList(); var results = assets.Select(x => SimpleMapper.Map(x, new AssetEntity())).ToList();

2
backend/src/Squidex.Domain.Apps.Entities/Assets/Queries/AssetLoader.cs

@ -23,7 +23,7 @@ namespace Squidex.Domain.Apps.Entities.Assets.Queries
public async Task<IAssetEntity?> GetAsync(DomainId appId, DomainId id, long version) public async Task<IAssetEntity?> GetAsync(DomainId appId, DomainId id, long version)
{ {
using (Telemetry.Activities.StartMethod<AssetLoader>()) using (Telemetry.Activities.StartActivity("AssetLoader/GetAsync"))
{ {
var key = DomainId.Combine(appId, id); var key = DomainId.Combine(appId, id);

2
backend/src/Squidex.Domain.Apps.Entities/Assets/Queries/AssetQueryParser.cs

@ -47,7 +47,7 @@ namespace Squidex.Domain.Apps.Entities.Assets.Queries
Guard.NotNull(context, nameof(context)); Guard.NotNull(context, nameof(context));
Guard.NotNull(q, nameof(q)); Guard.NotNull(q, nameof(q));
using (Telemetry.Activities.StartMethod<AssetQueryParser>()) using (Telemetry.Activities.StartActivity("AssetQueryParser/ParseAsync"))
{ {
var query = ParseClrQuery(q); var query = ParseClrQuery(q);

18
backend/src/Squidex.Domain.Apps.Entities/Assets/Queries/AssetQueryService.cs

@ -44,7 +44,7 @@ namespace Squidex.Domain.Apps.Entities.Assets.Queries
public async Task<IReadOnlyList<IAssetFolderEntity>> FindAssetFolderAsync(DomainId appId, DomainId id, public async Task<IReadOnlyList<IAssetFolderEntity>> FindAssetFolderAsync(DomainId appId, DomainId id,
CancellationToken ct = default) CancellationToken ct = default)
{ {
using (Telemetry.Activities.StartMethod<AssetQueryService>()) using (Telemetry.Activities.StartActivity("AssetQueryService/FindAssetFolderAsync"))
{ {
var result = new List<IAssetFolderEntity>(); var result = new List<IAssetFolderEntity>();
@ -70,7 +70,7 @@ namespace Squidex.Domain.Apps.Entities.Assets.Queries
public async Task<IResultList<IAssetFolderEntity>> QueryAssetFoldersAsync(DomainId appId, DomainId parentId, public async Task<IResultList<IAssetFolderEntity>> QueryAssetFoldersAsync(DomainId appId, DomainId parentId,
CancellationToken ct = default) CancellationToken ct = default)
{ {
using (Telemetry.Activities.StartMethod<AssetQueryService>()) using (Telemetry.Activities.StartActivity("AssetQueryService/QueryAssetFoldersAsync"))
{ {
var assetFolders = await QueryFoldersCoreAsync(appId, parentId, ct); var assetFolders = await QueryFoldersCoreAsync(appId, parentId, ct);
@ -81,7 +81,7 @@ namespace Squidex.Domain.Apps.Entities.Assets.Queries
public async Task<IResultList<IAssetFolderEntity>> QueryAssetFoldersAsync(Context context, DomainId parentId, public async Task<IResultList<IAssetFolderEntity>> QueryAssetFoldersAsync(Context context, DomainId parentId,
CancellationToken ct = default) CancellationToken ct = default)
{ {
using (Telemetry.Activities.StartMethod<AssetQueryService>()) using (Telemetry.Activities.StartActivity("AssetQueryService/QueryAssetFoldersAsync"))
{ {
var assetFolders = await QueryFoldersCoreAsync(context, parentId, ct); var assetFolders = await QueryFoldersCoreAsync(context, parentId, ct);
@ -94,7 +94,7 @@ namespace Squidex.Domain.Apps.Entities.Assets.Queries
{ {
Guard.NotNull(context, nameof(context)); Guard.NotNull(context, nameof(context));
using (Telemetry.Activities.StartMethod<AssetQueryService>()) using (Telemetry.Activities.StartActivity("AssetQueryService/FindByHashAsync"))
{ {
var asset = await FindByHashCoreAsync(context, hash, fileName, fileSize, ct); var asset = await FindByHashCoreAsync(context, hash, fileName, fileSize, ct);
@ -112,7 +112,7 @@ namespace Squidex.Domain.Apps.Entities.Assets.Queries
{ {
Guard.NotNull(context, nameof(context)); Guard.NotNull(context, nameof(context));
using (Telemetry.Activities.StartMethod<AssetQueryService>()) using (Telemetry.Activities.StartActivity("AssetQueryService/FindBySlugAsync"))
{ {
var asset = await FindBySlugCoreAsync(context, slug, ct); var asset = await FindBySlugCoreAsync(context, slug, ct);
@ -130,7 +130,7 @@ namespace Squidex.Domain.Apps.Entities.Assets.Queries
{ {
Guard.NotNull(context, nameof(context)); Guard.NotNull(context, nameof(context));
using (Telemetry.Activities.StartMethod<AssetQueryService>()) using (Telemetry.Activities.StartActivity("AssetQueryService/FindGlobalAsync"))
{ {
var asset = await FindCoreAsync(id, ct); var asset = await FindCoreAsync(id, ct);
@ -148,7 +148,7 @@ namespace Squidex.Domain.Apps.Entities.Assets.Queries
{ {
Guard.NotNull(context, nameof(context)); Guard.NotNull(context, nameof(context));
using (Telemetry.Activities.StartMethod<AssetQueryService>()) using (Telemetry.Activities.StartActivity("AssetQueryService/FindAsync"))
{ {
IAssetEntity? asset; IAssetEntity? asset;
@ -180,7 +180,7 @@ namespace Squidex.Domain.Apps.Entities.Assets.Queries
return EmptyAssets; return EmptyAssets;
} }
using (Telemetry.Activities.StartMethod<AssetQueryService>()) using (Telemetry.Activities.StartActivity("AssetQueryService/QueryAsync"))
{ {
q = await queryParser.ParseAsync(context, q); q = await queryParser.ParseAsync(context, q);
@ -214,7 +214,7 @@ namespace Squidex.Domain.Apps.Entities.Assets.Queries
private async Task<IReadOnlyList<IEnrichedAssetEntity>> TransformCoreAsync(Context context, IEnumerable<IAssetEntity> assets, private async Task<IReadOnlyList<IEnrichedAssetEntity>> TransformCoreAsync(Context context, IEnumerable<IAssetEntity> assets,
CancellationToken ct) CancellationToken ct)
{ {
using (Telemetry.Activities.StartMethod<AssetQueryService>()) using (Telemetry.Activities.StartActivity("AssetQueryService/TransformCoreAsync"))
{ {
return await assetEnricher.EnrichAsync(assets, context, ct); return await assetEnricher.EnrichAsync(assets, context, ct);
} }

4
backend/src/Squidex.Domain.Apps.Entities/Backup/RestoreGrain.cs

@ -163,7 +163,7 @@ namespace Squidex.Domain.Apps.Entities.Backup
foreach (var handler in handlers) foreach (var handler in handlers)
{ {
using (Telemetry.Activities.StartMethod(handler.GetType(), nameof(IBackupHandler.RestoreAsync))) using (Telemetry.Activities.StartActivity($"{handler.GetType().Name}/RestoreAsync"))
{ {
await handler.RestoreAsync(runningContext); await handler.RestoreAsync(runningContext);
} }
@ -173,7 +173,7 @@ namespace Squidex.Domain.Apps.Entities.Backup
foreach (var handler in handlers) foreach (var handler in handlers)
{ {
using (Telemetry.Activities.StartMethod(handler.GetType(), nameof(IBackupHandler.CompleteRestoreAsync))) using (Telemetry.Activities.StartActivity($"{handler.GetType().Name}/CompleteRestoreAsync"))
{ {
await handler.CompleteRestoreAsync(runningContext); await handler.CompleteRestoreAsync(runningContext);
} }

1
backend/src/Squidex.Domain.Apps.Entities/Contents/DomainObject/Guards/SecurityExtensions.cs

@ -6,7 +6,6 @@
// ========================================================================== // ==========================================================================
using Squidex.Infrastructure; using Squidex.Infrastructure;
using Squidex.Infrastructure.Security;
using Squidex.Infrastructure.Translations; using Squidex.Infrastructure.Translations;
using Squidex.Shared; using Squidex.Shared;
using Squidex.Shared.Identity; using Squidex.Shared.Identity;

4
backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/ContentEnricher.cs

@ -50,7 +50,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries
private async Task<IReadOnlyList<IEnrichedContentEntity>> EnrichInternalAsync(IEnumerable<IContentEntity> contents, bool cloneData, Context context, private async Task<IReadOnlyList<IEnrichedContentEntity>> EnrichInternalAsync(IEnumerable<IContentEntity> contents, bool cloneData, Context context,
CancellationToken ct) CancellationToken ct)
{ {
using (Telemetry.Activities.StartMethod<ContentEnricher>()) using (Telemetry.Activities.StartActivity("ContentEnricher/EnrichInternalAsync"))
{ {
var results = new List<ContentEntity>(); var results = new List<ContentEntity>();
@ -101,7 +101,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries
{ {
ct.ThrowIfCancellationRequested(); ct.ThrowIfCancellationRequested();
using (Telemetry.Activities.StartMethod(step.ToString()!)) using (Telemetry.Activities.StartActivity(step.ToString()!))
{ {
await step.EnrichAsync(context, results, GetSchema, ct); await step.EnrichAsync(context, results, GetSchema, ct);
} }

2
backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/ContentLoader.cs

@ -23,7 +23,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries
public async Task<IContentEntity?> GetAsync(DomainId appId, DomainId id, long version) public async Task<IContentEntity?> GetAsync(DomainId appId, DomainId id, long version)
{ {
using (Telemetry.Activities.StartMethod<ContentLoader>()) using (Telemetry.Activities.StartActivity("ContentLoader/GetAsync"))
{ {
var key = DomainId.Combine(appId, id).ToString(); var key = DomainId.Combine(appId, id).ToString();

2
backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/ContentQueryParser.cs

@ -58,7 +58,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries
Guard.NotNull(context, nameof(context)); Guard.NotNull(context, nameof(context));
Guard.NotNull(q, nameof(q)); Guard.NotNull(q, nameof(q));
using (Telemetry.Activities.StartMethod<ContentQueryParser>()) using (Telemetry.Activities.StartActivity("ContentQueryParser/ParseAsync"))
{ {
var query = await ParseClrQueryAsync(context, q, schema); var query = await ParseClrQueryAsync(context, q, schema);

9
backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/ContentQueryService.cs

@ -17,7 +17,6 @@ using Squidex.Infrastructure;
using Squidex.Infrastructure.Security; using Squidex.Infrastructure.Security;
using Squidex.Infrastructure.Translations; using Squidex.Infrastructure.Translations;
using Squidex.Shared; using Squidex.Shared;
using Squidex.Shared.Identity;
namespace Squidex.Domain.Apps.Entities.Contents.Queries namespace Squidex.Domain.Apps.Entities.Contents.Queries
{ {
@ -53,7 +52,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries
{ {
Guard.NotNull(context, nameof(context)); Guard.NotNull(context, nameof(context));
using (Telemetry.Activities.StartMethod<ContentQueryService>()) using (Telemetry.Activities.StartActivity("ContentQueryService/FindAsync"))
{ {
var schema = await GetSchemaOrThrowAsync(context, schemaIdOrName); var schema = await GetSchemaOrThrowAsync(context, schemaIdOrName);
@ -87,7 +86,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries
{ {
Guard.NotNull(context, nameof(context)); Guard.NotNull(context, nameof(context));
using (Telemetry.Activities.StartMethod<ContentQueryService>()) using (Telemetry.Activities.StartActivity("ContentQueryService/QueryAsync"))
{ {
if (q == null) if (q == null)
{ {
@ -119,7 +118,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries
{ {
Guard.NotNull(context, nameof(context)); Guard.NotNull(context, nameof(context));
using (Telemetry.Activities.StartMethod<ContentQueryService>()) using (Telemetry.Activities.StartActivity("ContentQueryService/QueryAsync"))
{ {
if (q == null) if (q == null)
{ {
@ -165,7 +164,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries
private async Task<IReadOnlyList<IEnrichedContentEntity>> TransformCoreAsync(Context context, IEnumerable<IContentEntity> contents, private async Task<IReadOnlyList<IEnrichedContentEntity>> TransformCoreAsync(Context context, IEnumerable<IContentEntity> contents,
CancellationToken ct) CancellationToken ct)
{ {
using (Telemetry.Activities.StartMethod<ContentQueryService>()) using (Telemetry.Activities.StartActivity("ContentQueryService/TransformCoreAsync"))
{ {
return await contentEnricher.EnrichAsync(contents, context, ct); return await contentEnricher.EnrichAsync(contents, context, ct);
} }

4
backend/src/Squidex.Domain.Apps.Entities/Rules/Indexes/RulesIndex.cs

@ -32,7 +32,7 @@ namespace Squidex.Domain.Apps.Entities.Rules.Indexes
public async Task<List<IRuleEntity>> GetRulesAsync(DomainId appId) public async Task<List<IRuleEntity>> GetRulesAsync(DomainId appId)
{ {
using (Telemetry.Activities.StartMethod<RulesIndex>()) using (Telemetry.Activities.StartActivity("RulesIndex/GetRulesAsync"))
{ {
var ids = await GetRuleIdsAsync(appId); var ids = await GetRuleIdsAsync(appId);
@ -46,7 +46,7 @@ namespace Squidex.Domain.Apps.Entities.Rules.Indexes
private async Task<List<DomainId>> GetRuleIdsAsync(DomainId appId) private async Task<List<DomainId>> GetRuleIdsAsync(DomainId appId)
{ {
using (Telemetry.Activities.StartMethod<RulesIndex>()) using (Telemetry.Activities.StartActivity("RulesIndex/GetRuleIdsAsync"))
{ {
return await Index(appId).GetIdsAsync(); return await Index(appId).GetIdsAsync();
} }

2
backend/src/Squidex.Domain.Apps.Entities/Rules/Queries/RuleEnricher.cs

@ -41,7 +41,7 @@ namespace Squidex.Domain.Apps.Entities.Rules.Queries
Guard.NotNull(rules, nameof(rules)); Guard.NotNull(rules, nameof(rules));
Guard.NotNull(context, nameof(context)); Guard.NotNull(context, nameof(context));
using (Telemetry.Activities.StartMethod<RuleEnricher>()) using (Telemetry.Activities.StartActivity("RuleEnricher/EnrichAsync"))
{ {
var results = new List<RuleEntity>(); var results = new List<RuleEntity>();

12
backend/src/Squidex.Domain.Apps.Entities/Schemas/Indexes/SchemasIndex.cs

@ -1,4 +1,4 @@
// ========================================================================== // ==========================================================================
// Squidex Headless CMS // Squidex Headless CMS
// ========================================================================== // ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschraenkt) // Copyright (c) Squidex UG (haftungsbeschraenkt)
@ -40,7 +40,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
public async Task<List<ISchemaEntity>> GetSchemasAsync(DomainId appId) public async Task<List<ISchemaEntity>> GetSchemasAsync(DomainId appId)
{ {
using (Telemetry.Activities.StartMethod<SchemasIndex>()) using (Telemetry.Activities.StartActivity("SchemasIndex/GetSchemasAsync"))
{ {
var ids = await GetSchemaIdsAsync(appId); var ids = await GetSchemaIdsAsync(appId);
@ -54,7 +54,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
public async Task<ISchemaEntity?> GetSchemaByNameAsync(DomainId appId, string name, bool canCache) public async Task<ISchemaEntity?> GetSchemaByNameAsync(DomainId appId, string name, bool canCache)
{ {
using (Telemetry.Activities.StartMethod<SchemasIndex>()) using (Telemetry.Activities.StartActivity("SchemasIndex/GetSchemaByNameAsync"))
{ {
var cacheKey = GetCacheKey(appId, name); var cacheKey = GetCacheKey(appId, name);
@ -79,7 +79,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
public async Task<ISchemaEntity?> GetSchemaAsync(DomainId appId, DomainId id, bool canCache) public async Task<ISchemaEntity?> GetSchemaAsync(DomainId appId, DomainId id, bool canCache)
{ {
using (Telemetry.Activities.StartMethod<SchemasIndex>()) using (Telemetry.Activities.StartActivity("SchemasIndex/GetSchemaAsync"))
{ {
var cacheKey = GetCacheKey(appId, id); var cacheKey = GetCacheKey(appId, id);
@ -104,7 +104,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
private async Task<DomainId> GetSchemaIdAsync(DomainId appId, string name) private async Task<DomainId> GetSchemaIdAsync(DomainId appId, string name)
{ {
using (Telemetry.Activities.StartMethod<SchemasIndex>()) using (Telemetry.Activities.StartActivity("SchemasIndex/GetSchemaIdAsync"))
{ {
return await Index(appId).GetIdAsync(name); return await Index(appId).GetIdAsync(name);
} }
@ -112,7 +112,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
private async Task<List<DomainId>> GetSchemaIdsAsync(DomainId appId) private async Task<List<DomainId>> GetSchemaIdsAsync(DomainId appId)
{ {
using (Telemetry.Activities.StartMethod<SchemasIndex>()) using (Telemetry.Activities.StartActivity("SchemasIndex/GetSchemaIdsAsync"))
{ {
return await Index(appId).GetIdsAsync(); return await Index(appId).GetIdsAsync();
} }

6
backend/src/Squidex.Infrastructure.MongoDb/EventSourcing/MongoEventStore_Reader.cs

@ -47,7 +47,7 @@ namespace Squidex.Infrastructure.EventSourcing
return EmptyEvents; return EmptyEvents;
} }
using (Telemetry.Activities.StartMethod<MongoEventStore>()) using (Telemetry.Activities.StartActivity("MongoEventStore/QueryLatestAsync"))
{ {
var commits = var commits =
await Collection.Find( await Collection.Find(
@ -64,7 +64,7 @@ namespace Squidex.Infrastructure.EventSourcing
{ {
Guard.NotNullOrEmpty(streamName, nameof(streamName)); Guard.NotNullOrEmpty(streamName, nameof(streamName));
using (Telemetry.Activities.StartMethod<MongoEventStore>()) using (Telemetry.Activities.StartActivity("MongoEventStore/QueryAsync"))
{ {
var commits = var commits =
await Collection.Find( await Collection.Find(
@ -83,7 +83,7 @@ namespace Squidex.Infrastructure.EventSourcing
{ {
Guard.NotNull(streamNames, nameof(streamNames)); Guard.NotNull(streamNames, nameof(streamNames));
using (Telemetry.Activities.StartMethod<MongoEventStore>()) using (Telemetry.Activities.StartActivity("MongoEventStore/QueryManyAsync"))
{ {
var position = EtagVersion.Empty; var position = EtagVersion.Empty;

4
backend/src/Squidex.Infrastructure.MongoDb/EventSourcing/MongoEventStore_Writer.cs

@ -39,7 +39,7 @@ namespace Squidex.Infrastructure.EventSourcing
Guard.LessThan(events.Count, MaxCommitSize, "events.Count"); Guard.LessThan(events.Count, MaxCommitSize, "events.Count");
Guard.GreaterEquals(expectedVersion, EtagVersion.Any, nameof(expectedVersion)); Guard.GreaterEquals(expectedVersion, EtagVersion.Any, nameof(expectedVersion));
using (Telemetry.Activities.StartMethod<MongoEventStore>()) using (Telemetry.Activities.StartActivity("ContentQueryService/AppendAsync"))
{ {
if (events.Count == 0) if (events.Count == 0)
{ {
@ -101,7 +101,7 @@ namespace Squidex.Infrastructure.EventSourcing
{ {
Guard.NotNull(commits, nameof(commits)); Guard.NotNull(commits, nameof(commits));
using (Telemetry.Activities.StartMethod<MongoEventStore>()) using (Telemetry.Activities.StartActivity("ContentQueryService/AppendUnsafeAsync"))
{ {
var writes = new List<WriteModel<MongoEventCommit>>(); var writes = new List<WriteModel<MongoEventCommit>>();

10
backend/src/Squidex.Infrastructure.MongoDb/States/MongoSnapshotStore.cs

@ -44,7 +44,7 @@ namespace Squidex.Infrastructure.States
public async Task<(T Value, bool Valid, long Version)> ReadAsync(DomainId key) public async Task<(T Value, bool Valid, long Version)> ReadAsync(DomainId key)
{ {
using (Telemetry.Activities.StartMethod<MongoSnapshotStore<T>>()) using (Telemetry.Activities.StartActivity("ContentQueryService/ReadAsync"))
{ {
var existing = var existing =
await Collection.Find(x => x.DocumentId.Equals(key)) await Collection.Find(x => x.DocumentId.Equals(key))
@ -61,7 +61,7 @@ namespace Squidex.Infrastructure.States
public async Task WriteAsync(DomainId key, T value, long oldVersion, long newVersion) public async Task WriteAsync(DomainId key, T value, long oldVersion, long newVersion)
{ {
using (Telemetry.Activities.StartMethod<MongoSnapshotStore<T>>()) using (Telemetry.Activities.StartActivity("ContentQueryService/WriteAsync"))
{ {
await Collection.UpsertVersionedAsync(key, oldVersion, newVersion, u => u.Set(x => x.Doc, value)); await Collection.UpsertVersionedAsync(key, oldVersion, newVersion, u => u.Set(x => x.Doc, value));
} }
@ -69,7 +69,7 @@ namespace Squidex.Infrastructure.States
public Task WriteManyAsync(IEnumerable<(DomainId Key, T Value, long Version)> snapshots) public Task WriteManyAsync(IEnumerable<(DomainId Key, T Value, long Version)> snapshots)
{ {
using (Telemetry.Activities.StartMethod<MongoSnapshotStore<T>>()) using (Telemetry.Activities.StartActivity("ContentQueryService/WriteManyAsync"))
{ {
var writes = snapshots.Select(x => new ReplaceOneModel<MongoState<T>>( var writes = snapshots.Select(x => new ReplaceOneModel<MongoState<T>>(
Filter.Eq(y => y.DocumentId, x.Key), Filter.Eq(y => y.DocumentId, x.Key),
@ -95,7 +95,7 @@ namespace Squidex.Infrastructure.States
public async Task ReadAllAsync(Func<T, long, Task> callback, public async Task ReadAllAsync(Func<T, long, Task> callback,
CancellationToken ct = default) CancellationToken ct = default)
{ {
using (Telemetry.Activities.StartMethod<MongoSnapshotStore<T>>()) using (Telemetry.Activities.StartActivity("ContentQueryService/ReadAllAsync"))
{ {
await Collection.Find(new BsonDocument(), options: Batching.Options).ForEachAsync(x => callback(x.Doc, x.Version), ct); await Collection.Find(new BsonDocument(), options: Batching.Options).ForEachAsync(x => callback(x.Doc, x.Version), ct);
} }
@ -103,7 +103,7 @@ namespace Squidex.Infrastructure.States
public async Task RemoveAsync(DomainId key) public async Task RemoveAsync(DomainId key)
{ {
using (Telemetry.Activities.StartMethod<MongoSnapshotStore<T>>()) using (Telemetry.Activities.StartActivity("ContentQueryService/RemoveAsync"))
{ {
await Collection.DeleteOneAsync(x => x.DocumentId.Equals(key)); await Collection.DeleteOneAsync(x => x.DocumentId.Equals(key));
} }

4
backend/src/Squidex.Infrastructure/Orleans/J{T}.cs

@ -56,7 +56,7 @@ namespace Squidex.Infrastructure.Orleans
[SerializerMethod] [SerializerMethod]
public static void Serialize(object? input, ISerializationContext context, Type? expected) public static void Serialize(object? input, ISerializationContext context, Type? expected)
{ {
using (Telemetry.Activities.StartMethod(nameof(J))) using (Telemetry.Activities.StartActivity("JsonSerializer/Serialize"))
{ {
var jsonSerializer = GetSerializer(context); var jsonSerializer = GetSerializer(context);
@ -69,7 +69,7 @@ namespace Squidex.Infrastructure.Orleans
[DeserializerMethod] [DeserializerMethod]
public static object? Deserialize(Type expected, IDeserializationContext context) public static object? Deserialize(Type expected, IDeserializationContext context)
{ {
using (Telemetry.Activities.StartMethod(nameof(J))) using (Telemetry.Activities.StartActivity("JsonSerializer/Deserialize"))
{ {
var jsonSerializer = GetSerializer(context); var jsonSerializer = GetSerializer(context);

26
backend/src/Squidex.Infrastructure/Telemetry.cs

@ -5,9 +5,7 @@
// All rights reserved. Licensed under the MIT license. // All rights reserved. Licensed under the MIT license.
// ========================================================================== // ==========================================================================
using System;
using System.Diagnostics; using System.Diagnostics;
using System.Runtime.CompilerServices;
namespace Squidex.Infrastructure namespace Squidex.Infrastructure
{ {
@ -15,34 +13,14 @@ namespace Squidex.Infrastructure
{ {
public static readonly ActivitySource Activities = new ActivitySource("Squidex"); public static readonly ActivitySource Activities = new ActivitySource("Squidex");
public static Activity? StartMethod(this ActivitySource activity, Type type, [CallerMemberName] string? memberName = null) public static Activity? StartSubActivity(this ActivitySource activity, string name)
{ {
if (Activity.Current == null) if (Activity.Current == null)
{ {
return null; return null;
} }
return activity.StartActivity($"{type.Name}/{memberName}"); return activity.StartActivity(name);
}
public static Activity? StartMethod<T>(this ActivitySource activity, [CallerMemberName] string? memberName = null)
{
if (Activity.Current == null)
{
return null;
}
return activity.StartActivity($"{typeof(T).Name}/{memberName}");
}
public static Activity? StartMethod(this ActivitySource activity, string objectName, [CallerMemberName] string? memberName = null)
{
if (Activity.Current == null)
{
return null;
}
return activity.StartActivity($"{objectName}/{memberName}");
} }
} }
} }

1
backend/src/Squidex.Web/ETagExtensions.cs

@ -11,7 +11,6 @@ using System.Security.Cryptography;
using System.Text; using System.Text;
using Squidex.Domain.Apps.Entities; using Squidex.Domain.Apps.Entities;
using Squidex.Infrastructure; using Squidex.Infrastructure;
using Squidex.Log;
namespace Squidex.Web namespace Squidex.Web
{ {

1
backend/src/Squidex.Web/Pipeline/ApiCostsFilter.cs

@ -12,7 +12,6 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.AspNetCore.Mvc.Filters;
using Squidex.Domain.Apps.Entities.Apps.Plans; using Squidex.Domain.Apps.Entities.Apps.Plans;
using Squidex.Infrastructure; using Squidex.Infrastructure;
using Squidex.Log;
namespace Squidex.Web.Pipeline namespace Squidex.Web.Pipeline
{ {

1
backend/src/Squidex.Web/Pipeline/CachingManager.cs

@ -18,7 +18,6 @@ using Microsoft.Extensions.Primitives;
using Microsoft.Net.Http.Headers; using Microsoft.Net.Http.Headers;
using Squidex.Infrastructure; using Squidex.Infrastructure;
using Squidex.Infrastructure.Caching; using Squidex.Infrastructure.Caching;
using Squidex.Log;
namespace Squidex.Web.Pipeline namespace Squidex.Web.Pipeline
{ {

1
backend/src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs

@ -20,7 +20,6 @@ using Squidex.Domain.Apps.Entities;
using Squidex.Domain.Apps.Entities.Assets; using Squidex.Domain.Apps.Entities.Assets;
using Squidex.Infrastructure; using Squidex.Infrastructure;
using Squidex.Infrastructure.Commands; using Squidex.Infrastructure.Commands;
using Squidex.Log;
using Squidex.Web; using Squidex.Web;
#pragma warning disable CA2016 // Forward the 'CancellationToken' parameter to methods that take one #pragma warning disable CA2016 // Forward the 'CancellationToken' parameter to methods that take one

6
helm/index.yaml

@ -3,14 +3,14 @@ entries:
squidex: squidex:
- apiVersion: v2 - apiVersion: v2
appVersion: 5.8.0 appVersion: 5.8.0
created: "2021-08-27T10:25:24.213478+02:00" created: "2021-09-13T13:02:07.445459+02:00"
dependencies: dependencies:
- condition: mongodb-replicaset.enabled - condition: mongodb-replicaset.enabled
name: mongodb-replicaset name: mongodb-replicaset
repository: https://kubernetes-charts.storage.googleapis.com/ repository: https://kubernetes-charts.storage.googleapis.com/
version: 3.9.6 version: 3.9.6
description: Squidex CMS description: Squidex CMS
digest: 5361ff43139714e97147eb1e667d2c64bddbec23511b8bed1f264bf2e9758d07 digest: 4837131004d23a1de21eb6d8d8576e6fadad990a49136af061d2c7e43bbaff9d
home: https://squidex.io/ home: https://squidex.io/
keywords: keywords:
- cms - cms
@ -26,4 +26,4 @@ entries:
urls: urls:
- https://squidex.github.io/squidex/helm/squidex-1.0.0.tgz - https://squidex.github.io/squidex/helm/squidex-1.0.0.tgz
version: 1.0.0 version: 1.0.0
generated: "2021-08-27T10:25:24.208859+02:00" generated: "2021-09-13T13:02:07.441734+02:00"

BIN
helm/squidex-1.0.0.tgz

Binary file not shown.
Loading…
Cancel
Save