kysely-mapper
Version:
Flexible Kysely-based utility for mapping between tables and objects
37 lines • 2.42 kB
TypeScript
import { Kysely, InsertQueryBuilder, Insertable } from 'kysely';
import { SelectionColumn } from '../lib/type-utils.js';
import { CompilingValuesQuery } from './compiling-values-query.js';
import { InsertTransforms } from '../mappers/table-mapper-transforms.js';
/**
* Compiling mapping query for inserting rows into a database table.
*/
export declare class CompilingMappingInsertQuery<DB, TB extends keyof DB & string, QB extends InsertQueryBuilder<DB, TB, any>, InsertedObject, InsertReturnColumns extends Readonly<SelectionColumn<DB, TB>[]> | ['*'], InsertReturn> extends CompilingValuesQuery<DB, TB, QB, InsertReturnColumns, {}, Insertable<DB[TB]>> {
protected readonly columnsToInsert: Readonly<(keyof Insertable<DB[TB]> & string)[]>;
protected readonly transforms: Readonly<InsertTransforms<DB, TB, InsertedObject, InsertReturnColumns, InsertReturn>>;
constructor(db: Kysely<DB>, qb: QB, columnsToInsert: Readonly<(keyof Insertable<DB[TB]> & string)[]>, transforms: Readonly<InsertTransforms<DB, TB, InsertedObject, InsertReturnColumns, InsertReturn>>, returnColumns: Readonly<InsertReturnColumns>);
/**
* Inserts the provided object into the table as a row, first transforming
* it into a row via `insertTransform` (if defined). Also retrieves the
* columns specified in `returnColumns`, returning them to the caller as
* `InsertReturn`, after transformation by `insertReturnTransform`.
* If `returnColumns` is empty, returns `undefined`.
*
* On the first execution, compiles and discards the underlying Kysely
* query builder. Subsequent executions reuse the compiled query.
* @returns If `returnColumns` is not empty, returns an object;
* otherwise returns `undefined`.
*/
returnOne(obj: InsertedObject): Promise<InsertReturnColumns extends [] ? void : InsertReturn>;
/**
* Runs the query, inserting rows into the table without returning any
* columns.
*
* On the first execution, compiles and discards the underlying Kysely
* query builder. Subsequent executions reuse the compiled query.
* @param objOrObjs The object or objects to be inserted.
* @returns Returns `true`; throws an exception on error.
*/
run(obj: InsertedObject): Promise<boolean>;
protected applyInsertTransform(obj: InsertedObject): Insertable<DB[TB]>;
}
//# sourceMappingURL=compiling-insert-query.d.ts.map