kysely-mapper
Version:
Flexible Kysely-based utility for mapping between tables and objects
54 lines • 3.35 kB
TypeScript
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