import { PGlite } from '@electric-sql/pglite'
import { eq } from 'drizzle-orm'
import { drizzle } from 'drizzle-orm/pglite'
import type { TransactionalDatabase } from '@platform-modules/db'
import { apiKeys, apiKeysCreationSql, apiKeysSchema } from './schema.js'

export type TestDb = TransactionalDatabase<typeof apiKeysSchema>

export async function createTestDb(): Promise<TestDb> {
  const client = new PGlite()
  const db = drizzle(client, { schema: apiKeysSchema }) as unknown as TestDb

  await client.exec(apiKeysCreationSql())

  return db
}

export async function getApiKeyRecord(db: TestDb, id: string) {
  const [row] = await db.select().from(apiKeys).where(eq(apiKeys.id, id)).limit(1)
  return row
}
