import type { AnyColumn, Column } from "./column.js"; import type { SQL } from "./sql/sql.js"; import type { Table } from "./table.js"; export type RequiredKeyOnly = T extends AnyColumn<{ notNull: true; hasDefault: false; }> ? TKey : never; export type OptionalKeyOnly = TKey extends RequiredKeyOnly ? never : T extends { _: { generated: undefined; }; } ? (T['_']['identity'] extends 'always' ? OverrideT extends true ? TKey : never : TKey) : never; export type SelectedFieldsFlat = Record; export type SelectedFieldsFlatFull = Record; export type SelectedFields = Record[string] | TTable | SelectedFieldsFlat>; export type SelectedFieldsOrdered = { path: string[]; field: TColumn | SQL | SQL.Aliased; }[];