diff --git a/scripts/seed.ts b/scripts/seed.ts index 7306434..0258701 100644 --- a/scripts/seed.ts +++ b/scripts/seed.ts @@ -1,22 +1,26 @@ import 'dotenv/config'; -import { drizzle } from 'drizzle-orm/neon-serverless'; +import { drizzle } from 'drizzle-orm/neon-serverless'; import { PgTransaction } from 'drizzle-orm/pg-core'; -import * as categories from '../db/seed/categories'; -import * as users from '../db/seed/users'; -import * as wallets from '../db/seed/wallets'; +import * as categories from '../db/seed/categories'; +import * as users from '../db/seed/users'; +import * as wallets from '../db/seed/wallets'; import { DefaultWriter } from '../db/log-writer'; import { DefaultLogger } from 'drizzle-orm/logger'; +import { neonConfig, Pool } from '@neondatabase/serverless'; +import ws from 'ws'; type Seeder = { name: string, seed: (t: PgTransaction) => Promise } const seeders: Seeder[] = [users, categories, wallets]; +neonConfig.webSocketConstructor = global.WebSocket ?? ws; const logger = process.env['NODE_ENV'] === 'development' ? new DefaultLogger({ writer: new DefaultWriter() }) : false -const db = drizzle({ connection: String(process.env['DATABASE_URL']), logger }) - +console.log('db url = ', process.env['DATABASE_URL']) +const db = drizzle(new Pool({ connectionString: String(process.env['DATABASE_URL']) }), { logger }); db.transaction(async t => { for await (const { seed, name } of seeders) { console.log(`Seeding "${name} ⚙️`); await seed(t as unknown as PgTransaction); console.log(`Seeded "${name}" ✅`); } -}).catch(console.error); +}).then(() => db.$client.end()) + .catch(console.error); diff --git a/server/helpers/db.mts b/server/helpers/db.mts index 7f6445c..fddaf32 100644 --- a/server/helpers/db.mts +++ b/server/helpers/db.mts @@ -1,4 +1,4 @@ -import { neonConfig } from '@neondatabase/serverless'; +import { neonConfig, Pool } from '@neondatabase/serverless'; import * as campaigns from '@schemas/campaigns'; import * as categories from '@schemas/categories'; import * as finance from '@schemas/finance'; @@ -9,31 +9,35 @@ import ws from 'ws'; import { DefaultWriter } from '../../db/log-writer'; neonConfig.webSocketConstructor = global.WebSocket ?? ws; -const connection = String(process.env['DATABASE_URL']); const logger = new DefaultLogger({ writer: new DefaultWriter() }); +const pool = new Pool({ + connectionString: String(process.env['DATABASE_URL']), + ssl: true +}) + export function useFinanceDb() { - return drizzle({ - schema: { ...finance }, connection, logger + return drizzle(pool, { + schema: { ...finance }, logger }); } export function useUsersDb() { - return drizzle({ - schema: { ...users }, connection, logger + return drizzle(pool, { + schema: { ...users }, logger }) } export function useCategoriesDb() { - return drizzle({ - schema: { ...categories }, connection, logger + return drizzle(pool, { + schema: { ...categories }, logger }) } export function useCampaignsDb() { - return drizzle({ - schema: { ...campaigns }, connection, logger + return drizzle(pool, { + schema: { ...campaigns }, logger }); }