public PostgreSQLRepository(PostgreSQLTypeLookup typeLookup, PostgreSQLConstants <T> sqlConstants, EntityUtils entityUtils,
                                    ExpressionUtils expressionUtils, PostgreSQLExecutor sqlExecutor, List <string> updateableFields) : base(typeLookup, sqlConstants, entityUtils,
                                                                                                                                            expressionUtils, sqlExecutor, updateableFields)
        {
            var sb = new StringBuilder();

            for (var i = 0; i < Fields.Length; i++)
            {
                var field = Fields[i];
                sb.Append($"{PostgreSQLConstants.PARAMETER_PRESIGN}{SQLConstants.PARAMETER_PREFIX}{field.Name.GetDelimitedName()},");
            }

            var lastComma = sb.ToString().LastIndexOf(',');

            sb.Remove(lastComma, 1);

            QueryInsert = $"{SQLConstants.SELECT} * {SQLConstants.FROM} {_sqlConstants.ProcedureNameInsert} (:{SQLConstants.UPDATED_BY_PARAMETER_NAME},:{SQLConstants.UID_PARAMETER_NAME},:{SQLConstants.NAME_PARAMETER_NAME},{sb});";
            QueryUpdate = $"{PostgreSQLConstants.CALL} {_sqlConstants.ProcedureNameUpdate} (:{SQLConstants.UPDATED_BY_PARAMETER_NAME},:{_sqlConstants.IdParameterName},:{SQLConstants.NAME_PARAMETER_NAME},{sb});";

            QueryDelete     = $"{PostgreSQLConstants.CALL} {_sqlConstants.ProcedureNameDelete} (:{SQLConstants.UPDATED_BY_PARAMETER_NAME},:{_sqlConstants.IdParameterName});";
            QueryUndoDelete = $"{PostgreSQLConstants.CALL} {_sqlConstants.ProcedureNameUndoDelete} (:{SQLConstants.UPDATED_BY_PARAMETER_NAME},:{_sqlConstants.IdParameterName});";
            QueryHardDelete = $"{PostgreSQLConstants.CALL} {_sqlConstants.ProcedureNameHardDelete} (:{SQLConstants.UPDATED_BY_PARAMETER_NAME},:{_sqlConstants.IdParameterName});";

            QuerySelectById = $"{SQLConstants.SELECT} * {SQLConstants.FROM} {_sqlConstants.ProcedureNameSelectById} (:{_sqlConstants.IdParameterName});";

            QuerySelectRevisions = $"{SQLConstants.SELECT} * {SQLConstants.FROM} {_sqlConstants.ProcedureNameSelectRevisions} (:{_sqlConstants.IdParameterName});";
            QueryRestoreRevision = $"{PostgreSQLConstants.CALL} {_sqlConstants.ProcedureNameRestoreRevision} (:{SQLConstants.UPDATED_BY_PARAMETER_NAME},:{_sqlConstants.IdParameterName},:{SQLConstants.REVISION_PARAMETER_NAME}, null);";
        }
예제 #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);
        }
 public PostgreSQLDbGenerator(TypeLookup typeLookup, EntityUtils entityUtils, PostgreSQLExecutor sqlExecutorMaster,
                              PostgreSQLExecutor sqlExecutor) : base(entityUtils, sqlExecutorMaster, sqlExecutor)
 {
     _typeLookup  = typeLookup;
     _sqlExecutor = sqlExecutor;
     _entityTypes = _entityUtils.GetEntityTypes();
 }
        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();
        }
        private PostgreSQLExecutor GetSQLExecutor(string dbName)
        {
            var typeLookup  = new PostgreSQLTypeLookup();
            var entityUtils = new EntityUtils(typeLookup, GetAssemblyOfEntities());
            var sqlExecutor = new PostgreSQLExecutor(new PostgreSQLConnectionFactory(GetConnectionSettings(dbName)), entityUtils);

            return(sqlExecutor);
        }
        public PostgreSQLExecutor GetSQLExecutor(string dbName)
        {
            var typeLookup  = new PostgreSQLTypeLookup();
            var entityUtils = new EntityUtils(typeLookup, Assembly.GetExecutingAssembly());
            var sqlExecutor = new PostgreSQLExecutor(new PostgreSQLConnectionFactory(GetConnectionSettings(dbName)), entityUtils);

            return(sqlExecutor);
        }
        private async Task <PostgreSQLExecutor> GetSQLExecutor(string dbName)
        {
            var typeLookup         = new PostgreSQLTypeLookup();
            var entityUtils        = new EntityUtils(typeLookup, Assembly.GetExecutingAssembly());
            var connectionSettings = await GetConnectionSettings(dbName);

            var sqlExecutor = new PostgreSQLExecutor(new PostgreSQLConnectionFactory(connectionSettings), entityUtils);

            return(sqlExecutor);
        }
예제 #8
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();
        }
 public OrganizationRepository(PostgreSQLTypeLookup typeLookup, PostgreSQLConstants <Organization> sqlConstants, EntityUtils entityUtils, ExpressionUtils expressionUtils, PostgreSQLExecutor sqlExecutor, List <string> updateableFields) : base(typeLookup, sqlConstants, entityUtils, expressionUtils, sqlExecutor, updateableFields)
 {
 }
예제 #10
0
 public ProjectRepository(PostgreSQLTypeLookup typeLookup, PostgreSQLConstants <Project> sqlConstants, EntityUtils entityUtils,
                          ExpressionUtils expressionUtils, PostgreSQLExecutor sqlExecutor) : base(typeLookup, sqlConstants, entityUtils,
                                                                                                  expressionUtils, sqlExecutor, GetUpdateableFieldsList())
 {
 }