/// <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);
 }
Пример #2
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;
        }
Пример #3
0
        /// <summary>
        /// Checks for migratable data
        /// </summary>
        /// <param name="cancellationToken">Cancellation Token</param>
        /// <returns>Task for the async task</returns>
        public async Task StartAsync(CancellationToken cancellationToken)
        {
            using (IServiceScope serviceScope = _serviceScopeFactory.CreateScope())
            {
                IUserDbAccess userDbAccess = (IUserDbAccess)serviceScope.ServiceProvider.GetService(typeof(IUserDbAccess));
                IDbSetup      dbSetup      = (IDbSetup)serviceScope.ServiceProvider.GetService(typeof(IDbSetup));
                ILogger       logger       = (ILogger)serviceScope.ServiceProvider.GetService(typeof(ILogger <AutoDataMigrator>));

                try
                {
                    await RemoveUnusedRolesForUsers(userDbAccess);
                }
                catch (Exception ex)
                {
                    logger.LogError(ex, "Could not remove old user roles");
                }

                try
                {
                    await dbSetup.CheckForNeededMigrations();
                }
                catch (Exception ex)
                {
                    logger.LogError(ex, "Could not migrate database");
                }
            }
        }
Пример #4
0
        internal DbCommandBinding(Type templateType, IDbSetup setup)
            : base(templateType, setup)
        {
            Mode = DbExecutionMode.NonQuery;

            var qattr = TypeHelper.TryGetAttribute <DbQueryAttribute>(templateType, true);
            var sattr = TypeHelper.TryGetAttribute <DbStoredProcedureAttribute>(templateType, true);

            if ((qattr != null ? 1 : 0) + (sattr != null ? 1 : 0) > 1)
            {
                throw new ArgumentException($"Multiple template definition in class [{templateType.FullName}]");
            }

            if (qattr != null)
            {
                Text        = qattr.QueryText;
                CommandType = CommandType.Text;
            }

            if (sattr != null)
            {
                Text        = setup.Naming.GetStoredProcedureName(templateType, sattr.StoredProcedureName);
                CommandType = CommandType.StoredProcedure;
            }

            AddProperties();
        }
Пример #5
0
        /// <summary>
        /// Configures the database
        /// </summary>
        /// <returns>Task</returns>
        private static async Task ConfigureDb()
        {
            do
            {
                string connectionString = MessageService.GetMongoDbConnectionString();
                AppSettingUpdater.AddOrUpdateAppSetting((config) => config.MongoDb.ConnectionString = connectionString);
                string databaseName = MessageService.GetMongoDbDatabasename();
                AppSettingUpdater.AddOrUpdateAppSetting((config) => config.MongoDb.DbName = databaseName);

                MessageService.PrintVerifyingDatabase();
                try
                {
                    ServiceProvider serviceProvider = ServiceProviderBuilder.BuildServiceProvider();
                    IDbSetup        dbSetup         = serviceProvider.GetService <IDbSetup>();
                    await dbSetup.SetupDatabaseAsync();

                    MessageService.PrintSuccessVerifyingDatabase();
                    break;
                }
                catch (Exception ex)
                {
                    MessageService.PrintErrorVerifyingDatabase(ex);
                }
            }while(true);
        }
Пример #6
0
        protected DbPropertyBinding(IDbSetup setup, PropertyInfo propInfo, TA attr, bool getterRequired, bool setterRequired)
            : base(propInfo, attr, getterRequired, setterRequired)
        {
            this.Setup = setup;

            PrimaryTableTemplate = DbHelper.GetForeignKeyPropType(PropertyInfo.PropertyType);
            IsForeignKeyProp     = PrimaryTableTemplate != null;
            GetKeyConstraints(attr);
        }
Пример #7
0
        public DbParameterBinding(IDbSetup setup, PropertyInfo propInfo, DbParameterAttribute attr)
            : base(setup, propInfo, attr, attr.IsInput, attr.IsOutput)
        {
            SpParamName = setup.Naming.GetParameterName(propInfo, null, Attributes.ParameterName, attr.DoNotTranslate, KeyConstraint);

            if (string.IsNullOrEmpty(SpParamName))
            {
                throw new ArgumentException($"Null parameter name in DbParameterBinding at class [{propInfo.DeclaringType.Namespace}.{propInfo.DeclaringType.Name}]");
            }
        }
