feat: refactor database connection handling and add legacy map loading functionality
- Updated check-connections.mts to use Prisma with PostgreSQL adapter. - Introduced databaseUrl.ts for resolving database URLs from environment variables. - Added legacyMapLoader.ts to load and parse legacy map data. - Implemented scenarioSeeder.ts to seed scenario data into the database. - Created tests for scenario seeding in scenarioSeeder.test.ts. - Configured Prisma datasource in prisma.config.ts to support dynamic database URLs.
This commit is contained in:
@@ -7,17 +7,19 @@ const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
const DEFAULT_ENV_FILE = path.resolve(__dirname, '..', '..', '.env.ci');
|
||||
const COMMON_PACKAGE_JSON = path.resolve(
|
||||
const INFRA_PACKAGE_JSON = path.resolve(
|
||||
__dirname,
|
||||
'..',
|
||||
'..',
|
||||
'packages',
|
||||
'common',
|
||||
'infra',
|
||||
'package.json'
|
||||
);
|
||||
const commonRequire = createRequire(COMMON_PACKAGE_JSON);
|
||||
const { PrismaClient } = commonRequire('@prisma/client');
|
||||
const { createClient } = commonRequire('redis');
|
||||
const infraRequire = createRequire(INFRA_PACKAGE_JSON);
|
||||
const { PrismaClient } = infraRequire('@prisma/client');
|
||||
const { PrismaPg } = infraRequire('@prisma/adapter-pg');
|
||||
const { Pool } = infraRequire('pg');
|
||||
const { createClient } = infraRequire('redis');
|
||||
|
||||
type EnvMap = Record<string, string | undefined>;
|
||||
|
||||
@@ -84,17 +86,17 @@ const resolveRedisUrl = (env: EnvMap): string => {
|
||||
};
|
||||
|
||||
const testPostgres = async (databaseUrl: string): Promise<void> => {
|
||||
const prisma = new PrismaClient({
|
||||
datasources: {
|
||||
db: {
|
||||
url: databaseUrl,
|
||||
},
|
||||
},
|
||||
});
|
||||
const pool = new Pool({ connectionString: databaseUrl });
|
||||
const adapter = new PrismaPg(pool);
|
||||
const prisma = new PrismaClient({ adapter });
|
||||
|
||||
await prisma.$connect();
|
||||
await prisma.$queryRawUnsafe('SELECT 1');
|
||||
await prisma.$disconnect();
|
||||
try {
|
||||
await prisma.$connect();
|
||||
await prisma.$queryRawUnsafe('SELECT 1');
|
||||
} finally {
|
||||
await prisma.$disconnect();
|
||||
await pool.end();
|
||||
}
|
||||
};
|
||||
|
||||
const testRedis = async (redisUrl: string): Promise<void> => {
|
||||
|
||||
Reference in New Issue
Block a user