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); }
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()); }