| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import { entityKind } from "../entity.cjs";
- import type { SQL } from "../sql/sql.cjs";
- import type { AnyMySqlColumn, MySqlColumn } from "./columns/index.cjs";
- import type { MySqlTable } from "./table.cjs";
- interface IndexConfig {
- name: string;
- columns: IndexColumn[];
- /**
- * If true, the index will be created as `create unique index` instead of `create index`.
- */
- unique?: boolean;
- /**
- * If set, the index will be created as `create index ... using { 'btree' | 'hash' }`.
- */
- using?: 'btree' | 'hash';
- /**
- * If set, the index will be created as `create index ... algorithm { 'default' | 'inplace' | 'copy' }`.
- */
- algorithm?: 'default' | 'inplace' | 'copy';
- /**
- * If set, adds locks to the index creation.
- */
- lock?: 'default' | 'none' | 'shared' | 'exclusive';
- }
- export type IndexColumn = MySqlColumn | SQL;
- export declare class IndexBuilderOn {
- private name;
- private unique;
- static readonly [entityKind]: string;
- constructor(name: string, unique: boolean);
- on(...columns: [IndexColumn, ...IndexColumn[]]): IndexBuilder;
- }
- export interface AnyIndexBuilder {
- build(table: MySqlTable): Index;
- }
- export interface IndexBuilder extends AnyIndexBuilder {
- }
- export declare class IndexBuilder implements AnyIndexBuilder {
- static readonly [entityKind]: string;
- constructor(name: string, columns: IndexColumn[], unique: boolean);
- using(using: IndexConfig['using']): this;
- algorithm(algorithm: IndexConfig['algorithm']): this;
- lock(lock: IndexConfig['lock']): this;
- }
- export declare class Index {
- static readonly [entityKind]: string;
- readonly config: IndexConfig & {
- table: MySqlTable;
- };
- constructor(config: IndexConfig, table: MySqlTable);
- }
- export type GetColumnsTableName<TColumns> = TColumns extends AnyMySqlColumn<{
- tableName: infer TTableName extends string;
- }> | AnyMySqlColumn<{
- tableName: infer TTableName extends string;
- }>[] ? TTableName : never;
- export declare function index(name: string): IndexBuilderOn;
- export declare function uniqueIndex(name: string): IndexBuilderOn;
- export {};
|