Add default db schema for seeded workspace (#2061)

* Add default db schema for seeded workspace

* fix

* add if not exists

* add metadata seeds

* use setup-db for e2e

* fix tests
This commit is contained in:
Weiko
2023-10-16 16:59:46 +02:00
committed by GitHub
parent c324a0a4f4
commit 525603227a
4 changed files with 37 additions and 109 deletions

View File

@ -1,41 +0,0 @@
// check-db.ts
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
const schemaDatabaseExists = async (databaseName: string) => {
try {
const result = await prisma.$queryRawUnsafe<[any]>(
`SELECT 1 FROM pg_database WHERE datname = '${databaseName}';`,
);
return result.length > 0;
} catch {
return false;
}
};
const main = async () => {
const databaseName = 'tests';
// Check if schema exists
const databaseExistsResult = await schemaDatabaseExists(databaseName);
if (!databaseExistsResult) {
throw new Error(`Schema ${databaseName} does not exist`);
}
// Check if database is initialized
await prisma.$queryRaw`SELECT 1 FROM pg_tables WHERE tablename='_prisma_migrations';`;
};
main()
.then(() => {
process.exit(0);
})
.catch(() => {
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect();
});

View File

@ -1,56 +0,0 @@
// check-db.ts
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
const createMetadataSchema = async () => {
try {
await prisma.$queryRawUnsafe<[any]>(
`CREATE SCHEMA IF NOT EXISTS "metadata";`,
);
await prisma.$queryRawUnsafe<[any]>(
`GRANT ALL ON SCHEMA metadata TO twenty;`,
);
return true;
} catch {
return false;
}
};
const activateUUIDExtension = async () => {
try {
const result = await prisma.$queryRawUnsafe<[any]>(
`CREATE EXTENSION IF NOT EXISTS "uuid-ossp";`,
);
return result;
} catch {
return false;
}
};
const main = async () => {
const metadataSchemaCreationSuccess = await createMetadataSchema();
const uuidExtensionActivationSuccess = await activateUUIDExtension();
if (!metadataSchemaCreationSuccess) {
throw new Error(`Failed to create metadata schema`);
}
if (!uuidExtensionActivationSuccess) {
throw new Error(`Failed to activate uuid extension`);
}
};
main()
.then(() => {
process.exit(0);
})
.catch(() => {
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect();
});