UNPKG

kysely-mapper

Version:

Flexible Kysely-based utility for mapping between tables and objects

54 lines 3.35 kB
import { Insertable, Selectable, Updateable } from 'kysely'; import { SelectableColumnTuple, SelectedRow, SelectionColumn } from '../lib/type-utils.js'; import { TableMapperTransforms } from './table-mapper-transforms.js'; /** * Transforms for a table mapper that only receives and returns * entire table rows, given by type `Selectable<DB[TB]>`. * @typeParam DB Interface whose fields are table names defining tables. * @typeParam TB Name of the table. * @typeParam KeyColumns Tuple of the names of the table's key columns. * Defaults to `[]`, indicating no key columns. Supports up to 4 columns. * @typeParam InsertReturnColumns Columns to return from the table on insert * queries that return columns. `['*']` returns all columns; `[]` returns * none. May specify aliases. Defaults to `KeyColumns`. * @typeParam UpdateReturnColumns Columns to return from the table on update * queries that return columns. `['*']` returns all columns; `[]` returns * none and is the default. May specify aliases. */ export declare class EntireRowTransforms<DB, TB extends keyof DB & string, KeyColumns extends Readonly<SelectableColumnTuple<DB[TB]>> | Readonly<[]>, InsertReturnColumns extends Readonly<SelectionColumn<DB, TB>[]> | ['*'], UpdateReturnColumns extends Readonly<SelectionColumn<DB, TB>[]> | ['*']> implements Required<TableMapperTransforms<DB, TB, KeyColumns, [ '*' ], Selectable<DB[TB]>, Selectable<DB[TB]>, Selectable<DB[TB]>, number, InsertReturnColumns, UpdateReturnColumns, Selectable<DB[TB]>, Selectable<DB[TB]>>> { readonly keyColumns: KeyColumns; /** * Constructs an object providing transforms for entire table rows. */ constructor(keyColumns: KeyColumns); /** * Transform a count of the number of rows affected into a number. */ countTransform(count: bigint): number; /** * Transforms inserted objects into inserted rows, removing the columns * that are keys having falsy values. */ insertTransform(obj: Selectable<DB[TB]>, _columns: Readonly<(keyof Insertable<DB[TB]>)[]> | ['*']): Insertable<DB[TB]>; /** * Transforms the returns of an insert query into the the object returned * to the caller, merging the returned values into the inserted object. */ insertReturnTransform(source: Selectable<DB[TB]>, returns: InsertReturnColumns extends [] ? never : SelectedRow<DB, TB, InsertReturnColumns extends ['*'] ? never : InsertReturnColumns[number], InsertReturnColumns>): Selectable<DB[TB]>; /** * Returns selected rows to the caller as selected objects, unchanged. */ selectTransform(row: Selectable<DB[TB]>): Selectable<DB[TB]>; /** * Provides updating objects as the update values for an update query. */ updateTransform(source: Selectable<DB[TB]>, _columns: Readonly<(keyof Updateable<DB[TB]>)[]> | ['*']): Updateable<DB[TB]>; /** * Transforms the returns of an update query into the the object returned * to the caller, merging the returned values into the updating object. */ updateReturnTransform(source: Selectable<DB[TB]>, returns: UpdateReturnColumns extends [] ? never : SelectedRow<DB, TB, UpdateReturnColumns extends ['*'] ? never : UpdateReturnColumns[number], UpdateReturnColumns>): Selectable<DB[TB]>; } //# sourceMappingURL=entire-row-transforms.d.ts.map