예제 #1
0
        /// <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();
            }
        }
예제 #3
0
        /// <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}");
            }
        }
예제 #5
0
        /// <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));
        }
예제 #6
0
 /// <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);
 }
예제 #8
0
 /// <summary>
 /// Drop a stored procedure.
 /// </summary>
 public void DropStoredProcedure(Type tableTemplate, StoredProcedureFunction spFunc, bool onlyIfExists = false)
 {
     new DropStoredProcedure(Setup, tableTemplate, spFunc, onlyIfExists).Exec(this);
 }
예제 #9
0
 /// <summary>
 /// Constructor.
 /// </summary>
 protected CreateStoredProcedureInsert(IDbSetup setup, Type tableTemplate, StoredProcedureFunction function)
     : base(setup, tableTemplate, function)
 {
 }
예제 #10
0
        /// <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));
        }
예제 #11
0
 /// <summary>
 /// Get table stored procedure name.
 /// </summary>
 public static string GetTableSpName(this IDbTableBinding binding, StoredProcedureFunction spFunc)
 {
     return(binding.Setup.Naming.GetStoredProcedureName(binding.TableName, spFunc));
 }
예제 #12
0
        /// <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));
        }
예제 #13
0
        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);
            }
        }