mirror of
				https://github.com/lingble/twenty.git
				synced 2025-11-03 22:27:57 +00:00 
			
		
		
		
	We will remove the `twenty-postgres` image that was used for local development and only use `twenty-postgres-pilo` (which we use in prod), bringing the development environment closer to prod and avoiding having to maintain 2 images. Instead of provisioning the super user after the db initialization, we directly rely on the superuser provided by Spilo for simplicity. We also introduce a change that tries to create the right database (`default` or `test`) based on the context. How to test: ``` docker build -t twentycrm/twenty-postgres-spilo:latest -f ./packages/twenty-docker/twenty-postgres-spilo/Dockerfile . docker images --no-trunc | grep twenty-postgres-spilo postgres-on-docker: docker run \ --name twenty_pg \ -e PGUSER_SUPERUSER=twenty \ -e PGPASSWORD_SUPERUSER=twenty \ -e ALLOW_NOSSL=true \ -v twenty_db_data:/home/postgres/pgdata \ -p 5432:5432 \ REPLACE_WITH_IMAGE_ID ```
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import console from 'console';
 | 
						|
 | 
						|
import { rawDataSource } from 'src/database/typeorm/raw/raw.datasource';
 | 
						|
 | 
						|
import { performQuery } from './utils';
 | 
						|
 | 
						|
async function dropSchemasSequentially() {
 | 
						|
  try {
 | 
						|
    await rawDataSource.initialize();
 | 
						|
 | 
						|
    // Fetch all schemas
 | 
						|
    const schemas = await performQuery(
 | 
						|
      `
 | 
						|
      SELECT n.nspname AS "schema_name"
 | 
						|
      FROM pg_catalog.pg_namespace n
 | 
						|
      WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'
 | 
						|
    `,
 | 
						|
      'Fetching schemas...',
 | 
						|
    );
 | 
						|
 | 
						|
    // Iterate over each schema and drop it
 | 
						|
    // This is to avoid dropping all schemas at once, which would cause an out of shared memory error
 | 
						|
    for (const schema of schemas) {
 | 
						|
      if (
 | 
						|
        schema.schema_name === 'metric_helpers' ||
 | 
						|
        schema.schema_name === 'user_management' ||
 | 
						|
        schema.schema_name === 'public'
 | 
						|
      ) {
 | 
						|
        continue;
 | 
						|
      }
 | 
						|
 | 
						|
      await performQuery(
 | 
						|
        `
 | 
						|
        DROP SCHEMA IF EXISTS "${schema.schema_name}" CASCADE;
 | 
						|
      `,
 | 
						|
        `Dropping schema ${schema.schema_name}...`,
 | 
						|
      );
 | 
						|
    }
 | 
						|
 | 
						|
    console.log('All schemas dropped successfully.');
 | 
						|
  } catch (err) {
 | 
						|
    console.error('Error during schema dropping:', err);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
dropSchemasSequentially();
 |