Example #1
0
        public object GetDetailByType(NoDbRevisionDetail detail, object value)
        {
            if (value == null)
            {
                return(null);
            }

            if (detail.ObjectType == NoDbRevisionType.Table)
            {
                return(ConversionHelper.ConvertTo <NoDbTable>(value));
            }
            if (detail.ObjectType == NoDbRevisionType.Column)
            {
                return(ConversionHelper.ConvertTo <NoDbColumn>(value));
            }
            if (detail.ObjectType == NoDbRevisionType.Index)
            {
                return(ConversionHelper.ConvertTo <NoDbIndex>(value));
            }
            if (detail.ObjectType == NoDbRevisionType.Relation)
            {
                return(ConversionHelper.ConvertTo <NoDbRelation>(value));
            }
            return(value);
        }
Example #2
0
        public string GetRevisionQuery(NoDbRevision revision, NoDbRevisionDetail detail, NoDbConnectionType connectionType)
        {
            var           queryService  = QueryManager.GetNoDbQueryService(connectionType);
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat("-- Action: {0}, Type: {1}\n", detail.Action, detail.ObjectType);
            if (detail.ObjectType == NoDbRevisionType.Table)
            {
                var oldTable = detail.OldValue is NoDbTable ? (NoDbTable)detail.OldValue : ConversionHelper.ConvertTo <NoDbTable>(detail.OldValue);
                var newTable = detail.NewValue is NoDbTable ? (NoDbTable)detail.NewValue : ConversionHelper.ConvertTo <NoDbTable>(detail.NewValue);
                if (detail.Action == NoDbRevisionAction.Removed)
                {
                    stringBuilder.Append(queryService.DropTableQuery(oldTable) + "\n");
                }
                else if (detail.Action == NoDbRevisionAction.Added)
                {
                    stringBuilder.Append(queryService.CreateTableQuery(newTable) + "\n");
                }
            }
            else if (detail.ObjectType == NoDbRevisionType.Column)
            {
                var oldColumn = ConversionHelper.ConvertTo <NoDbColumn>(detail.OldValue);
                var newColumn = ConversionHelper.ConvertTo <NoDbColumn>(detail.NewValue);
                if (detail.Action == NoDbRevisionAction.Removed)
                {
                    stringBuilder.Append(queryService.DropColumnQuery(revision.NewTable, oldColumn) + "\n");
                }
                else if (detail.Action == NoDbRevisionAction.Added)
                {
                    stringBuilder.Append(queryService.AddColumnQuery(revision.NewTable, newColumn) + "\n");
                }
                else if (detail.Action == NoDbRevisionAction.Renamed)
                {
                    stringBuilder.Append(queryService.RenameColumnQuery(revision.NewTable, oldColumn, newColumn) + "\n");
                }
                else if (detail.Action == NoDbRevisionAction.Updated)
                {
                    stringBuilder.Append(queryService.UpdateColumnQuery(revision.NewTable, newColumn) + "\n");
                }
            }
            else if (detail.ObjectType == NoDbRevisionType.Index)
            {
                var oldIndex = ConversionHelper.ConvertTo <NoDbIndex>(detail.OldValue);
                var newIndex = ConversionHelper.ConvertTo <NoDbIndex>(detail.NewValue);
                if (detail.Action == NoDbRevisionAction.Removed)
                {
                    stringBuilder.Append(queryService.DropIndexQuery(revision.NewTable, oldIndex) + "\n");
                }
                else if (detail.Action == NoDbRevisionAction.Added)
                {
                    stringBuilder.Append(queryService.CreateIndexQuery(revision.NewTable, newIndex) + "\n");
                }
                else if (detail.Action == NoDbRevisionAction.Renamed)
                {
                    stringBuilder.Append(queryService.RenameIndexQuery(revision.NewTable, oldIndex, newIndex) + "\n");
                }
                else if (detail.Action == NoDbRevisionAction.Updated)
                {
                    stringBuilder.Append(queryService.DropIndexQuery(revision.NewTable, oldIndex) + "\n");
                    stringBuilder.Append(queryService.CreateIndexQuery(revision.NewTable, newIndex) + "\n");
                }
            }
            else if (detail.ObjectType == NoDbRevisionType.Relation)
            {
                var oldRelation = ConversionHelper.ConvertTo <NoDbRelation>(detail.OldValue);
                var newRelation = ConversionHelper.ConvertTo <NoDbRelation>(detail.NewValue);
                if (detail.Action == NoDbRevisionAction.Removed)
                {
                    stringBuilder.AppendFormat(queryService.DeleteRelationQuery(revision.NewTable, oldRelation) + "\n");
                }
                else if (detail.Action == NoDbRevisionAction.Added)
                {
                    stringBuilder.AppendFormat(queryService.CreateRelationQuery(revision.NewTable, newRelation) + "\n");
                }
                else if (detail.Action == NoDbRevisionAction.Renamed)
                {
                    stringBuilder.AppendFormat(queryService.RenameRelationQuery(revision.NewTable, oldRelation, newRelation) + "\n");
                }
                else if (detail.Action == NoDbRevisionAction.Updated)
                {
                    stringBuilder.AppendFormat(queryService.DeleteRelationQuery(revision.NewTable, oldRelation) + "\n");
                    stringBuilder.AppendFormat(queryService.CreateRelationQuery(revision.NewTable, newRelation) + "\n");
                }
            }
            return(stringBuilder.ToString());
        }