Пример #8
0
        public DbFieldBinding(IDbSetup setup, PropertyInfo propInfo, DbFieldAttribute attr)
            : base(setup, propInfo, attr, false, true)
        {
            FieldName = setup.Naming.GetFieldName(propInfo, Attributes.DbName, KeyConstraint);

            if (string.IsNullOrEmpty(FieldName))
            {
                throw new ArgumentException($"Null field name in DbFieldBinding at class [{propInfo.DeclaringType.Namespace}.{propInfo.DeclaringType.Name}]");
            }
        }
Пример #9
0
        /// <summary>
        /// Get the primary key type.
        /// </summary>
        public static Type GetPrimaryKeyType(IDbSetup setup, Type tableType, bool?isNullableForced, out Type columnType)
        {
            var col = GetPrimaryKeyColumn(setup, tableType);

            columnType = col.ColumnType;
            if (col.IsNullable || isNullableForced == true)
            {
                columnType = typeof(Nullable <>).MakeGenericType(columnType);
            }

            return(typeof(DbForeignKey <,>).MakeGenericType(tableType, columnType));
        }
Пример #10
0
        /// <summary>
        /// Get the primary key column type.
        /// </summary>
        public static IDbColumnBinding GetPrimaryKeyColumn(IDbSetup setup, Type tableType)
        {
            var binding = setup.GetTableBinding(tableType);
            var col     = binding?.SingleColumnPrimaryKey;

            if (col == null)
            {
                throw new ArgumentException($"Unknown type/foreign key for [{tableType.Name}]");
            }

            return(col);
        }
Пример #11
0
        /// <summary>
        /// Constructor.
        /// </summary>
        public CreateTable(IDbSetup setup, Type tableTemplate) : base(setup)
        {
            var tableAttr = TypeHelper.TryGetAttribute <MySqlTableAttribute>(tableTemplate, true);

            Engine         = (tableAttr?.Engine ?? Custom.MySql.Engine.InnoDb).ToString();
            DefaultCharset = (tableAttr?.DefaultCharset ?? DefaultKey);

            var bindings = setup.GetTableBinding(tableTemplate);

            TableName        = bindings.TableName;
            ColumnDefinition = GetColumnDefinition(bindings.Columns);
            TableConstraints = GetTableConstraints(bindings);
        }
Пример #12
0
 public SetupManager(
     IApplicationEnvironment appEnv,
     ILogger <SetupManager> logger,
     IOptions <SetupOptions> setupOptionsAccessor,
     IDbSetup dbImplementation,
     IVersionProviderFactory versionProviderFactory,
     SiteManager siteManager)
 {
     appBasePath      = appEnv.ApplicationBasePath;
     this.siteManager = siteManager;
     log = logger;
     db  = dbImplementation;
     this.versionProviderFactory = versionProviderFactory;
     setupOptions = setupOptionsAccessor.Value;
 }
Пример #13
0
 public SetupManager(
     IApplicationEnvironment appEnv,
     IHttpContextAccessor contextAccessor,
     ILogger <SetupManager> logger,
     IOptions <SetupOptions> setupOptionsAccessor,
     IDbSetup dbImplementation,
     IVersionProviderFactory versionProviderFactory
     )
 {
     appBasePath = appEnv.ApplicationBasePath;
     log         = logger;
     db          = dbImplementation;
     this.versionProviderFactory = versionProviderFactory;
     setupOptions = setupOptionsAccessor.Value;
     _context     = contextAccessor?.HttpContext;
 }
Пример #14
0
 public SetupManager(
     IApplicationEnvironment appEnv,
     IHttpContextAccessor contextAccessor,
     ILogger<SetupManager> logger,
     IOptions<SetupOptions> setupOptionsAccessor,
     IDbSetup dbImplementation,
     IVersionProviderFactory versionProviderFactory
     )
 {
     appBasePath = appEnv.ApplicationBasePath;
     log = logger;
     db = dbImplementation;
     this.versionProviderFactory = versionProviderFactory;
     setupOptions = setupOptionsAccessor.Value;
     _context = contextAccessor?.HttpContext;
 }
Пример #15
0
 public UserService(
     string encryptionKey,
     string salt,
     IDbSetup dbSetup,
     IUserRepository userRepository,
     IUserIdRepository userIdRepository,
     IUserNameRepository userNameRepository,
     IEmailService emailService,
     IAuthenticationService authenticationService) : base(encryptionKey, salt)
 {
     _dbSetup               = dbSetup;
     _userRepository        = userRepository;
     _userIdRepository      = userIdRepository;
     _userNameRepository    = userNameRepository;
     _emailService          = emailService;
     _authenticationService = authenticationService;
 }
