integer.d.ts 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import type { ColumnBuilderBaseConfig, ColumnDataType, HasDefault, IsPrimaryKey, MakeColumnConfig, NotNull } from "../../column-builder.js";
  2. import type { ColumnBaseConfig } from "../../column.js";
  3. import { entityKind } from "../../entity.js";
  4. import type { OnConflict } from "../utils.js";
  5. import { type Equal, type Or } from "../../utils.js";
  6. import type { AnySQLiteTable } from "../table.js";
  7. import { SQLiteColumn, SQLiteColumnBuilder } from "./common.js";
  8. export interface PrimaryKeyConfig {
  9. autoIncrement?: boolean;
  10. onConflict?: OnConflict;
  11. }
  12. export declare abstract class SQLiteBaseIntegerBuilder<T extends ColumnBuilderBaseConfig<ColumnDataType, string>, TRuntimeConfig extends object = object> extends SQLiteColumnBuilder<T, TRuntimeConfig & {
  13. autoIncrement: boolean;
  14. }, {}, {
  15. primaryKeyHasDefault: true;
  16. }> {
  17. static readonly [entityKind]: string;
  18. constructor(name: T['name'], dataType: T['dataType'], columnType: T['columnType']);
  19. primaryKey(config?: PrimaryKeyConfig): IsPrimaryKey<HasDefault<NotNull<this>>>;
  20. }
  21. export declare abstract class SQLiteBaseInteger<T extends ColumnBaseConfig<ColumnDataType, string>, TRuntimeConfig extends object = object> extends SQLiteColumn<T, TRuntimeConfig & {
  22. autoIncrement: boolean;
  23. }> {
  24. static readonly [entityKind]: string;
  25. readonly autoIncrement: boolean;
  26. getSQLType(): string;
  27. }
  28. export type SQLiteIntegerBuilderInitial<TName extends string> = SQLiteIntegerBuilder<{
  29. name: TName;
  30. dataType: 'number';
  31. columnType: 'SQLiteInteger';
  32. data: number;
  33. driverParam: number;
  34. enumValues: undefined;
  35. }>;
  36. export declare class SQLiteIntegerBuilder<T extends ColumnBuilderBaseConfig<'number', 'SQLiteInteger'>> extends SQLiteBaseIntegerBuilder<T> {
  37. static readonly [entityKind]: string;
  38. constructor(name: T['name']);
  39. build<TTableName extends string>(table: AnySQLiteTable<{
  40. name: TTableName;
  41. }>): SQLiteInteger<MakeColumnConfig<T, TTableName>>;
  42. }
  43. export declare class SQLiteInteger<T extends ColumnBaseConfig<'number', 'SQLiteInteger'>> extends SQLiteBaseInteger<T> {
  44. static readonly [entityKind]: string;
  45. }
  46. export type SQLiteTimestampBuilderInitial<TName extends string> = SQLiteTimestampBuilder<{
  47. name: TName;
  48. dataType: 'date';
  49. columnType: 'SQLiteTimestamp';
  50. data: Date;
  51. driverParam: number;
  52. enumValues: undefined;
  53. }>;
  54. export declare class SQLiteTimestampBuilder<T extends ColumnBuilderBaseConfig<'date', 'SQLiteTimestamp'>> extends SQLiteBaseIntegerBuilder<T, {
  55. mode: 'timestamp' | 'timestamp_ms';
  56. }> {
  57. static readonly [entityKind]: string;
  58. constructor(name: T['name'], mode: 'timestamp' | 'timestamp_ms');
  59. /**
  60. * @deprecated Use `default()` with your own expression instead.
  61. *
  62. * Adds `DEFAULT (cast((julianday('now') - 2440587.5)*86400000 as integer))` to the column, which is the current epoch timestamp in milliseconds.
  63. */
  64. defaultNow(): HasDefault<this>;
  65. build<TTableName extends string>(table: AnySQLiteTable<{
  66. name: TTableName;
  67. }>): SQLiteTimestamp<MakeColumnConfig<T, TTableName>>;
  68. }
  69. export declare class SQLiteTimestamp<T extends ColumnBaseConfig<'date', 'SQLiteTimestamp'>> extends SQLiteBaseInteger<T, {
  70. mode: 'timestamp' | 'timestamp_ms';
  71. }> {
  72. static readonly [entityKind]: string;
  73. readonly mode: 'timestamp' | 'timestamp_ms';
  74. mapFromDriverValue(value: number): Date;
  75. mapToDriverValue(value: Date): number;
  76. }
  77. export type SQLiteBooleanBuilderInitial<TName extends string> = SQLiteBooleanBuilder<{
  78. name: TName;
  79. dataType: 'boolean';
  80. columnType: 'SQLiteBoolean';
  81. data: boolean;
  82. driverParam: number;
  83. enumValues: undefined;
  84. }>;
  85. export declare class SQLiteBooleanBuilder<T extends ColumnBuilderBaseConfig<'boolean', 'SQLiteBoolean'>> extends SQLiteBaseIntegerBuilder<T, {
  86. mode: 'boolean';
  87. }> {
  88. static readonly [entityKind]: string;
  89. constructor(name: T['name'], mode: 'boolean');
  90. build<TTableName extends string>(table: AnySQLiteTable<{
  91. name: TTableName;
  92. }>): SQLiteBoolean<MakeColumnConfig<T, TTableName>>;
  93. }
  94. export declare class SQLiteBoolean<T extends ColumnBaseConfig<'boolean', 'SQLiteBoolean'>> extends SQLiteBaseInteger<T, {
  95. mode: 'boolean';
  96. }> {
  97. static readonly [entityKind]: string;
  98. readonly mode: 'boolean';
  99. mapFromDriverValue(value: number): boolean;
  100. mapToDriverValue(value: boolean): number;
  101. }
  102. export interface IntegerConfig<TMode extends 'number' | 'timestamp' | 'timestamp_ms' | 'boolean' = 'number' | 'timestamp' | 'timestamp_ms' | 'boolean'> {
  103. mode: TMode;
  104. }
  105. export declare function integer(): SQLiteIntegerBuilderInitial<''>;
  106. export declare function integer<TMode extends IntegerConfig['mode']>(config?: IntegerConfig<TMode>): Or<Equal<TMode, 'timestamp'>, Equal<TMode, 'timestamp_ms'>> extends true ? SQLiteTimestampBuilderInitial<''> : Equal<TMode, 'boolean'> extends true ? SQLiteBooleanBuilderInitial<''> : SQLiteIntegerBuilderInitial<''>;
  107. export declare function integer<TName extends string, TMode extends IntegerConfig['mode']>(name: TName, config?: IntegerConfig<TMode>): Or<Equal<TMode, 'timestamp'>, Equal<TMode, 'timestamp_ms'>> extends true ? SQLiteTimestampBuilderInitial<TName> : Equal<TMode, 'boolean'> extends true ? SQLiteBooleanBuilderInitial<TName> : SQLiteIntegerBuilderInitial<TName>;
  108. export declare const int: typeof integer;