/// <summary> /// Constructor. /// </summary> public DropStoredProcedure(IDbSetup setup, Type tableTemplate, StoredProcedureFunction function, bool onlyIfExists = false) : base(setup) { var binding = setup.GetTableBinding(tableTemplate); Name = setup.Naming.GetStoredProcedureName(binding.TableName, function); OnlyIfExists = onlyIfExists; }
/// <summary> /// Get parameters selection for a table stored procedure. /// </summary> public static DbColumnsSelection GetTableSpParameters(StoredProcedureFunction spFunc) { switch (spFunc) { case StoredProcedureFunction.Get: case StoredProcedureFunction.Delete: return(DbColumnsSelection.PrimaryKey); case StoredProcedureFunction.Find: return(DbColumnsSelection.UniqueKey); case StoredProcedureFunction.ListAll: return(DbColumnsSelection.None); case StoredProcedureFunction.Insert: return(DbColumnsSelection.NonPrimaryKey); case StoredProcedureFunction.Update: case StoredProcedureFunction.Store: return(DbColumnsSelection.All); default: throw new NotImplementedException(); } }
/// <summary> /// Create a stored procedure. /// </summary> public void CreateStoredProcedure(Type tableTemplate, StoredProcedureFunction spFunc) { switch (spFunc) { case StoredProcedureFunction.Get: new CreateStoredProcedureGet(Setup, tableTemplate).Exec(this); return; case StoredProcedureFunction.Find: new CreateStoredProcedureFind(Setup, tableTemplate).Exec(this); return; case StoredProcedureFunction.ListAll: new CreateStoredProcedureListAll(Setup, tableTemplate).Exec(this); return; case StoredProcedureFunction.Insert: if (!useReadAfterWrite) { new CreateStoredProcedureInsert(Setup, tableTemplate).Exec(this); } else { new CreateStoredProcedureInsertGet(Setup, tableTemplate).Exec(this); } return; case StoredProcedureFunction.Update: if (!useReadAfterWrite) { new CreateStoredProcedureUpdate(Setup, tableTemplate).Exec(this); } else { new CreateStoredProcedureUpdateGet(Setup, tableTemplate).Exec(this); } return; case StoredProcedureFunction.Store: if (!useReadAfterWrite) { new CreateStoredProcedureStore(Setup, tableTemplate).Exec(this); } else { new CreateStoredProcedureStoreGet(Setup, tableTemplate).Exec(this); } return; case StoredProcedureFunction.Delete: new CreateStoredProcedureDelete(Setup, tableTemplate).Exec(this); return; default: break; } throw new NotImplementedException(); }
/// <summary> /// Get default prefix and suffix for a stored procedure function. /// </summary> public static void GetDefaultStoredProcedureAffixes(StoredProcedureFunction spFunc, out string prefix, out string suffix) { switch (spFunc) { case StoredProcedureFunction.Get: prefix = "get"; suffix = string.Empty; break; case StoredProcedureFunction.Find: prefix = "fnd"; suffix = string.Empty; break; case StoredProcedureFunction.ListAll: prefix = "lst"; suffix = string.Empty; break; case StoredProcedureFunction.Insert: prefix = "ins"; suffix = string.Empty; break; case StoredProcedureFunction.Update: prefix = "upd"; suffix = string.Empty; break; case StoredProcedureFunction.Store: prefix = "sto"; suffix = string.Empty; break; case StoredProcedureFunction.Delete: prefix = "del"; suffix = string.Empty; break; default: throw new NotImplementedException($"Stored procedure func {spFunc}"); } }
/// <summary> /// Gets a table stored procedure name. /// </summary> public virtual string GetStoredProcedureName(string tableName, StoredProcedureFunction spFunc) { GetStoredProcedureAffixes(spFunc, out var prefix, out var suffix); string name; switch (StoredProcedureAffix) { case AffixPlacing.Prefix: name = Concat(prefix, suffix, tableName); break; case AffixPlacing.Sufix: name = Concat(tableName, prefix, suffix); break; default: name = Concat(prefix, tableName, suffix); break; } return(TranslateCompoundName(TextSource, Scope, null, name, StoredProceduresCase, false, AffixPlacing.DoNotChange, null)); }
/// <summary> /// Get table stored procedure affixes. /// </summary> protected virtual void GetStoredProcedureAffixes(StoredProcedureFunction spFunc, out string prefix, out string suffix) { DbArchitectureHelper.GetDefaultStoredProcedureAffixes(spFunc, out prefix, out suffix); }
/// <summary> /// Constructor. /// </summary> protected DbCreateStoredProcedureTemplate(IDbSetup setup, Type tableTemplate, StoredProcedureFunction function) : base(setup) { TableTemplate = tableTemplate; Binding = setup.GetTableBinding(tableTemplate); SqlTableName = Binding.GetSqlTableName(); SqlSpName = Binding.GetSqlTableSpName(function); }
/// <summary> /// Drop a stored procedure. /// </summary> public void DropStoredProcedure(Type tableTemplate, StoredProcedureFunction spFunc, bool onlyIfExists = false) { new DropStoredProcedure(Setup, tableTemplate, spFunc, onlyIfExists).Exec(this); }
/// <summary> /// Constructor. /// </summary> protected CreateStoredProcedureInsert(IDbSetup setup, Type tableTemplate, StoredProcedureFunction function) : base(setup, tableTemplate, function) { }
/// <summary> /// Get table stored procedure name as needed to be included in a SQL sentence. /// </summary> public static string GetSqlTableSpName(this IDbTableBinding binding, StoredProcedureFunction spFunc) { var spName = binding.GetTableSpName(spFunc); return(binding.Setup.Naming.GetSqlSpName(spName)); }
/// <summary> /// Get table stored procedure name. /// </summary> public static string GetTableSpName(this IDbTableBinding binding, StoredProcedureFunction spFunc) { return(binding.Setup.Naming.GetStoredProcedureName(binding.TableName, spFunc)); }
/// <summary> /// Set table stored procedure parameters. /// </summary> public static void SetTableSpInputParameters <T>(this IDbTableBinding binding, DbCommand cmd, T instance, StoredProcedureFunction spFunc) { var columns = DbArchitectureHelper.GetTableSpParameters(spFunc); binding.MapColumns(columns, c => c.SetInputParameters(cmd, instance)); }
private static void CreateStoredProcedure(IDbArchitecture db, Type tableTemplate, StoredProcedureFunction function) { Audit.Message($"\n ** Creating table function [{function}] **"); db.DropStoredProcedure(tableTemplate, function, true); if (function == StoredProcedureFunction.Find && db.Setup.GetTableBinding(tableTemplate).SingleColumnUniqueKey == null) { Audit.Message($"\n SKIPPED"); } else { db.CreateStoredProcedure(tableTemplate, function); } }