public void PostgreSQLDbGenerator_Generate()
        {
            var connectionSettings = GetConnectionSettings();

            connectionSettings.DbName += "_" + Guid.NewGuid().ToString("N");

            var typeLookup  = new PostgreSQLTypeLookup();
            var entityUtils = new EntityUtils(typeLookup, typeof(Project).Assembly);

            var masterConnectionString = PostgreSQLConnectionFactory.GetConnectionString(connectionSettings.DbHost, connectionSettings.DbNameMaster, connectionSettings.DbUser,
                                                                                         connectionSettings.DbPassword, connectionSettings.DbPort);
            var masterConnectionFactory = new PostgreSQLConnectionFactory(masterConnectionString);
            var sqlExecutorMaster       = new PostgreSQLExecutor(masterConnectionFactory, entityUtils);

            var connectionString  = PostgreSQLConnectionFactory.GetConnectionString(connectionSettings);
            var connectionFactory = new PostgreSQLConnectionFactory(connectionString);
            var sqlExecutor       = new PostgreSQLExecutor(connectionFactory, entityUtils);

            var dbGenerator = new PostgreSQLDbGenerator(typeLookup, entityUtils, sqlExecutorMaster, sqlExecutor);

            dbGenerator.CreateDb(connectionSettings.DbName);
            dbGenerator.Generate().Wait();

            Assert.True(dbGenerator.IsDbExistsDb(connectionSettings.DbName));

            sqlExecutorMaster.ExecuteSql($@"SELECT Pg_terminate_backend(pg_stat_activity.pid)
                                            FROM   pg_stat_activity
                                            WHERE  pg_stat_activity.datname = '{connectionSettings.DbName}'
                                                   AND pid <> Pg_backend_pid();

                                            DROP DATABASE {connectionSettings.DbName};").Wait();
        }
Exemple #2
0
        public (PostgreSQLTypeLookup, EntityUtils, ConnectionSettings, PostgreSQLExecutor) Generate()
        {
            var connectionSettings = new ConnectionSettings();

            connectionSettings.DbName     = ConfigurationManager.AppSettings["DbName"];
            connectionSettings.DbHost     = ConfigurationManager.AppSettings["DbHost"];
            connectionSettings.DbUser     = ConfigurationManager.AppSettings["DbUser"];
            connectionSettings.DbPassword = ConfigurationManager.AppSettings["DbPass"];
            connectionSettings.DbPort     = ConfigurationManager.AppSettings["DbPort"];

            var typeLookup  = new PostgreSQLTypeLookup();
            var entityUtils = new EntityUtils(typeLookup, Assembly.GetExecutingAssembly());

            var masterConnectionString  = PostgreSQLConnectionFactory.GetConnectionString(connectionSettings.DbHost, connectionSettings.DbNameMaster, connectionSettings.DbUser, connectionSettings.DbPassword, connectionSettings.DbPort);
            var masterConnectionFactory = new PostgreSQLConnectionFactory(masterConnectionString);
            var sqlExecutorMaster       = new PostgreSQLExecutor(masterConnectionFactory, entityUtils);

            var connectionString  = PostgreSQLConnectionFactory.GetConnectionString(connectionSettings);
            var connectionFactory = new PostgreSQLConnectionFactory(connectionString);
            var sqlExecutor       = new PostgreSQLExecutor(connectionFactory, entityUtils);

            var dbGenerator = new PostgreSQLDbGenerator(typeLookup, entityUtils, sqlExecutorMaster, sqlExecutor);

            if (!dbGenerator.IsDbExistsDb(connectionSettings.DbName))
            {
                dbGenerator.CreateDb(connectionSettings.DbName);
                dbGenerator.Generate().Wait();
            }

            return(typeLookup, entityUtils, connectionSettings, sqlExecutor);
        }
Exemple #3
0
        public static void Generate(WindsorContainer container, string webRootPath)
        {
            var connectionSettings = container.Resolve <ConnectionSettings>();
            var adminSettings      = container.Resolve <AdminSettings>();
            var typeLookup         = container.Resolve <PostgreSQLTypeLookup>();
            var entityUtils        = container.Resolve <EntityUtils>();

            var masterConnectionString  = PostgreSQLConnectionFactory.GetConnectionString(connectionSettings.DbHost, connectionSettings.DbNameMaster, connectionSettings.DbUser, connectionSettings.DbPassword, connectionSettings.DbPort);
            var masterConnectionFactory = new PostgreSQLConnectionFactory(masterConnectionString);
            var sqlExecutorMaster       = new PostgreSQLExecutor(masterConnectionFactory, entityUtils);

            var connectionString  = PostgreSQLConnectionFactory.GetConnectionString(connectionSettings);
            var connectionFactory = new PostgreSQLConnectionFactory(connectionString);
            var sqlExecutor       = new PostgreSQLExecutor(connectionFactory, entityUtils);

            var organizationService = container.Resolve <IOrganizationService>();

            var dbGenerator = new PostgreSQLDbGenerator(typeLookup, entityUtils, sqlExecutorMaster, sqlExecutor);

            if (!dbGenerator.IsDbExistsDb(connectionSettings.DbName))
            {
                dbGenerator.CreateDb(connectionSettings.DbName);
                dbGenerator.Generate().Wait();

                var languageRepository = container.Resolve <ILanguageRepository>();
                var languageFactory    = container.Resolve <LanguageFactory>();
                var(turkish, english) = InsertLanguages(languageRepository, languageFactory);

                var organizationRepository = container.Resolve <IOrganizationRepository>();
                var userRepository         = container.Resolve <IUserRepository>();
                var projectRepository      = container.Resolve <IProjectRepository>();
                var organizationId         = InsertAdmin(adminSettings, organizationService, organizationRepository, userRepository, projectRepository);

                var project = projectRepository.Select(x => x.OrganizationId == organizationId).Result;

                var labelService = container.Resolve <ILabelService>();
                InsertLabels(labelService, project, webRootPath);
            }

            organizationService.LoadOrganizationsToCache();
            organizationService.LoadUsersToCache();
        }
        private void EnsureDbGenerated(string dbName)
        {
            var masterExecutor = GetSQLExecutor(POSTGRES_DB_NAME);
            var isDbExist      = masterExecutor.ExecuteSqlReturningValue <bool>($"SELECT true FROM pg_database WHERE datname = '{dbName}';").Result;

            if (!isDbExist)
            {
                masterExecutor.ExecuteSql($"CREATE DATABASE {dbName};").Wait();
            }

            Sleep();

            if (!isDbExist)
            {
                var typeLookup  = new PostgreSQLTypeLookup();
                var entityUtils = new EntityUtils(typeLookup, GetAssemblyOfEntities());
                var executor    = GetSQLExecutor(dbName);
                var dbGenerator = new PostgreSQLDbGenerator(typeLookup, entityUtils, masterExecutor, executor);
                dbGenerator.Generate().Wait();
            }
        }