text.d.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import type { ColumnBuilderBaseConfig } from "../../column-builder.js";
  2. import type { ColumnBaseConfig } from "../../column.js";
  3. import { entityKind } from "../../entity.js";
  4. import type { AnySQLiteTable } from "../table.js";
  5. import { type Equal, type Writable } from "../../utils.js";
  6. import { SQLiteColumn, SQLiteColumnBuilder } from "./common.js";
  7. export type SQLiteTextBuilderInitial<TName extends string, TEnum extends [string, ...string[]], TLength extends number | undefined> = SQLiteTextBuilder<{
  8. name: TName;
  9. dataType: 'string';
  10. columnType: 'SQLiteText';
  11. data: TEnum[number];
  12. driverParam: string;
  13. enumValues: TEnum;
  14. length: TLength;
  15. }>;
  16. export declare class SQLiteTextBuilder<T extends ColumnBuilderBaseConfig<'string', 'SQLiteText'> & {
  17. length?: number | undefined;
  18. }> extends SQLiteColumnBuilder<T, {
  19. length: T['length'];
  20. enumValues: T['enumValues'];
  21. }, {
  22. length: T['length'];
  23. }> {
  24. static readonly [entityKind]: string;
  25. constructor(name: T['name'], config: SQLiteTextConfig<'text', T['enumValues'], T['length']>);
  26. }
  27. export declare class SQLiteText<T extends ColumnBaseConfig<'string', 'SQLiteText'> & {
  28. length?: number | undefined;
  29. }> extends SQLiteColumn<T, {
  30. length: T['length'];
  31. enumValues: T['enumValues'];
  32. }> {
  33. static readonly [entityKind]: string;
  34. readonly enumValues: T["enumValues"];
  35. readonly length: T['length'];
  36. constructor(table: AnySQLiteTable<{
  37. name: T['tableName'];
  38. }>, config: SQLiteTextBuilder<T>['config']);
  39. getSQLType(): string;
  40. }
  41. export type SQLiteTextJsonBuilderInitial<TName extends string> = SQLiteTextJsonBuilder<{
  42. name: TName;
  43. dataType: 'json';
  44. columnType: 'SQLiteTextJson';
  45. data: unknown;
  46. driverParam: string;
  47. enumValues: undefined;
  48. generated: undefined;
  49. }>;
  50. export declare class SQLiteTextJsonBuilder<T extends ColumnBuilderBaseConfig<'json', 'SQLiteTextJson'>> extends SQLiteColumnBuilder<T> {
  51. static readonly [entityKind]: string;
  52. constructor(name: T['name']);
  53. }
  54. export declare class SQLiteTextJson<T extends ColumnBaseConfig<'json', 'SQLiteTextJson'>> extends SQLiteColumn<T, {
  55. length: number | undefined;
  56. enumValues: T['enumValues'];
  57. }> {
  58. static readonly [entityKind]: string;
  59. getSQLType(): string;
  60. mapFromDriverValue(value: string): T['data'];
  61. mapToDriverValue(value: T['data']): string;
  62. }
  63. export type SQLiteTextConfig<TMode extends 'text' | 'json' = 'text' | 'json', TEnum extends readonly string[] | string[] | undefined = readonly string[] | string[] | undefined, TLength extends number | undefined = number | undefined> = TMode extends 'text' ? {
  64. mode?: TMode;
  65. length?: TLength;
  66. enum?: TEnum;
  67. } : {
  68. mode?: TMode;
  69. };
  70. export declare function text(): SQLiteTextBuilderInitial<'', [string, ...string[]], undefined>;
  71. export declare function text<U extends string, T extends Readonly<[U, ...U[]]>, L extends number | undefined, TMode extends 'text' | 'json' = 'text' | 'json'>(config?: SQLiteTextConfig<TMode, T | Writable<T>, L>): Equal<TMode, 'json'> extends true ? SQLiteTextJsonBuilderInitial<''> : SQLiteTextBuilderInitial<'', Writable<T>, L>;
  72. export declare function text<TName extends string, U extends string, T extends Readonly<[U, ...U[]]>, L extends number | undefined, TMode extends 'text' | 'json' = 'text' | 'json'>(name: TName, config?: SQLiteTextConfig<TMode, T | Writable<T>, L>): Equal<TMode, 'json'> extends true ? SQLiteTextJsonBuilderInitial<TName> : SQLiteTextBuilderInitial<TName, Writable<T>, L>;