common.d.ts 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { ColumnBuilder } from "../../column-builder.js";
  2. import type { ColumnBuilderBase, ColumnBuilderBaseConfig, ColumnBuilderExtraConfig, ColumnBuilderRuntimeConfig, ColumnDataType, HasDefault, HasGenerated, IsAutoincrement } from "../../column-builder.js";
  3. import type { ColumnBaseConfig } from "../../column.js";
  4. import { Column } from "../../column.js";
  5. import { entityKind } from "../../entity.js";
  6. import type { UpdateDeleteAction } from "../foreign-keys.js";
  7. import type { MySqlTable } from "../table.js";
  8. import type { SQL } from "../../sql/sql.js";
  9. import type { Update } from "../../utils.js";
  10. export interface ReferenceConfig {
  11. ref: () => MySqlColumn;
  12. actions: {
  13. onUpdate?: UpdateDeleteAction;
  14. onDelete?: UpdateDeleteAction;
  15. };
  16. }
  17. export interface MySqlColumnBuilderBase<T extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>, TTypeConfig extends object = object> extends ColumnBuilderBase<T, TTypeConfig & {
  18. dialect: 'mysql';
  19. }> {
  20. }
  21. export interface MySqlGeneratedColumnConfig {
  22. mode?: 'virtual' | 'stored';
  23. }
  24. export declare abstract class MySqlColumnBuilder<T extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string> & {
  25. data: any;
  26. }, TRuntimeConfig extends object = object, TTypeConfig extends object = object, TExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig> extends ColumnBuilder<T, TRuntimeConfig, TTypeConfig & {
  27. dialect: 'mysql';
  28. }, TExtraConfig> implements MySqlColumnBuilderBase<T, TTypeConfig> {
  29. static readonly [entityKind]: string;
  30. private foreignKeyConfigs;
  31. references(ref: ReferenceConfig['ref'], actions?: ReferenceConfig['actions']): this;
  32. unique(name?: string): this;
  33. generatedAlwaysAs(as: SQL | T['data'] | (() => SQL), config?: MySqlGeneratedColumnConfig): HasGenerated<this, {
  34. type: 'always';
  35. }>;
  36. }
  37. export declare abstract class MySqlColumn<T extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>, TRuntimeConfig extends object = {}, TTypeConfig extends object = {}> extends Column<T, TRuntimeConfig, TTypeConfig & {
  38. dialect: 'mysql';
  39. }> {
  40. readonly table: MySqlTable;
  41. static readonly [entityKind]: string;
  42. constructor(table: MySqlTable, config: ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>);
  43. }
  44. export type AnyMySqlColumn<TPartial extends Partial<ColumnBaseConfig<ColumnDataType, string>> = {}> = MySqlColumn<Required<Update<ColumnBaseConfig<ColumnDataType, string>, TPartial>>>;
  45. export interface MySqlColumnWithAutoIncrementConfig {
  46. autoIncrement: boolean;
  47. }
  48. export declare abstract class MySqlColumnBuilderWithAutoIncrement<T extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>, TRuntimeConfig extends object = object, TExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig> extends MySqlColumnBuilder<T, TRuntimeConfig & MySqlColumnWithAutoIncrementConfig, TExtraConfig> {
  49. static readonly [entityKind]: string;
  50. constructor(name: NonNullable<T['name']>, dataType: T['dataType'], columnType: T['columnType']);
  51. autoincrement(): IsAutoincrement<HasDefault<this>>;
  52. }
  53. export declare abstract class MySqlColumnWithAutoIncrement<T extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>, TRuntimeConfig extends object = object> extends MySqlColumn<T, MySqlColumnWithAutoIncrementConfig & TRuntimeConfig> {
  54. static readonly [entityKind]: string;
  55. readonly autoIncrement: boolean;
  56. }