mirror of
https://github.com/twentyhq/twenty.git
synced 2024-12-24 20:42:05 +03:00
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();
|