Correct Client type to pass drizzle client around

Hey community,
I love drizzle but sometimes I find it quite challenging to deal with the types. I am not sure if this problem is a skill issue, thus I wanna ask you guys. Let me explain:
I am using Nest.js and I have DatabaseService file that create the drizzle client internally and exposes it. I want this service to be dynamic which means I want to be able to pass the schema to it and the type of the client should be infered automagically. But I am struggling to properly type it:

This is the relevant definitions of my types in the DatabaseService regarding the drizzle client:

type DB<TSchema extends Record<string, unknown>> = PgDatabase<NodePgQueryResultHKT, TSchema> & {
    $client: NodePgClient;
};
export declare class DatabaseService<T extends Record<string, unknown>> {
    private readonly _client;
    client: DB<T>;
    get db(): DB<T>;
}


The underlying schema that I am importing is:
export const offerSkills = pgTable("offer_skills", {
    id: uuid().defaultRandom().primaryKey().notNull(),
    offerId: uuid().notNull(),
    skillId: uuid().notNull(),
    mandatory: boolean("mandatory"),
    createdAt: timestamp("created_at", { mode: 'string' }).defaultNow().notNull(),
    updatedAt: timestamp("updated_at", { mode: 'string' }).defaultNow().notNull(),
})
Was this page helpful?