An alternative to UBB.threads
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
FLocal/Patcher/Data/Command/ChangeStoredProcedureComman...

62 lines
1.8 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Patcher.DB;
namespace Patcher.Data.Command
{
class ChangeStoredProcedureCommand : AbstractStoredProcedureCommand
{
private readonly StoredProcedureBody body;
private ChangeStoredProcedureCommand(int num, XElement inner) : base(num, inner)
{
this.body = new StoredProcedureBody(
inner.Element("declarations") != null ? inner.Element("declarations").Value : "",
inner.Element("body").Value
);
}
public static ChangeStoredProcedureCommand CreateSpecific(int num, XElement inner)
{
return new ChangeStoredProcedureCommand(num, inner);
}
public override IEnumerable<XElement> Apply(Transaction transaction, bool forceIntegrity)
{
if(!forceIntegrity)
{
throw new NotImplementedException("Safe stored procedure change is not implemented yet");
}
StoredProcedureBody oldBody = transaction.GetStoredProcedureBody(this.procedure);
/*Console.WriteLine();
Console.WriteLine("===OLD DECLARATIONS===");
Console.WriteLine(oldBody.declarations);
Console.WriteLine("===OLD BODY===");
Console.WriteLine(oldBody.body);
Console.WriteLine("===END===");*/
transaction.ReplaceStoredProcedureBody(this.procedure, this.body);
return new[]
{
new XElement("oldDeclarations", oldBody.declarations),
new XElement("oldBody", oldBody.body),
};
}
public override void Rollback(Transaction transaction, XElement commandRollbackInfo)
{
transaction.ReplaceStoredProcedureBody(
this.procedure,
new StoredProcedureBody(
commandRollbackInfo.Element("oldDeclarations").Value,
commandRollbackInfo.Element("oldBody").Value
)
);
}
}
}