using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Linq; using Patcher.DB; namespace Patcher.Data.Command { class RemoveColumnCommand : AbstractColumnCommand { private RemoveColumnCommand(int num, XElement inner) : base(num, inner) { } public static RemoveColumnCommand CreateSpecific(int num, XElement inner) { return new RemoveColumnCommand(num, inner); } public override IEnumerable Apply(Transaction transaction, bool forceIntegrity) { if(!forceIntegrity) { throw new NotImplementedException("Safe stored procedure creation is not implemented yet"); } var options = transaction.GetColumnOptions(column); /*Console.WriteLine(); Console.Write(options.type); if(options.defaultValue != null) { Console.Write(" DEFAULT " + options.defaultValue); } if(options.isNotNull) { Console.Write(" NOT NULL"); } Console.WriteLine(); Console.WriteLine("'" + options.defaultValue + "'");*/ transaction.RemoveColumn(column); return new[] { new XElement("type", options.type), options.defaultValue != null ? new XElement("defaultValue", options.defaultValue) : null, options.isNotNull ? new XElement("isNotNull") : null }; } public override void Rollback(Transaction transaction, XElement commandRollbackInfo) { transaction.CreateColumn( new ColumnDescription( this.column, new ColumnOptions( commandRollbackInfo.Element("type").Value, commandRollbackInfo.Element("defaultValue") != null ? commandRollbackInfo.Element("defaultValue").Value : null, commandRollbackInfo.Element("isNotNull") != null ) ) ); } } }