/// <summary> /// Returns list of constraints that should be dropped. /// </summary> /// <param name="oldTable">Original table or null.</param> /// <param name="newTable">New table or null.</param> /// <param name="primaryKey">Determines whether primary keys should be processed or any other constraints should be processed.</param> /// <returns>List of constraints that should be dropped.</returns> private static List <PgConstraint> GetDropConstraints([NullGuard.AllowNull] PgTable oldTable, [NullGuard.AllowNull] PgTable newTable, bool primaryKey) { // todo db Constraints that are depending on a removed field should not be added to drop because they are already removed. var constraints = new List <PgConstraint>(); var renamedConstraints = GetRenameConstraints(oldTable, newTable); if (newTable != null && oldTable != null) { foreach (var oldConstraint in oldTable.Constraints) { // we don't have to drop this constraint because its renamed if (renamedConstraints.ContainsKey(oldConstraint)) { continue; } if (oldConstraint.PrimaryKeyConstraint == primaryKey && (!newTable.ContainsConstraint(oldConstraint.Name) || !newTable.GetConstraint(oldConstraint.Name).Equals(oldConstraint))) { constraints.Add(oldConstraint); } } } return(constraints); }
private static IEnumerable <PgConstraint> GetDropConstraints(PgTable oldTable, PgTable newTable, bool primaryKey) { var list = new List <PgConstraint>(); if (newTable == null || oldTable == null) { return(list); } list.AddRange(oldTable.Constraints .Where(c => c.IsPrimaryKeyConstraint() == primaryKey && (!newTable.ContainsConstraint(c.Name) || !newTable.GetConstraint(c.Name).Equals(c)))); return(list); }
private static List <PgConstraint> GetNewConstraints(PgTable oldTable, PgTable newTable, bool primaryKey) { var list = new List <PgConstraint>(); if (newTable == null) { return(list); } if (oldTable == null) { list.AddRange(newTable.Constraints.Where(c => c.IsPrimaryKeyConstraint() == primaryKey)); } else { list.AddRange(newTable.Constraints .Where(c => c.IsPrimaryKeyConstraint() == primaryKey && (!oldTable.ContainsConstraint(c.Name) || !oldTable.GetConstraint(c.Name).Equals(c)))); } return(list); }
/// <summary> /// Returns list of constraints that should be added. /// </summary> private static List <PgConstraint> GetNewConstraints([NullGuard.AllowNull] PgTable oldTable, [NullGuard.AllowNull] PgTable newTable, bool primaryKey, bool foreignKey) { var constraints = new List <PgConstraint>(); var renamedConstraints = GetRenameConstraints(oldTable, newTable); // no new constraints if (newTable == null) { return(constraints); } if (oldTable == null) { // all constraints are new foreach (var newConstraint in newTable.Constraints) { if (newConstraint.PrimaryKeyConstraint == primaryKey && newConstraint.ForeignKeyConstraint == foreignKey) { constraints.Add(newConstraint); } } } else { foreach (var newConstraint in newTable.Constraints) { if ((newConstraint.PrimaryKeyConstraint == primaryKey && newConstraint.ForeignKeyConstraint == foreignKey) && (!oldTable.ContainsConstraint(newConstraint.Name) || !oldTable.GetConstraint(newConstraint.Name).Equals(newConstraint))) { constraints.Add(newConstraint); } } } return(constraints); }