import type { AnyObject, DBSchema, TableHandler } from "prostgles-types"; import type { TX } from "../DboBuilder/DboBuilderTypes"; import type { PublishAllOrNothing, PublishTableRule } from "../PublishParser/PublishParser"; import { type PublishObject } from "../PublishParser/PublishParser"; export type ServerTableHandler< T extends AnyObject = AnyObject, Schema extends DBSchema | void = void, > = TableHandler & { is_view: false }; export type DBTableHandlersFromSchema = Schema extends DBSchema ? { [tov_name in keyof Schema]: ServerTableHandler; } : Record>; export type DBHandlerServerWithTx< TH = Record>, WithTransactions = true, > = WithTransactions extends true ? { tx: TX } : Record; export type DBOFullyTyped< Schema = void, WithTransactions = true, > = DBTableHandlersFromSchema & DBHandlerServerWithTx, WithTransactions>; export type PublishFullyTyped = Schema extends DBSchema ? { [tov_name in keyof Partial]: | PublishAllOrNothing | PublishTableRule; } : PublishObject;