mirror of
				https://github.com/lingble/twenty.git
				synced 2025-10-31 12:47:58 +00:00 
			
		
		
		
	 736635a94b
			
		
	
	736635a94b
	
	
	
		
			
			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();
 |