enum.d.ts 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import type { ColumnBuilderBaseConfig } from "../../column-builder.js";
  2. import type { ColumnBaseConfig } from "../../column.js";
  3. import { entityKind } from "../../entity.js";
  4. import type { AnyPgTable } from "../table.js";
  5. import type { NonArray, Writable } from "../../utils.js";
  6. import { PgColumn, PgColumnBuilder } from "./common.js";
  7. export type PgEnumObjectColumnBuilderInitial<TName extends string, TValues extends object> = PgEnumObjectColumnBuilder<{
  8. name: TName;
  9. dataType: 'string';
  10. columnType: 'PgEnumObjectColumn';
  11. data: TValues[keyof TValues];
  12. enumValues: string[];
  13. driverParam: string;
  14. }>;
  15. export interface PgEnumObject<TValues extends object> {
  16. (): PgEnumObjectColumnBuilderInitial<'', TValues>;
  17. <TName extends string>(name: TName): PgEnumObjectColumnBuilderInitial<TName, TValues>;
  18. <TName extends string>(name?: TName): PgEnumObjectColumnBuilderInitial<TName, TValues>;
  19. readonly enumName: string;
  20. readonly enumValues: string[];
  21. readonly schema: string | undefined;
  22. }
  23. export declare class PgEnumObjectColumnBuilder<T extends ColumnBuilderBaseConfig<'string', 'PgEnumObjectColumn'> & {
  24. enumValues: string[];
  25. }> extends PgColumnBuilder<T, {
  26. enum: PgEnumObject<any>;
  27. }> {
  28. static readonly [entityKind]: string;
  29. constructor(name: T['name'], enumInstance: PgEnumObject<any>);
  30. }
  31. export declare class PgEnumObjectColumn<T extends ColumnBaseConfig<'string', 'PgEnumObjectColumn'> & {
  32. enumValues: object;
  33. }> extends PgColumn<T, {
  34. enum: PgEnumObject<object>;
  35. }> {
  36. static readonly [entityKind]: string;
  37. readonly enum: PgEnumObject<any>;
  38. readonly enumValues: string[];
  39. constructor(table: AnyPgTable<{
  40. name: T['tableName'];
  41. }>, config: PgEnumObjectColumnBuilder<T>['config']);
  42. getSQLType(): string;
  43. }
  44. export type PgEnumColumnBuilderInitial<TName extends string, TValues extends [string, ...string[]]> = PgEnumColumnBuilder<{
  45. name: TName;
  46. dataType: 'string';
  47. columnType: 'PgEnumColumn';
  48. data: TValues[number];
  49. enumValues: TValues;
  50. driverParam: string;
  51. }>;
  52. export interface PgEnum<TValues extends [string, ...string[]]> {
  53. (): PgEnumColumnBuilderInitial<'', TValues>;
  54. <TName extends string>(name: TName): PgEnumColumnBuilderInitial<TName, TValues>;
  55. <TName extends string>(name?: TName): PgEnumColumnBuilderInitial<TName, TValues>;
  56. readonly enumName: string;
  57. readonly enumValues: TValues;
  58. readonly schema: string | undefined;
  59. }
  60. export declare function isPgEnum(obj: unknown): obj is PgEnum<[string, ...string[]]>;
  61. export declare class PgEnumColumnBuilder<T extends ColumnBuilderBaseConfig<'string', 'PgEnumColumn'> & {
  62. enumValues: [string, ...string[]];
  63. }> extends PgColumnBuilder<T, {
  64. enum: PgEnum<T['enumValues']>;
  65. }> {
  66. static readonly [entityKind]: string;
  67. constructor(name: T['name'], enumInstance: PgEnum<T['enumValues']>);
  68. }
  69. export declare class PgEnumColumn<T extends ColumnBaseConfig<'string', 'PgEnumColumn'> & {
  70. enumValues: [string, ...string[]];
  71. }> extends PgColumn<T, {
  72. enum: PgEnum<T['enumValues']>;
  73. }> {
  74. static readonly [entityKind]: string;
  75. readonly enum: PgEnum<T["enumValues"]>;
  76. readonly enumValues: T["enumValues"];
  77. constructor(table: AnyPgTable<{
  78. name: T['tableName'];
  79. }>, config: PgEnumColumnBuilder<T>['config']);
  80. getSQLType(): string;
  81. }
  82. export declare function pgEnum<U extends string, T extends Readonly<[U, ...U[]]>>(enumName: string, values: T | Writable<T>): PgEnum<Writable<T>>;
  83. export declare function pgEnum<E extends Record<string, string>>(enumName: string, enumObj: NonArray<E>): PgEnumObject<E>;