operations.d.ts 1.2 KB

123456789101112131415161718192021222324
  1. import type { AnyColumn, Column } from "./column.js";
  2. import type { SQL } from "./sql/sql.js";
  3. import type { Subquery } from "./subquery.js";
  4. import type { Table } from "./table.js";
  5. export type RequiredKeyOnly<TKey extends string, T extends Column> = T extends AnyColumn<{
  6. notNull: true;
  7. hasDefault: false;
  8. }> ? TKey : never;
  9. export type OptionalKeyOnly<TKey extends string, T extends Column, OverrideT extends boolean | undefined = false> = TKey extends RequiredKeyOnly<TKey, T> ? never : T extends {
  10. _: {
  11. generated: undefined;
  12. };
  13. } ? (T extends {
  14. _: {
  15. identity: undefined;
  16. };
  17. } ? TKey : T['_']['identity'] extends 'always' ? OverrideT extends true ? TKey : never : TKey) : never;
  18. export type SelectedFieldsFlat<TColumn extends Column> = Record<string, TColumn | SQL | SQL.Aliased | Subquery>;
  19. export type SelectedFieldsFlatFull<TColumn extends Column> = Record<string, TColumn | SQL | SQL.Aliased>;
  20. export type SelectedFields<TColumn extends Column, TTable extends Table> = Record<string, SelectedFieldsFlat<TColumn>[string] | TTable | SelectedFieldsFlat<TColumn>>;
  21. export type SelectedFieldsOrdered<TColumn extends Column> = {
  22. path: string[];
  23. field: TColumn | SQL | SQL.Aliased | Subquery;
  24. }[];