I need a way to run a parameterized query as part of a Kysely transaction

Hi all, I am doing a bunch of normal database CRUD in a Kysely transaction. As part of that transaction, I need to perform a database action using a 3rd party library that expects my "database" to expose a query(query : string, params: unknown[]). AFAICT there is no way for me to run a parameterized query with the kysely DB instance? Worst case scenario , I can manually manage the pool/transactions myself and wrap the client in a Kysely object but that certainly would not be ideal...
2 Replies
Tim Lonsdale
Tim LonsdaleOP3d ago
export interface CompiledQuery<O = unknown> {
readonly query: RootOperationNode;
readonly queryId: QueryId;
readonly sql: string;
readonly parameters: ReadonlyArray<unknown>;
}
export interface CompiledQuery<O = unknown> {
readonly query: RootOperationNode;
readonly queryId: QueryId;
readonly sql: string;
readonly parameters: ReadonlyArray<unknown>;
}
Could I create my own compiled query - unsure what I'd set for query/queryId though... I could also do something disgusting where I use regexes or something to split up my paramterized and call sql as if it were a normal function
export class QueueDatabaseWrapper implements DatabaseClient {
private readonly database : Kysely<DB>

constructor(database : Kysely<DB>) {
this.database = database
}

async query(query : string, params: Array<unknown>) {
const parts = query.split(/\$\d+/g)
const templateStrings = Object.assign(parts, { raw: parts })
return await sql(templateStrings, ...params).execute(this.database)
}
}
export class QueueDatabaseWrapper implements DatabaseClient {
private readonly database : Kysely<DB>

constructor(database : Kysely<DB>) {
this.database = database
}

async query(query : string, params: Array<unknown>) {
const parts = query.split(/\$\d+/g)
const templateStrings = Object.assign(parts, { raw: parts })
return await sql(templateStrings, ...params).execute(this.database)
}
}
Is what I've ended up with...
Unknown User
Unknown User3d ago
Message Not Public
Sign In & Join Server To View

Did you find this page helpful?