﻿#region license
// Sqloogle
// Copyright 2013-2017 Dale Newman
//  
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//   
//       http://www.apache.org/licenses/LICENSE-2.0
//   
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#endregion
using Sqloogle.Libs.DBDiff.Schema.Model;
using Sqloogle.Libs.DBDiff.Schema.SqlServer2005.Model;

namespace Sqloogle.Libs.DBDiff.Schema.SqlServer2005.Compare
{
    internal class ComparePartitionFunction:CompareBase<PartitionFunction>
    {
        protected override void DoUpdate<Root>(SchemaList<PartitionFunction, Root> CamposOrigen, PartitionFunction node)
        {
            if (!PartitionFunction.Compare(node, CamposOrigen[node.FullName]))
            {
                PartitionFunction newNode = node;//.Clone(CamposOrigen.Parent);
                newNode.Status = Enums.ObjectStatusType.RebuildStatus;
                CamposOrigen[node.FullName] = newNode;
            }
            else
            {
                if (!PartitionFunction.CompareValues(node, CamposOrigen[node.FullName]))
                {
                    PartitionFunction newNode = node.Clone(CamposOrigen.Parent);
                    if (newNode.Values.Count == CamposOrigen[node.FullName].Values.Count)
                        newNode.Status = Enums.ObjectStatusType.RebuildStatus;
                    else
                        newNode.Status = Enums.ObjectStatusType.AlterStatus;
                    newNode.Old = CamposOrigen[node.FullName].Clone(CamposOrigen.Parent);
                    CamposOrigen[node.FullName] = newNode;
                }
            }            
        }
    }
}