Пример #16
0
        internal DbTableBinding(Type templateType, IDbSetup setup)
            : base(templateType, setup)
        {
            var tattr = TypeHelper.TryGetAttribute <DbTableAttribute>(templateType, true);

            if (tattr != null)
            {
                TableName = setup.Naming.GetTableName(templateType, tattr.TableName);
            }

            PrimaryKey  = TypeHelper.TryGetAttribute <IDbTablePrimaryKeyAttribute>(templateType, true);
            foreignKeys = TypeHelper.GetAttributes <IDbTableForeignKeyAttribute>(templateType, true).ToList();
            uniqueKeys  = TypeHelper.GetAttributes <IDbTableUniqueKeyAttribute>(templateType, true).ToList();
            indexes     = TypeHelper.GetAttributes <IDbTableIndexAttribute>(templateType, true).ToList();

            AddColumns();
        }
Пример #17
0
 /// <summary>
 /// Constructor.
 /// </summary>
 protected CreateStoredProcedureInsert(IDbSetup setup, Type tableTemplate, StoredProcedureFunction function)
     : base(setup, tableTemplate, function)
 {
 }
Пример #18
0
 public MySqlArchitecture(IDbSetup setup, string connectionString, bool useReadAfterWrite = true)
     : base(setup, connectionString)
 {
     this.useReadAfterWrite = useReadAfterWrite;
 }
Пример #19
0
        /// <summary>
        /// Translates a foreign key column type.
        /// </summary>
        public static Type TranslateForeignKeyType(IDbSetup setup, ref Type columnType, bool?isNullableForced)
        {
            var primaryTable = GetForeignKeyPropType(columnType);

            return(primaryTable != null?GetPrimaryKeyType(setup, primaryTable, isNullableForced, out columnType) : null);
        }
Пример #20
0
 /// <summary>
 /// Constructor.
 /// </summary>
 protected DbCommands(IDbSetup setup)
 {
     Setup = setup;
 }
Пример #21
0
 protected DbDataAccess(IDbSetup setup, string connectionString) : base(setup, connectionString)
 {
 }
Пример #22
0
 /// <summary>
 /// Constructor
 /// </summary>
 public AdministrationController(IDbSetup dbSetup)
 {
     _DbSetup = dbSetup;
 }
Пример #23
0
 protected DbTemplateBinding(Type templateType, IDbSetup setup)
 {
     TemplateType = templateType;
     Setup        = setup;
 }
Пример #24
0
 /// <summary>
 /// Constructor.
 /// </summary>
 public CreateStoredProcedureUpdateGet(IDbSetup setup, Type tableTemplate)
     : base(setup, tableTemplate, StoredProcedureFunction.Update)
 {
 }
Пример #25
0
 public DbTemplate(IDbSetup setup)
 {
     Setup = setup;
 }
Пример #26
0
 /// <summary>
 /// Constructor.
 /// </summary>
 public CreateStoredProcedureInsert(IDbSetup setup, Type tableTemplate)
     : base(setup, tableTemplate, StoredProcedureFunction.Insert)
 {
 }
Пример #27
0
 public DbRecordsetBinding(IDbSetup setup, PropertyInfo propInfo, DbRecordsetAttribute attr)
     : base(setup, propInfo, attr, false, true)
 {
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 public CreateStoredProcedureListAll(IDbSetup setup, Type tableTemplate)
     : base(setup, tableTemplate, StoredProcedureFunction.ListAll)
 {
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 public CreateStoredProcedureFind(IDbSetup setup, Type tableTemplate)
     : base(setup, tableTemplate, StoredProcedureFunction.Find)
 {
 }
Пример #30
0
 /// <summary>
 /// Creates an instance of a column binding.
 /// </summary>
 public static IDbColumnBinding CreateInstance(IDbSetup setup, PropertyInfo propInfo, DbColumnAttribute attr, IDbTableBinding table)
 {
     return(TypeHelper.CreateInstance(typeof(DbColumnBinding <,>), new[] { propInfo.DeclaringType, propInfo.PropertyType }, setup, propInfo, attr, table) as IDbColumnBinding);
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 public CreateStoredProcedureDelete(IDbSetup setup, Type tableTemplate)
     : base(setup, tableTemplate, StoredProcedureFunction.Delete)
 {
 }