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(); }
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); }
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(); } }