common.d.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import type { ColumnBuilderBase, ColumnBuilderBaseConfig, ColumnBuilderExtraConfig, ColumnBuilderRuntimeConfig, ColumnDataType, HasGenerated } from "../../column-builder.js";
  2. import { ColumnBuilder } from "../../column-builder.js";
  3. import { Column } from "../../column.js";
  4. import type { ColumnBaseConfig } from "../../column.js";
  5. import { entityKind } from "../../entity.js";
  6. import type { SQL } from "../../sql/sql.js";
  7. import type { UpdateDeleteAction } from "../foreign-keys.js";
  8. import type { SQLiteTable } from "../table.js";
  9. import type { Update } from "../../utils.js";
  10. export interface ReferenceConfig {
  11. ref: () => SQLiteColumn;
  12. actions: {
  13. onUpdate?: UpdateDeleteAction;
  14. onDelete?: UpdateDeleteAction;
  15. };
  16. }
  17. export interface SQLiteColumnBuilderBase<T extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>, TTypeConfig extends object = object> extends ColumnBuilderBase<T, TTypeConfig & {
  18. dialect: 'sqlite';
  19. }> {
  20. }
  21. export interface SQLiteGeneratedColumnConfig {
  22. mode?: 'virtual' | 'stored';
  23. }
  24. export declare abstract class SQLiteColumnBuilder<T extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>, TRuntimeConfig extends object = object, TTypeConfig extends object = object, TExtraConfig extends ColumnBuilderExtraConfig = object> extends ColumnBuilder<T, TRuntimeConfig, TTypeConfig & {
  25. dialect: 'sqlite';
  26. }, TExtraConfig> implements SQLiteColumnBuilderBase<T, TTypeConfig> {
  27. static readonly [entityKind]: string;
  28. private foreignKeyConfigs;
  29. references(ref: ReferenceConfig['ref'], actions?: ReferenceConfig['actions']): this;
  30. unique(name?: string): this;
  31. generatedAlwaysAs(as: SQL | T['data'] | (() => SQL), config?: SQLiteGeneratedColumnConfig): HasGenerated<this, {
  32. type: 'always';
  33. }>;
  34. }
  35. export declare abstract class SQLiteColumn<T extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>, TRuntimeConfig extends object = {}, TTypeConfig extends object = {}> extends Column<T, TRuntimeConfig, TTypeConfig & {
  36. dialect: 'sqlite';
  37. }> {
  38. readonly table: SQLiteTable;
  39. static readonly [entityKind]: string;
  40. constructor(table: SQLiteTable, config: ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>);
  41. }
  42. export type AnySQLiteColumn<TPartial extends Partial<ColumnBaseConfig<ColumnDataType, string>> = {}> = SQLiteColumn<Required<Update<ColumnBaseConfig<ColumnDataType, string>, TPartial>>>;