@pdg/drizzle-mysql 0.0.0-stage → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,236 @@
1
+ import { SQL } from 'drizzle-orm';
2
+ import { MySqlTable, MySqlColumn, type MySqlAsyncSelectBase } from 'drizzle-orm/mysql-core';
3
+ import type { SelectedFields } from 'drizzle-orm/operations';
4
+ import type { GetSelectTableName } from 'drizzle-orm/query-builders/select.types';
5
+ import type { MySqlColumnSelectionName, MySqlSelectedNamedColumnUnion, MySqlSelectedNamedColumns, MySqlSelectedTableColumns, MySqlAliasTable } from './columns.cjs';
6
+ import type { MySqlInsertValues, MySqlUpdateValues, MySqlCompareValues, MySqlColumnName, MySqlArrayCompareValues, MySqlRangeCompareValues, MySqlPatternCompareValues, MySqlNullConditionInput, MySqlConditions } from './@types.cjs';
7
+ import type { MySql2Database } from 'drizzle-orm/mysql2';
8
+ /********************************************************************************************************************
9
+ * MySqlQuery
10
+ * ******************************************************************************************************************/
11
+ export declare class MySqlQuery<TTable extends MySqlTable, IV extends MySqlInsertValues<TTable> = MySqlInsertValues<TTable>, UV extends MySqlUpdateValues<TTable> = MySqlUpdateValues<TTable>, AR = AddResult<TTable>> {
12
+ private readonly current;
13
+ private readonly getTimestamp;
14
+ readonly t: TTable;
15
+ /********************************************************************************************************************
16
+ * constructor
17
+ * ******************************************************************************************************************/
18
+ constructor(table: TTable, current: () => MySql2Database, getTimestamp: () => any);
19
+ private readonly drizzle;
20
+ /********************************************************************************************************************
21
+ * (PROTECTED) getTx
22
+ * ******************************************************************************************************************/
23
+ protected getTx(): MySql2Database<import("drizzle-orm").EmptyRelations>;
24
+ /********************************************************************************************************************
25
+ * columns
26
+ * ******************************************************************************************************************/
27
+ columns(): MySqlSelectedTableColumns<TTable>;
28
+ columns<N extends MySqlColumnSelectionName<TTable>>(...names: N[] & MySqlColumnSelectionName<TTable>[]): MySqlSelectedNamedColumnUnion<TTable, N>;
29
+ private resolveFields;
30
+ /********************************************************************************************************************
31
+ * select
32
+ * ******************************************************************************************************************/
33
+ select(): SelectFrom<TTable, undefined>;
34
+ select(fields: readonly []): SelectFrom<TTable, {}>;
35
+ select<N extends MySqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MySqlColumnSelectionName<TTable>[]): SelectFrom<TTable, MySqlSelectedNamedColumns<TTable, readonly N[]>>;
36
+ select<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T): SelectFrom<TTable, MergeFields<T>>;
37
+ select<const T extends readonly FieldInput[] | readonly MySqlColumnSelectionName<TTable>[]>(fields: T & readonly (FieldInput | MySqlColumnSelectionName<TTable>)[]): SelectFrom<TTable, MergeFields<NamedFields<TTable, T>>>;
38
+ select<TSelection extends SelectedFields<MySqlColumn, TTable>>(fields?: Fields<FieldsQuery<TTable>, TSelection>): SelectFrom<TTable, TSelection>;
39
+ select<TAlias extends string>(alias: MySqlAliasTable<TTable, TAlias>): SelectFrom<MySqlAliasTable<TTable, TAlias>, undefined>;
40
+ select<TAlias extends string>(alias: MySqlAliasTable<TTable, TAlias>, fields: readonly []): SelectFrom<MySqlAliasTable<TTable, TAlias>, {}>;
41
+ select<TAlias extends string, N extends MySqlColumnSelectionName<MySqlAliasTable<TTable, TAlias>>>(alias: MySqlAliasTable<TTable, TAlias>, fields: readonly N[] & readonly MySqlColumnSelectionName<MySqlAliasTable<TTable, TAlias>>[]): SelectFrom<MySqlAliasTable<TTable, TAlias>, MySqlSelectedNamedColumns<MySqlAliasTable<TTable, TAlias>, readonly N[]>>;
42
+ select<TAlias extends string, const T extends readonly FieldInput[]>(alias: MySqlAliasTable<TTable, TAlias>, fields: (query: FieldsQuery<MySqlAliasTable<TTable, TAlias>>) => T): SelectFrom<MySqlAliasTable<TTable, TAlias>, MergeFields<T>>;
43
+ select<TAlias extends string, const T extends readonly FieldInput[] | readonly MySqlColumnSelectionName<MySqlAliasTable<TTable, TAlias>>[]>(alias: MySqlAliasTable<TTable, TAlias>, fields: T & readonly (FieldInput | MySqlColumnSelectionName<MySqlAliasTable<TTable, TAlias>>)[]): SelectFrom<MySqlAliasTable<TTable, TAlias>, MergeFields<NamedFields<MySqlAliasTable<TTable, TAlias>, T>>>;
44
+ select<TAlias extends string, TSelection extends SelectedFields<MySqlColumn, MySqlAliasTable<TTable, TAlias>>>(alias: MySqlAliasTable<TTable, TAlias>, fields: Fields<FieldsQuery<MySqlAliasTable<TTable, TAlias>>, TSelection>): SelectFrom<MySqlAliasTable<TTable, TAlias>, TSelection>;
45
+ /********************************************************************************************************************
46
+ * find
47
+ * ******************************************************************************************************************/
48
+ find(where: BaseWhere<this>): Promise<FindResult<TTable, undefined>>;
49
+ find(fields: readonly [], where?: BaseWhere<this>): Promise<FindResult<TTable, {}>>;
50
+ find<N extends MySqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MySqlColumnSelectionName<TTable>[], where?: BaseWhere<this>): Promise<FindResult<TTable, MySqlSelectedNamedColumns<TTable, readonly N[]>>>;
51
+ find<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T, where: BaseWhere<this>): Promise<FindResult<TTable, MergeFields<T>>>;
52
+ find<const T extends readonly FieldInput[] | readonly MySqlColumnSelectionName<TTable>[]>(fields: T & readonly (FieldInput | MySqlColumnSelectionName<TTable>)[], where: BaseWhere<this>): Promise<FindResult<TTable, MergeFields<NamedFields<TTable, T>>>>;
53
+ find<TSelection extends SelectedFields<MySqlColumn, TTable>>(fields: Fields<FieldsQuery<TTable>, TSelection>, where: BaseWhere<this>): Promise<FindResult<TTable, TSelection>>;
54
+ find<TAlias extends string>(alias: MySqlAliasTable<TTable, TAlias>, where: BaseWhere<this>): Promise<FindResult<MySqlAliasTable<TTable, TAlias>, undefined>>;
55
+ find<TAlias extends string>(alias: MySqlAliasTable<TTable, TAlias>, fields: readonly [], where?: BaseWhere<this>): Promise<FindResult<MySqlAliasTable<TTable, TAlias>, {}>>;
56
+ find<TAlias extends string, N extends MySqlColumnSelectionName<MySqlAliasTable<TTable, TAlias>>>(alias: MySqlAliasTable<TTable, TAlias>, fields: readonly N[] & readonly MySqlColumnSelectionName<MySqlAliasTable<TTable, TAlias>>[], where?: BaseWhere<this>): Promise<FindResult<MySqlAliasTable<TTable, TAlias>, MySqlSelectedNamedColumns<MySqlAliasTable<TTable, TAlias>, readonly N[]>>>;
57
+ find<TAlias extends string, const T extends readonly FieldInput[]>(alias: MySqlAliasTable<TTable, TAlias>, fields: (query: FieldsQuery<MySqlAliasTable<TTable, TAlias>>) => T, where: BaseWhere<this>): Promise<FindResult<MySqlAliasTable<TTable, TAlias>, MergeFields<T>>>;
58
+ find<TAlias extends string, const T extends readonly FieldInput[] | readonly MySqlColumnSelectionName<MySqlAliasTable<TTable, TAlias>>[]>(alias: MySqlAliasTable<TTable, TAlias>, fields: T & readonly (FieldInput | MySqlColumnSelectionName<MySqlAliasTable<TTable, TAlias>>)[], where: BaseWhere<this>): Promise<FindResult<MySqlAliasTable<TTable, TAlias>, MergeFields<NamedFields<MySqlAliasTable<TTable, TAlias>, T>>>>;
59
+ find<TAlias extends string, TSelection extends SelectedFields<MySqlColumn, MySqlAliasTable<TTable, TAlias>>>(alias: MySqlAliasTable<TTable, TAlias>, fields: Fields<FieldsQuery<MySqlAliasTable<TTable, TAlias>>, TSelection>, where: BaseWhere<this>): Promise<FindResult<MySqlAliasTable<TTable, TAlias>, TSelection>>;
60
+ /********************************************************************************************************************
61
+ * findByPrimaryKey
62
+ * ******************************************************************************************************************/
63
+ findByPrimaryKey<N extends MySqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MySqlColumnSelectionName<TTable>[], key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, MySqlSelectedNamedColumns<TTable, readonly N[]>>>;
64
+ findByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, undefined>>;
65
+ findByPrimaryKey(fields: readonly [], key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, {}>>;
66
+ findByPrimaryKey<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T, key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, MergeFields<T>>>;
67
+ findByPrimaryKey<const T extends readonly FieldInput[] | readonly MySqlColumnSelectionName<TTable>[]>(fields: T & readonly (FieldInput | MySqlColumnSelectionName<TTable>)[], key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, MergeFields<NamedFields<TTable, T>>>>;
68
+ findByPrimaryKey<TSelection extends SelectedFields<MySqlColumn, TTable>>(fields: Fields<FieldsQuery<TTable>, TSelection>, key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, TSelection>>;
69
+ /********************************************************************************************************************
70
+ * primaryKeyCondition
71
+ * ******************************************************************************************************************/
72
+ private primaryKeyCondition;
73
+ /********************************************************************************************************************
74
+ * exists
75
+ * ******************************************************************************************************************/
76
+ exists(where?: BaseWhere<this>): Promise<boolean>;
77
+ /********************************************************************************************************************
78
+ * existsByPrimarykey
79
+ * ******************************************************************************************************************/
80
+ existsByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<boolean>;
81
+ /********************************************************************************************************************
82
+ * notExists
83
+ * ******************************************************************************************************************/
84
+ notExists(where?: BaseWhere<this>): Promise<boolean>;
85
+ /********************************************************************************************************************
86
+ * notExistsByPrimaryKey
87
+ * ******************************************************************************************************************/
88
+ notExistsByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<boolean>;
89
+ /********************************************************************************************************************
90
+ * count
91
+ * ******************************************************************************************************************/
92
+ count(where?: BaseWhere<this>): Promise<number>;
93
+ private prepareValues;
94
+ /********************************************************************************************************************
95
+ * (PRIVATE) insertValues
96
+ * ******************************************************************************************************************/
97
+ private insertValues;
98
+ /********************************************************************************************************************
99
+ * add
100
+ * ******************************************************************************************************************/
101
+ add(value: IV[]): Promise<AR[]>;
102
+ add(value: IV): Promise<AR>;
103
+ /********************************************************************************************************************
104
+ * edit
105
+ * ******************************************************************************************************************/
106
+ edit(set: UV, where: BaseWhere<this>): Omit<import("drizzle-orm/mysql-core").MySqlAsyncUpdateBase<import("drizzle-orm").Assume<import("drizzle-orm").Assume<TTable, MySqlTable<import("drizzle-orm/mysql-core").TableConfig>>, MySqlTable<import("drizzle-orm/mysql-core").TableConfig>>, import("drizzle-orm/mysql2").MySql2QueryResultHKT, false, "where">, "where">;
107
+ /********************************************************************************************************************
108
+ * editByPrimaryKey
109
+ * ******************************************************************************************************************/
110
+ editByPrimaryKey(set: UV, key: PrimaryKeyInput<TTable>): Omit<import("drizzle-orm/mysql-core").MySqlAsyncUpdateBase<import("drizzle-orm").Assume<import("drizzle-orm").Assume<TTable, MySqlTable<import("drizzle-orm/mysql-core").TableConfig>>, MySqlTable<import("drizzle-orm/mysql-core").TableConfig>>, import("drizzle-orm/mysql2").MySql2QueryResultHKT, false, "where">, "where">;
111
+ /********************************************************************************************************************
112
+ * remove
113
+ * ******************************************************************************************************************/
114
+ remove(where: BaseWhere<this>): Omit<import("drizzle-orm/mysql-core").MySqlAsyncDeleteBase<import("drizzle-orm").Assume<TTable, MySqlTable<import("drizzle-orm/mysql-core").TableConfig>>, import("drizzle-orm/mysql2").MySql2QueryResultHKT, false, "where">, "where">;
115
+ /********************************************************************************************************************
116
+ * removeByPrimaryKey
117
+ * ******************************************************************************************************************/
118
+ removeByPrimaryKey(key: PrimaryKeyInput<TTable>): Omit<import("drizzle-orm/mysql-core").MySqlAsyncDeleteBase<import("drizzle-orm").Assume<TTable, MySqlTable<import("drizzle-orm/mysql-core").TableConfig>>, import("drizzle-orm/mysql2").MySql2QueryResultHKT, false, "where">, "where">;
119
+ /********************************************************************************************************************
120
+ * eq
121
+ * ******************************************************************************************************************/
122
+ eq(values: MySqlCompareValues<TTable>): SQL | undefined;
123
+ /********************************************************************************************************************
124
+ * ne
125
+ * ******************************************************************************************************************/
126
+ ne(values: MySqlCompareValues<TTable>): SQL | undefined;
127
+ /********************************************************************************************************************
128
+ * gt
129
+ * ******************************************************************************************************************/
130
+ gt(values: MySqlCompareValues<TTable>): SQL | undefined;
131
+ /********************************************************************************************************************
132
+ * gte
133
+ * ******************************************************************************************************************/
134
+ gte(values: MySqlCompareValues<TTable>): SQL | undefined;
135
+ /********************************************************************************************************************
136
+ * lt
137
+ * ******************************************************************************************************************/
138
+ lt(values: MySqlCompareValues<TTable>): SQL | undefined;
139
+ /********************************************************************************************************************
140
+ * lte
141
+ * ******************************************************************************************************************/
142
+ lte(values: MySqlCompareValues<TTable>): SQL | undefined;
143
+ /********************************************************************************************************************
144
+ * lte
145
+ * ******************************************************************************************************************/
146
+ inArray(values: MySqlArrayCompareValues<TTable>): SQL | undefined;
147
+ /********************************************************************************************************************
148
+ * notInArray
149
+ * ******************************************************************************************************************/
150
+ notInArray(values: MySqlArrayCompareValues<TTable>): SQL | undefined;
151
+ /********************************************************************************************************************
152
+ * between
153
+ * ******************************************************************************************************************/
154
+ between(values: MySqlRangeCompareValues<TTable>): SQL | undefined;
155
+ /********************************************************************************************************************
156
+ * notBetween
157
+ * ******************************************************************************************************************/
158
+ notBetween(values: MySqlRangeCompareValues<TTable>): SQL | undefined;
159
+ /********************************************************************************************************************
160
+ * like
161
+ * ******************************************************************************************************************/
162
+ like(values: MySqlPatternCompareValues<TTable>): SQL | undefined;
163
+ /********************************************************************************************************************
164
+ * notLike
165
+ * ******************************************************************************************************************/
166
+ notLike(values: MySqlPatternCompareValues<TTable>): SQL | undefined;
167
+ /********************************************************************************************************************
168
+ * ilike
169
+ * ******************************************************************************************************************/
170
+ ilike(values: MySqlPatternCompareValues<TTable>): SQL | undefined;
171
+ /********************************************************************************************************************
172
+ * notIlike
173
+ * ******************************************************************************************************************/
174
+ notIlike(values: MySqlPatternCompareValues<TTable>): SQL | undefined;
175
+ /********************************************************************************************************************
176
+ * isNull
177
+ * ******************************************************************************************************************/
178
+ isNull(name: MySqlColumnName<TTable>): SQL;
179
+ isNull(names: MySqlNullConditionInput<TTable>): SQL | undefined;
180
+ /********************************************************************************************************************
181
+ * isNotNull
182
+ * ******************************************************************************************************************/
183
+ isNotNull(name: MySqlColumnName<TTable>): SQL;
184
+ isNotNull(names: MySqlNullConditionInput<TTable>): SQL | undefined;
185
+ /********************************************************************************************************************
186
+ * and
187
+ * ******************************************************************************************************************/
188
+ and(options: MySqlConditions<TTable>): SQL | undefined;
189
+ /********************************************************************************************************************
190
+ * or
191
+ * ******************************************************************************************************************/
192
+ or(options: MySqlConditions<TTable>): SQL | undefined;
193
+ }
194
+ /********************************************************************************************************************
195
+ * types
196
+ * ******************************************************************************************************************/
197
+ type SelectFrom<TTable extends MySqlTable, TSelection extends FieldSet | undefined> = MySqlAsyncSelectBase<GetSelectTableName<TTable>, TSelection extends undefined ? MySqlSelectedTableColumns<TTable> : TSelection, 'partial'>;
198
+ type FindResult<TTable extends MySqlTable, TSelection extends FieldSet | undefined> = Awaited<SelectFrom<TTable, TSelection>>[number] | undefined;
199
+ type WhereQuery<TQuery> = Pick<TQuery, Extract<keyof TQuery, 't' | 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'inArray' | 'notInArray' | 'between' | 'notBetween' | 'like' | 'notLike' | 'ilike' | 'notIlike' | 'isNull' | 'isNotNull' | 'and' | 'or'>>;
200
+ type BaseWhere<TQuery> = SQL | undefined | ((query: WhereQuery<TQuery>) => SQL | undefined);
201
+ type FieldSet = SelectedFields<MySqlColumn, MySqlTable>;
202
+ type FieldInput = FieldSet | false | undefined;
203
+ type FieldsQuery<TTable extends MySqlTable> = {
204
+ readonly t: TTable;
205
+ columns(): MySqlSelectedTableColumns<TTable>;
206
+ columns<N extends MySqlColumnSelectionName<TTable>>(...names: N[] & MySqlColumnSelectionName<TTable>[]): MySqlSelectedNamedColumnUnion<TTable, N>;
207
+ };
208
+ type Fields<TQuery, TSelection> = TSelection | ((query: TQuery) => TSelection);
209
+ type NamedFields<TTable extends MySqlTable, T extends readonly (FieldInput | MySqlColumnSelectionName<TTable>)[]> = {
210
+ [I in keyof T]: T[I] extends MySqlColumnSelectionName<TTable> ? MySqlSelectedNamedColumns<TTable, readonly [T[I]]> : Extract<T[I], FieldInput>;
211
+ };
212
+ type MergeField<First, Result> = First extends FieldSet ? Result extends unknown ? Omit<Result, keyof First> & First : never : Result;
213
+ type MergeFields<T extends readonly FieldInput[], Result = {}> = T extends readonly [
214
+ infer First extends FieldInput,
215
+ ...infer Rest extends readonly FieldInput[]
216
+ ] ? MergeFields<Rest, MergeField<First, Result>> : number extends T['length'] ? Exclude<T[number], false | undefined> : Result extends unknown ? {
217
+ [P in keyof Result]: Result[P];
218
+ } : never;
219
+ type PrimaryKeyNames<T extends MySqlTable> = {
220
+ [P in keyof T['_']['columns']]: T['_']['columns'][P]['_'] extends {
221
+ isPrimaryKey: true;
222
+ } ? P : never;
223
+ }[keyof T['_']['columns']];
224
+ type PrimaryKeyObject<T extends MySqlTable> = {
225
+ [P in PrimaryKeyNames<T>]: T['_']['columns'][P]['_']['data'];
226
+ };
227
+ type IsUnion<T, U = T> = T extends U ? ([U] extends [T] ? false : true) : never;
228
+ type PrimaryKeyInput<T extends MySqlTable> = [PrimaryKeyNames<T>] extends [never] ? never : IsUnion<PrimaryKeyNames<T>> extends true ? PrimaryKeyObject<T> : PrimaryKeyObject<T> | PrimaryKeyObject<T>[PrimaryKeyNames<T>];
229
+ type AutoIncrementKeys<TTable extends MySqlTable> = {
230
+ [P in keyof TTable['_']['columns']]: TTable['_']['columns'][P]['_'] extends {
231
+ isAutoincrement: true;
232
+ } ? P : never;
233
+ }[keyof TTable['_']['columns']];
234
+ type HasAutoIncrement<TTable extends MySqlTable> = [AutoIncrementKeys<TTable>] extends [never] ? false : true;
235
+ type AddResult<TTable extends MySqlTable> = HasAutoIncrement<TTable> extends true ? number : undefined;
236
+ export {};
@@ -0,0 +1,236 @@
1
+ import { SQL } from 'drizzle-orm';
2
+ import { MySqlTable, MySqlColumn, type MySqlAsyncSelectBase } from 'drizzle-orm/mysql-core';
3
+ import type { SelectedFields } from 'drizzle-orm/operations';
4
+ import type { GetSelectTableName } from 'drizzle-orm/query-builders/select.types';
5
+ import type { MySqlColumnSelectionName, MySqlSelectedNamedColumnUnion, MySqlSelectedNamedColumns, MySqlSelectedTableColumns, MySqlAliasTable } from './columns.js';
6
+ import type { MySqlInsertValues, MySqlUpdateValues, MySqlCompareValues, MySqlColumnName, MySqlArrayCompareValues, MySqlRangeCompareValues, MySqlPatternCompareValues, MySqlNullConditionInput, MySqlConditions } from './@types.js';
7
+ import type { MySql2Database } from 'drizzle-orm/mysql2';
8
+ /********************************************************************************************************************
9
+ * MySqlQuery
10
+ * ******************************************************************************************************************/
11
+ export declare class MySqlQuery<TTable extends MySqlTable, IV extends MySqlInsertValues<TTable> = MySqlInsertValues<TTable>, UV extends MySqlUpdateValues<TTable> = MySqlUpdateValues<TTable>, AR = AddResult<TTable>> {
12
+ private readonly current;
13
+ private readonly getTimestamp;
14
+ readonly t: TTable;
15
+ /********************************************************************************************************************
16
+ * constructor
17
+ * ******************************************************************************************************************/
18
+ constructor(table: TTable, current: () => MySql2Database, getTimestamp: () => any);
19
+ private readonly drizzle;
20
+ /********************************************************************************************************************
21
+ * (PROTECTED) getTx
22
+ * ******************************************************************************************************************/
23
+ protected getTx(): MySql2Database<import("drizzle-orm").EmptyRelations>;
24
+ /********************************************************************************************************************
25
+ * columns
26
+ * ******************************************************************************************************************/
27
+ columns(): MySqlSelectedTableColumns<TTable>;
28
+ columns<N extends MySqlColumnSelectionName<TTable>>(...names: N[] & MySqlColumnSelectionName<TTable>[]): MySqlSelectedNamedColumnUnion<TTable, N>;
29
+ private resolveFields;
30
+ /********************************************************************************************************************
31
+ * select
32
+ * ******************************************************************************************************************/
33
+ select(): SelectFrom<TTable, undefined>;
34
+ select(fields: readonly []): SelectFrom<TTable, {}>;
35
+ select<N extends MySqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MySqlColumnSelectionName<TTable>[]): SelectFrom<TTable, MySqlSelectedNamedColumns<TTable, readonly N[]>>;
36
+ select<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T): SelectFrom<TTable, MergeFields<T>>;
37
+ select<const T extends readonly FieldInput[] | readonly MySqlColumnSelectionName<TTable>[]>(fields: T & readonly (FieldInput | MySqlColumnSelectionName<TTable>)[]): SelectFrom<TTable, MergeFields<NamedFields<TTable, T>>>;
38
+ select<TSelection extends SelectedFields<MySqlColumn, TTable>>(fields?: Fields<FieldsQuery<TTable>, TSelection>): SelectFrom<TTable, TSelection>;
39
+ select<TAlias extends string>(alias: MySqlAliasTable<TTable, TAlias>): SelectFrom<MySqlAliasTable<TTable, TAlias>, undefined>;
40
+ select<TAlias extends string>(alias: MySqlAliasTable<TTable, TAlias>, fields: readonly []): SelectFrom<MySqlAliasTable<TTable, TAlias>, {}>;
41
+ select<TAlias extends string, N extends MySqlColumnSelectionName<MySqlAliasTable<TTable, TAlias>>>(alias: MySqlAliasTable<TTable, TAlias>, fields: readonly N[] & readonly MySqlColumnSelectionName<MySqlAliasTable<TTable, TAlias>>[]): SelectFrom<MySqlAliasTable<TTable, TAlias>, MySqlSelectedNamedColumns<MySqlAliasTable<TTable, TAlias>, readonly N[]>>;
42
+ select<TAlias extends string, const T extends readonly FieldInput[]>(alias: MySqlAliasTable<TTable, TAlias>, fields: (query: FieldsQuery<MySqlAliasTable<TTable, TAlias>>) => T): SelectFrom<MySqlAliasTable<TTable, TAlias>, MergeFields<T>>;
43
+ select<TAlias extends string, const T extends readonly FieldInput[] | readonly MySqlColumnSelectionName<MySqlAliasTable<TTable, TAlias>>[]>(alias: MySqlAliasTable<TTable, TAlias>, fields: T & readonly (FieldInput | MySqlColumnSelectionName<MySqlAliasTable<TTable, TAlias>>)[]): SelectFrom<MySqlAliasTable<TTable, TAlias>, MergeFields<NamedFields<MySqlAliasTable<TTable, TAlias>, T>>>;
44
+ select<TAlias extends string, TSelection extends SelectedFields<MySqlColumn, MySqlAliasTable<TTable, TAlias>>>(alias: MySqlAliasTable<TTable, TAlias>, fields: Fields<FieldsQuery<MySqlAliasTable<TTable, TAlias>>, TSelection>): SelectFrom<MySqlAliasTable<TTable, TAlias>, TSelection>;
45
+ /********************************************************************************************************************
46
+ * find
47
+ * ******************************************************************************************************************/
48
+ find(where: BaseWhere<this>): Promise<FindResult<TTable, undefined>>;
49
+ find(fields: readonly [], where?: BaseWhere<this>): Promise<FindResult<TTable, {}>>;
50
+ find<N extends MySqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MySqlColumnSelectionName<TTable>[], where?: BaseWhere<this>): Promise<FindResult<TTable, MySqlSelectedNamedColumns<TTable, readonly N[]>>>;
51
+ find<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T, where: BaseWhere<this>): Promise<FindResult<TTable, MergeFields<T>>>;
52
+ find<const T extends readonly FieldInput[] | readonly MySqlColumnSelectionName<TTable>[]>(fields: T & readonly (FieldInput | MySqlColumnSelectionName<TTable>)[], where: BaseWhere<this>): Promise<FindResult<TTable, MergeFields<NamedFields<TTable, T>>>>;
53
+ find<TSelection extends SelectedFields<MySqlColumn, TTable>>(fields: Fields<FieldsQuery<TTable>, TSelection>, where: BaseWhere<this>): Promise<FindResult<TTable, TSelection>>;
54
+ find<TAlias extends string>(alias: MySqlAliasTable<TTable, TAlias>, where: BaseWhere<this>): Promise<FindResult<MySqlAliasTable<TTable, TAlias>, undefined>>;
55
+ find<TAlias extends string>(alias: MySqlAliasTable<TTable, TAlias>, fields: readonly [], where?: BaseWhere<this>): Promise<FindResult<MySqlAliasTable<TTable, TAlias>, {}>>;
56
+ find<TAlias extends string, N extends MySqlColumnSelectionName<MySqlAliasTable<TTable, TAlias>>>(alias: MySqlAliasTable<TTable, TAlias>, fields: readonly N[] & readonly MySqlColumnSelectionName<MySqlAliasTable<TTable, TAlias>>[], where?: BaseWhere<this>): Promise<FindResult<MySqlAliasTable<TTable, TAlias>, MySqlSelectedNamedColumns<MySqlAliasTable<TTable, TAlias>, readonly N[]>>>;
57
+ find<TAlias extends string, const T extends readonly FieldInput[]>(alias: MySqlAliasTable<TTable, TAlias>, fields: (query: FieldsQuery<MySqlAliasTable<TTable, TAlias>>) => T, where: BaseWhere<this>): Promise<FindResult<MySqlAliasTable<TTable, TAlias>, MergeFields<T>>>;
58
+ find<TAlias extends string, const T extends readonly FieldInput[] | readonly MySqlColumnSelectionName<MySqlAliasTable<TTable, TAlias>>[]>(alias: MySqlAliasTable<TTable, TAlias>, fields: T & readonly (FieldInput | MySqlColumnSelectionName<MySqlAliasTable<TTable, TAlias>>)[], where: BaseWhere<this>): Promise<FindResult<MySqlAliasTable<TTable, TAlias>, MergeFields<NamedFields<MySqlAliasTable<TTable, TAlias>, T>>>>;
59
+ find<TAlias extends string, TSelection extends SelectedFields<MySqlColumn, MySqlAliasTable<TTable, TAlias>>>(alias: MySqlAliasTable<TTable, TAlias>, fields: Fields<FieldsQuery<MySqlAliasTable<TTable, TAlias>>, TSelection>, where: BaseWhere<this>): Promise<FindResult<MySqlAliasTable<TTable, TAlias>, TSelection>>;
60
+ /********************************************************************************************************************
61
+ * findByPrimaryKey
62
+ * ******************************************************************************************************************/
63
+ findByPrimaryKey<N extends MySqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MySqlColumnSelectionName<TTable>[], key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, MySqlSelectedNamedColumns<TTable, readonly N[]>>>;
64
+ findByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, undefined>>;
65
+ findByPrimaryKey(fields: readonly [], key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, {}>>;
66
+ findByPrimaryKey<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T, key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, MergeFields<T>>>;
67
+ findByPrimaryKey<const T extends readonly FieldInput[] | readonly MySqlColumnSelectionName<TTable>[]>(fields: T & readonly (FieldInput | MySqlColumnSelectionName<TTable>)[], key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, MergeFields<NamedFields<TTable, T>>>>;
68
+ findByPrimaryKey<TSelection extends SelectedFields<MySqlColumn, TTable>>(fields: Fields<FieldsQuery<TTable>, TSelection>, key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, TSelection>>;
69
+ /********************************************************************************************************************
70
+ * primaryKeyCondition
71
+ * ******************************************************************************************************************/
72
+ private primaryKeyCondition;
73
+ /********************************************************************************************************************
74
+ * exists
75
+ * ******************************************************************************************************************/
76
+ exists(where?: BaseWhere<this>): Promise<boolean>;
77
+ /********************************************************************************************************************
78
+ * existsByPrimarykey
79
+ * ******************************************************************************************************************/
80
+ existsByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<boolean>;
81
+ /********************************************************************************************************************
82
+ * notExists
83
+ * ******************************************************************************************************************/
84
+ notExists(where?: BaseWhere<this>): Promise<boolean>;
85
+ /********************************************************************************************************************
86
+ * notExistsByPrimaryKey
87
+ * ******************************************************************************************************************/
88
+ notExistsByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<boolean>;
89
+ /********************************************************************************************************************
90
+ * count
91
+ * ******************************************************************************************************************/
92
+ count(where?: BaseWhere<this>): Promise<number>;
93
+ private prepareValues;
94
+ /********************************************************************************************************************
95
+ * (PRIVATE) insertValues
96
+ * ******************************************************************************************************************/
97
+ private insertValues;
98
+ /********************************************************************************************************************
99
+ * add
100
+ * ******************************************************************************************************************/
101
+ add(value: IV[]): Promise<AR[]>;
102
+ add(value: IV): Promise<AR>;
103
+ /********************************************************************************************************************
104
+ * edit
105
+ * ******************************************************************************************************************/
106
+ edit(set: UV, where: BaseWhere<this>): Omit<import("drizzle-orm/mysql-core").MySqlAsyncUpdateBase<import("drizzle-orm").Assume<import("drizzle-orm").Assume<TTable, MySqlTable<import("drizzle-orm/mysql-core").TableConfig>>, MySqlTable<import("drizzle-orm/mysql-core").TableConfig>>, import("drizzle-orm/mysql2").MySql2QueryResultHKT, false, "where">, "where">;
107
+ /********************************************************************************************************************
108
+ * editByPrimaryKey
109
+ * ******************************************************************************************************************/
110
+ editByPrimaryKey(set: UV, key: PrimaryKeyInput<TTable>): Omit<import("drizzle-orm/mysql-core").MySqlAsyncUpdateBase<import("drizzle-orm").Assume<import("drizzle-orm").Assume<TTable, MySqlTable<import("drizzle-orm/mysql-core").TableConfig>>, MySqlTable<import("drizzle-orm/mysql-core").TableConfig>>, import("drizzle-orm/mysql2").MySql2QueryResultHKT, false, "where">, "where">;
111
+ /********************************************************************************************************************
112
+ * remove
113
+ * ******************************************************************************************************************/
114
+ remove(where: BaseWhere<this>): Omit<import("drizzle-orm/mysql-core").MySqlAsyncDeleteBase<import("drizzle-orm").Assume<TTable, MySqlTable<import("drizzle-orm/mysql-core").TableConfig>>, import("drizzle-orm/mysql2").MySql2QueryResultHKT, false, "where">, "where">;
115
+ /********************************************************************************************************************
116
+ * removeByPrimaryKey
117
+ * ******************************************************************************************************************/
118
+ removeByPrimaryKey(key: PrimaryKeyInput<TTable>): Omit<import("drizzle-orm/mysql-core").MySqlAsyncDeleteBase<import("drizzle-orm").Assume<TTable, MySqlTable<import("drizzle-orm/mysql-core").TableConfig>>, import("drizzle-orm/mysql2").MySql2QueryResultHKT, false, "where">, "where">;
119
+ /********************************************************************************************************************
120
+ * eq
121
+ * ******************************************************************************************************************/
122
+ eq(values: MySqlCompareValues<TTable>): SQL | undefined;
123
+ /********************************************************************************************************************
124
+ * ne
125
+ * ******************************************************************************************************************/
126
+ ne(values: MySqlCompareValues<TTable>): SQL | undefined;
127
+ /********************************************************************************************************************
128
+ * gt
129
+ * ******************************************************************************************************************/
130
+ gt(values: MySqlCompareValues<TTable>): SQL | undefined;
131
+ /********************************************************************************************************************
132
+ * gte
133
+ * ******************************************************************************************************************/
134
+ gte(values: MySqlCompareValues<TTable>): SQL | undefined;
135
+ /********************************************************************************************************************
136
+ * lt
137
+ * ******************************************************************************************************************/
138
+ lt(values: MySqlCompareValues<TTable>): SQL | undefined;
139
+ /********************************************************************************************************************
140
+ * lte
141
+ * ******************************************************************************************************************/
142
+ lte(values: MySqlCompareValues<TTable>): SQL | undefined;
143
+ /********************************************************************************************************************
144
+ * lte
145
+ * ******************************************************************************************************************/
146
+ inArray(values: MySqlArrayCompareValues<TTable>): SQL | undefined;
147
+ /********************************************************************************************************************
148
+ * notInArray
149
+ * ******************************************************************************************************************/
150
+ notInArray(values: MySqlArrayCompareValues<TTable>): SQL | undefined;
151
+ /********************************************************************************************************************
152
+ * between
153
+ * ******************************************************************************************************************/
154
+ between(values: MySqlRangeCompareValues<TTable>): SQL | undefined;
155
+ /********************************************************************************************************************
156
+ * notBetween
157
+ * ******************************************************************************************************************/
158
+ notBetween(values: MySqlRangeCompareValues<TTable>): SQL | undefined;
159
+ /********************************************************************************************************************
160
+ * like
161
+ * ******************************************************************************************************************/
162
+ like(values: MySqlPatternCompareValues<TTable>): SQL | undefined;
163
+ /********************************************************************************************************************
164
+ * notLike
165
+ * ******************************************************************************************************************/
166
+ notLike(values: MySqlPatternCompareValues<TTable>): SQL | undefined;
167
+ /********************************************************************************************************************
168
+ * ilike
169
+ * ******************************************************************************************************************/
170
+ ilike(values: MySqlPatternCompareValues<TTable>): SQL | undefined;
171
+ /********************************************************************************************************************
172
+ * notIlike
173
+ * ******************************************************************************************************************/
174
+ notIlike(values: MySqlPatternCompareValues<TTable>): SQL | undefined;
175
+ /********************************************************************************************************************
176
+ * isNull
177
+ * ******************************************************************************************************************/
178
+ isNull(name: MySqlColumnName<TTable>): SQL;
179
+ isNull(names: MySqlNullConditionInput<TTable>): SQL | undefined;
180
+ /********************************************************************************************************************
181
+ * isNotNull
182
+ * ******************************************************************************************************************/
183
+ isNotNull(name: MySqlColumnName<TTable>): SQL;
184
+ isNotNull(names: MySqlNullConditionInput<TTable>): SQL | undefined;
185
+ /********************************************************************************************************************
186
+ * and
187
+ * ******************************************************************************************************************/
188
+ and(options: MySqlConditions<TTable>): SQL | undefined;
189
+ /********************************************************************************************************************
190
+ * or
191
+ * ******************************************************************************************************************/
192
+ or(options: MySqlConditions<TTable>): SQL | undefined;
193
+ }
194
+ /********************************************************************************************************************
195
+ * types
196
+ * ******************************************************************************************************************/
197
+ type SelectFrom<TTable extends MySqlTable, TSelection extends FieldSet | undefined> = MySqlAsyncSelectBase<GetSelectTableName<TTable>, TSelection extends undefined ? MySqlSelectedTableColumns<TTable> : TSelection, 'partial'>;
198
+ type FindResult<TTable extends MySqlTable, TSelection extends FieldSet | undefined> = Awaited<SelectFrom<TTable, TSelection>>[number] | undefined;
199
+ type WhereQuery<TQuery> = Pick<TQuery, Extract<keyof TQuery, 't' | 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'inArray' | 'notInArray' | 'between' | 'notBetween' | 'like' | 'notLike' | 'ilike' | 'notIlike' | 'isNull' | 'isNotNull' | 'and' | 'or'>>;
200
+ type BaseWhere<TQuery> = SQL | undefined | ((query: WhereQuery<TQuery>) => SQL | undefined);
201
+ type FieldSet = SelectedFields<MySqlColumn, MySqlTable>;
202
+ type FieldInput = FieldSet | false | undefined;
203
+ type FieldsQuery<TTable extends MySqlTable> = {
204
+ readonly t: TTable;
205
+ columns(): MySqlSelectedTableColumns<TTable>;
206
+ columns<N extends MySqlColumnSelectionName<TTable>>(...names: N[] & MySqlColumnSelectionName<TTable>[]): MySqlSelectedNamedColumnUnion<TTable, N>;
207
+ };
208
+ type Fields<TQuery, TSelection> = TSelection | ((query: TQuery) => TSelection);
209
+ type NamedFields<TTable extends MySqlTable, T extends readonly (FieldInput | MySqlColumnSelectionName<TTable>)[]> = {
210
+ [I in keyof T]: T[I] extends MySqlColumnSelectionName<TTable> ? MySqlSelectedNamedColumns<TTable, readonly [T[I]]> : Extract<T[I], FieldInput>;
211
+ };
212
+ type MergeField<First, Result> = First extends FieldSet ? Result extends unknown ? Omit<Result, keyof First> & First : never : Result;
213
+ type MergeFields<T extends readonly FieldInput[], Result = {}> = T extends readonly [
214
+ infer First extends FieldInput,
215
+ ...infer Rest extends readonly FieldInput[]
216
+ ] ? MergeFields<Rest, MergeField<First, Result>> : number extends T['length'] ? Exclude<T[number], false | undefined> : Result extends unknown ? {
217
+ [P in keyof Result]: Result[P];
218
+ } : never;
219
+ type PrimaryKeyNames<T extends MySqlTable> = {
220
+ [P in keyof T['_']['columns']]: T['_']['columns'][P]['_'] extends {
221
+ isPrimaryKey: true;
222
+ } ? P : never;
223
+ }[keyof T['_']['columns']];
224
+ type PrimaryKeyObject<T extends MySqlTable> = {
225
+ [P in PrimaryKeyNames<T>]: T['_']['columns'][P]['_']['data'];
226
+ };
227
+ type IsUnion<T, U = T> = T extends U ? ([U] extends [T] ? false : true) : never;
228
+ type PrimaryKeyInput<T extends MySqlTable> = [PrimaryKeyNames<T>] extends [never] ? never : IsUnion<PrimaryKeyNames<T>> extends true ? PrimaryKeyObject<T> : PrimaryKeyObject<T> | PrimaryKeyObject<T>[PrimaryKeyNames<T>];
229
+ type AutoIncrementKeys<TTable extends MySqlTable> = {
230
+ [P in keyof TTable['_']['columns']]: TTable['_']['columns'][P]['_'] extends {
231
+ isAutoincrement: true;
232
+ } ? P : never;
233
+ }[keyof TTable['_']['columns']];
234
+ type HasAutoIncrement<TTable extends MySqlTable> = [AutoIncrementKeys<TTable>] extends [never] ? false : true;
235
+ type AddResult<TTable extends MySqlTable> = HasAutoIncrement<TTable> extends true ? number : undefined;
236
+ export {};