예제 #1
0
 protected Task On(FieldDeleted @event, EnvelopeHeaders headers)
 {
     return(ForSchemaIdAsync(@event.SchemaId.Id, collection =>
     {
         return collection.UpdateManyAsync(new BsonDocument(), Update.Unset(new StringFieldDefinition <MongoContentEntity>($"Data.{@event.FieldId}")));
     }));
 }
예제 #2
0
 public void On(FieldDeleted @event, EnvelopeHeaders headers)
 {
     UpdateSchema(@event, headers, s =>
     {
         s.SchemaDef = s.SchemaDef.Apply(@event);
     });
 }
 protected Task On(FieldDeleted @event, EnvelopeHeaders headers)
 {
     return(UpdateSchemaAsync(@event, headers, s =>
     {
         s.SchemaDef.Apply(@event);
     }));
 }
예제 #4
0
 protected void On(FieldDeleted @event, FieldRegistry registry)
 {
     SchemaDef = SchemaDef.DeleteField(@event.FieldId.Id);
 }
 protected Task On(FieldDeleted @event, EnvelopeHeaders headers)
 {
     return(UpdateSchema(@event, headers, s => SchemaEventDispatcher.Dispatch(@event, s)));
 }
예제 #6
0
 protected void On(FieldDeleted @event)
 {
     SchemaDef = SchemaDef.DeleteField(@event.FieldId.Id, @event.ParentFieldId?.Id);
 }
예제 #7
0
 public static Schema Dispatch(FieldDeleted @event, Schema schema)
 {
     return(schema.DeleteField(@event.FieldId.Id));
 }
예제 #8
0
 protected void On(FieldDeleted @event)
 {
     schema = SchemaEventDispatcher.Dispatch(@event, schema);
 }
예제 #9
0
 protected virtual void OnFieldDeleted(EventArgs e)
 {
     WriteLine(5, "Field Deleted");
     FieldDeleted?.Invoke(this, e);
 }
예제 #10
0
        public void DeleteIndexes()
        {
            var deleteIndexes = new List <IIndexInfo>();

            foreach (var node in Indexes.Values)
            {
                bool used = false;
                foreach (var reverseEdge in node.ReverseEdges)
                {
                    var sourceNode = reverseEdge.Source;
                    foreach (var forwardEdge in sourceNode.Edges)
                    {
                        if (forwardEdge.Target == node && forwardEdge.Traversed)
                        {
                            used = true;
                            break;
                        }
                    }
                    if (used)
                    {
                        break;
                    }
                }
                if (!used)
                {
                    deleteIndexes.Add(node.Index);
                }
            }

            var deleteFields = new List <IFieldInfo>();

            foreach (var node in Fields.Values)
            {
                bool used = false;
                foreach (var reverseEdge in node.ReverseEdges)
                {
                    var sourceNode = reverseEdge.Source;
                    foreach (var forwardEdge in sourceNode.Edges)
                    {
                        if (forwardEdge.Target == node && forwardEdge.Traversed)
                        {
                            used = true;
                            break;
                        }
                    }
                    if (used)
                    {
                        break;
                    }
                }
                if (!used && node.Field.Tag != "%0")
                {
                    deleteFields.Add(node.Field);
                }
            }


            var updateDatabases = new List <IAdlibDatabaseInfo>();

            foreach (var indexInfo in deleteIndexes)
            {
                var databaseInfo = indexInfo.DatabaseInfo;
                using (DatabaseEngine databaseEngine = (DatabaseEngine)OpenDatabase(databaseInfo.PhysicalPath))
                {
                    databaseInfo.IndexList.Remove(indexInfo);
                    databaseEngine.DeleteIndexTable(indexInfo);
                    if (!updateDatabases.Contains(databaseInfo))
                    {
                        updateDatabases.Add(databaseInfo);
                    }
                    IndexDeleted?.Invoke(this, new IndexDeletedEventArgs(indexInfo.TableName));
                }
            }

            foreach (var fieldInfo in deleteFields)
            {
                var databaseInfo = (DatabaseInfo)fieldInfo.DatabaseInfo;
                databaseInfo.Delete(fieldInfo);
                if (!updateDatabases.Contains(databaseInfo))
                {
                    updateDatabases.Add(databaseInfo);
                }
                FieldDeleted?.Invoke(this, new FieldDeletedEventArgs(fieldInfo.Name));
            }

            foreach (var databaseInfo in updateDatabases)
            {
                databaseInfo.Save();
            }
        }
예제 #11
0
 protected void On(FieldDeleted @event)
 {
     schema = schema.Apply(@event);
 }
예제 #12
0
 public static void Apply(this Schema schema, FieldDeleted @event)
 {
     schema.DeleteField(@event.FieldId.Id);
 }
예제 #13
0
 public static Schema Apply(this Schema schema, FieldDeleted @event)
 {
     return(schema.DeleteField(@event.FieldId.Id));
 }