private static void SetCreatedBy(SquidexEvent @event, IMongoEntity entity) { if (entity is IEntityWithCreatedBy withCreatedBy) { withCreatedBy.CreatedBy = @event.Actor; } }
private static void SetAppId(IEntity entity, SquidexEvent @event) { if (entity is IUpdateableEntityWithAppRef appEntity && @event is AppEvent appEvent) { appEntity.AppId = appEvent.AppId.Id; } }
private static void SetAppId(SquidexEvent @event, IMongoEntity entity) { if (entity is IAppRefEntity app && @event is AppEvent appEvent) { app.AppId = appEvent.AppId.Id; } }
private static void SetCreatedBy(IEntity entity, SquidexEvent @event) { if (entity is IUpdateableEntityWithCreatedBy withCreatedBy && withCreatedBy.CreatedBy == null) { withCreatedBy.CreatedBy = @event.Actor; } }
private static void SetLastModifiedBy(IEntity entity, SquidexEvent @event) { if (entity is IUpdateableEntityWithLastModifiedBy withModifiedBy) { withModifiedBy.LastModifiedBy = @event.Actor; } }
private static void SetLastModifiedBy(SquidexEvent @event, IMongoEntity entity) { if (entity is IEntityWithLastModifiedBy withModifiedBy) { withModifiedBy.LastModifiedBy = @event.Actor; } }
public static Task CreateAsync <T>(this IMongoCollection <T> collection, SquidexEvent @event, EnvelopeHeaders headers, Action <T> updater) where T : MongoEntity, new() { var entity = EntityMapper.Create <T>(@event, headers); updater(entity); return(collection.InsertOneIfNotExistsAsync(entity)); }
public static T Update <T>(SquidexEvent @event, EnvelopeHeaders headers, T entity) where T : IMongoEntity, new() { SetVersion(headers, entity); SetLastModified(headers, entity); SetLastModifiedBy(@event, entity); return(entity); }
private Task UpdateSchemaAsync(SquidexEvent @event, EnvelopeHeaders headers, Action <MongoSchemaEntity> updater) { return(Collection.UpdateAsync(@event, headers, s => { updater(s); s.IsPublished = s.SchemaDef.IsPublished; })); }
public static T Update <T>(this T entity, SquidexEvent @event, EnvelopeHeaders headers, Action <T> updater = null) where T : IEntity, new() { SetVersion(headers, entity); SetLastModified(headers, entity); SetLastModifiedBy(@event, entity); updater?.Invoke(entity); return(entity); }
public static T Update <T>(this T entity, SquidexEvent @event, EnvelopeHeaders headers, Action <T> updater = null) where T : IEntity { SetId(entity, headers); SetAppId(entity, @event); SetCreated(entity, headers); SetCreatedBy(entity, @event); SetLastModified(entity, headers); SetLastModifiedBy(entity, @event); SetVersion(entity, headers); updater?.Invoke(entity); return(entity); }
public static T Create <T>(SquidexEvent @event, EnvelopeHeaders headers) where T : IMongoEntity, new() { var entity = new T(); SetId(headers, entity); SetVersion(headers, entity); SetCreated(headers, entity); SetCreatedBy(@event, entity); SetAppId(@event, entity); return(Update(@event, headers, entity)); }
public static T Create <T>(SquidexEvent @event, EnvelopeHeaders headers, Action <T> updater = null) where T : IEntity, new() { var entity = new T(); SetId(headers, entity); SetVersion(headers, entity); SetCreated(headers, entity); SetCreatedBy(@event, entity); SetAppId(@event, entity); return(entity.Update(@event, headers, updater)); }
private Task UpdateSchema(SquidexEvent @event, EnvelopeHeaders headers, Func <Schema, Schema> updater) { return(Collection.UpdateAsync(@event, headers, e => UpdateSchema(e, updater))); }
public static async Task UpdateAsync <T>(this IMongoCollection <T> collection, SquidexEvent @event, EnvelopeHeaders headers, Action <T> updater) where T : MongoEntity, new() { var entity = await collection.Find(t => t.Id == headers.AggregateId()).FirstOrDefaultAsync(); if (entity == null) { throw new DomainObjectNotFoundException(headers.AggregateId().ToString(), typeof(T)); } EntityMapper.Update(@event, headers, entity); updater(entity); await collection.ReplaceOneAsync(t => t.Id == entity.Id, entity); }
public static async Task <bool> TryUpdateAsync <T>(this IMongoCollection <T> collection, SquidexEvent @event, EnvelopeHeaders headers, Action <T> updater) where T : class, IEntity, new() { var entity = await collection.Find(t => t.Id == headers.AggregateId()) .FirstOrDefaultAsync(); if (entity != null) { if (entity is IEntityWithVersion withVersion) { var eventVersion = headers.EventStreamNumber(); if (eventVersion <= withVersion.Version) { return(false); } } await collection.UpdateAsync(@event, headers, entity, updater); return(true); } return(false); }
private static async Task UpdateAsync <T>(this IMongoCollection <T> collection, SquidexEvent @event, EnvelopeHeaders headers, T entity, Action <T> updater) where T : class, IEntity, new() { entity.Update(@event, headers, updater); await collection.ReplaceOneAsync(t => t.Id == entity.Id, entity); }
public static async Task CreateAsync <T>(this IMongoCollection <T> collection, SquidexEvent @event, EnvelopeHeaders headers, Func <T, Task> updater) where T : class, IMongoEntity, new() { var entity = EntityMapper.Create <T>(@event, headers); await updater(entity); await collection.InsertOneIfNotExistsAsync(entity); }
public static Task CreateAsync <T>(this IMongoCollection <T> collection, SquidexEvent @event, EnvelopeHeaders headers, Action <T> updater) where T : class, IEntity, new() { var entity = new T().Update(@event, headers, updater); return(collection.InsertOneIfNotExistsAsync(entity)); }