import dotenv from "dotenv"; import postgres from "postgres"; import {drizzle} from "drizzle-orm/postgres-js"; import {sql} from "drizzle-orm"; import * as InvoicesSchema from "./schema/invoices"; // Load configuration from environment variables. dotenv.config({ path: ".env.test", }); const queryClient = postgres(`postgres://${process.env.POSTGRES_USERNAME}:${process.env.POSTGRES_PASSWORD}@${process.env.POSTGRES_HOST}:${process.env.POSTGRES_PORT}/${process.env.POSTGRES_DATABASE}`); export const database = drizzle(queryClient, { schema: { ...InvoicesSchema, }, }); /** * Initialize database schema for tests. */ export async function initializeDatabase(): Promise { await database.execute(sql` DROP TABLE IF EXISTS invoices; CREATE TABLE invoices( id SERIAL PRIMARY KEY, date TIMESTAMP WITH TIME ZONE, amount NUMERIC(12, 2), client_name VARCHAR, client_address TEXT ); `); } /** * Add default invoices for tests. */ export async function setupDefaultInvoices(): Promise { await database.execute(sql`TRUNCATE invoices RESTART IDENTITY;`); await database.insert(InvoicesSchema.invoices).values([ { date: new Date("1997-10-09"), amount: "5450.12", clientName: "test name", clientAddress: "test test test", }, { date: new Date(), amount: "1122.54", clientName: "another name", clientAddress: "foo bar baz", }, ]); }