@pdg/drizzle-mysql 0.0.0-stage → 1.0.0
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.
- package/README.md +371 -2
- package/dist/@types/MySqlConditions.d.cts +20 -0
- package/dist/@types/MySqlConditions.d.ts +20 -0
- package/dist/@types/MySqlInsertValues.d.cts +7 -0
- package/dist/@types/MySqlInsertValues.d.ts +7 -0
- package/dist/@types/MySqlUpdateValues.d.cts +7 -0
- package/dist/@types/MySqlUpdateValues.d.ts +7 -0
- package/dist/@types/common.d.cts +16 -0
- package/dist/@types/common.d.ts +16 -0
- package/dist/@types/index.d.cts +4 -0
- package/dist/@types/index.d.ts +4 -0
- package/dist/MySqlQuery.d.cts +264 -0
- package/dist/MySqlQuery.d.ts +264 -0
- package/dist/alias.d.cts +6 -0
- package/dist/alias.d.ts +6 -0
- package/dist/columns.d.cts +89 -0
- package/dist/columns.d.ts +89 -0
- package/dist/conditions.d.cts +106 -0
- package/dist/conditions.d.ts +106 -0
- package/dist/drizzleMySql.d.cts +166 -0
- package/dist/drizzleMySql.d.ts +166 -0
- package/dist/index.cjs +666 -0
- package/dist/index.d.cts +9 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.esm.js +666 -0
- package/package.json +88 -4
|
@@ -0,0 +1,264 @@
|
|
|
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>, TCreatedAt extends string = 'created_at', TUpdatedAt extends string = 'updated_at', AR = AddResult<TTable>> {
|
|
12
|
+
private readonly current;
|
|
13
|
+
private readonly getTimestamp;
|
|
14
|
+
private readonly timestampColumns;
|
|
15
|
+
readonly t: TTable;
|
|
16
|
+
/********************************************************************************************************************
|
|
17
|
+
* constructor
|
|
18
|
+
* ******************************************************************************************************************/
|
|
19
|
+
constructor(table: TTable, current: () => MySql2Database, getTimestamp: () => any, timestampColumns?: {
|
|
20
|
+
createdAt?: TCreatedAt;
|
|
21
|
+
updatedAt?: TUpdatedAt;
|
|
22
|
+
});
|
|
23
|
+
private readonly drizzle;
|
|
24
|
+
/********************************************************************************************************************
|
|
25
|
+
* (PROTECTED) getTx
|
|
26
|
+
* ******************************************************************************************************************/
|
|
27
|
+
protected getTx(): MySql2Database<import("drizzle-orm").EmptyRelations>;
|
|
28
|
+
/********************************************************************************************************************
|
|
29
|
+
* columns
|
|
30
|
+
* ******************************************************************************************************************/
|
|
31
|
+
columns(): MySqlSelectedTableColumns<TTable>;
|
|
32
|
+
columns<N extends MySqlColumnSelectionName<TTable>>(...names: N[] & MySqlColumnSelectionName<TTable>[]): MySqlSelectedNamedColumnUnion<TTable, N>;
|
|
33
|
+
private resolveFields;
|
|
34
|
+
/********************************************************************************************************************
|
|
35
|
+
* select
|
|
36
|
+
* ******************************************************************************************************************/
|
|
37
|
+
select(): SelectFrom<TTable, undefined>;
|
|
38
|
+
select(fields: readonly []): SelectFrom<TTable, {}>;
|
|
39
|
+
select<N extends MySqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MySqlColumnSelectionName<TTable>[]): SelectFrom<TTable, MySqlSelectedNamedColumns<TTable, readonly N[]>>;
|
|
40
|
+
select<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T): SelectFrom<TTable, MergeFields<T>>;
|
|
41
|
+
select<const T extends readonly FieldInput[] | readonly MySqlColumnSelectionName<TTable>[]>(fields: T & readonly (FieldInput | MySqlColumnSelectionName<TTable>)[]): SelectFrom<TTable, MergeFields<NamedFields<TTable, T>>>;
|
|
42
|
+
select<TSelection extends SelectedFields<MySqlColumn, TTable>>(fields?: Fields<FieldsQuery<TTable>, TSelection>): SelectFrom<TTable, TSelection>;
|
|
43
|
+
select<TAlias extends string>(alias: MySqlAliasTable<TTable, TAlias>): SelectFrom<MySqlAliasTable<TTable, TAlias>, undefined>;
|
|
44
|
+
select<TAlias extends string>(alias: MySqlAliasTable<TTable, TAlias>, fields: readonly []): SelectFrom<MySqlAliasTable<TTable, TAlias>, {}>;
|
|
45
|
+
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[]>>;
|
|
46
|
+
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>>;
|
|
47
|
+
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>>>;
|
|
48
|
+
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>;
|
|
49
|
+
/********************************************************************************************************************
|
|
50
|
+
* find
|
|
51
|
+
* ******************************************************************************************************************/
|
|
52
|
+
find(where: BaseWhere<this>): Promise<FindResult<TTable, undefined>>;
|
|
53
|
+
find(fields: readonly [], where?: BaseWhere<this>): Promise<FindResult<TTable, {}>>;
|
|
54
|
+
find<N extends MySqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MySqlColumnSelectionName<TTable>[], where?: BaseWhere<this>): Promise<FindResult<TTable, MySqlSelectedNamedColumns<TTable, readonly N[]>>>;
|
|
55
|
+
find<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T, where: BaseWhere<this>): Promise<FindResult<TTable, MergeFields<T>>>;
|
|
56
|
+
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>>>>;
|
|
57
|
+
find<TSelection extends SelectedFields<MySqlColumn, TTable>>(fields: Fields<FieldsQuery<TTable>, TSelection>, where: BaseWhere<this>): Promise<FindResult<TTable, TSelection>>;
|
|
58
|
+
find<TAlias extends string>(alias: MySqlAliasTable<TTable, TAlias>, where: BaseWhere<this>): Promise<FindResult<MySqlAliasTable<TTable, TAlias>, undefined>>;
|
|
59
|
+
find<TAlias extends string>(alias: MySqlAliasTable<TTable, TAlias>, fields: readonly [], where?: BaseWhere<this>): Promise<FindResult<MySqlAliasTable<TTable, TAlias>, {}>>;
|
|
60
|
+
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[]>>>;
|
|
61
|
+
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>>>;
|
|
62
|
+
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>>>>;
|
|
63
|
+
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>>;
|
|
64
|
+
/********************************************************************************************************************
|
|
65
|
+
* findByPrimaryKey
|
|
66
|
+
* ******************************************************************************************************************/
|
|
67
|
+
findByPrimaryKey<N extends MySqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MySqlColumnSelectionName<TTable>[], key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, MySqlSelectedNamedColumns<TTable, readonly N[]>>>;
|
|
68
|
+
findByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, undefined>>;
|
|
69
|
+
findByPrimaryKey(fields: readonly [], key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, {}>>;
|
|
70
|
+
findByPrimaryKey<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T, key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, MergeFields<T>>>;
|
|
71
|
+
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>>>>;
|
|
72
|
+
findByPrimaryKey<TSelection extends SelectedFields<MySqlColumn, TTable>>(fields: Fields<FieldsQuery<TTable>, TSelection>, key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, TSelection>>;
|
|
73
|
+
/********************************************************************************************************************
|
|
74
|
+
* primaryKeyCondition
|
|
75
|
+
* ******************************************************************************************************************/
|
|
76
|
+
private primaryKeyCondition;
|
|
77
|
+
/********************************************************************************************************************
|
|
78
|
+
* exists
|
|
79
|
+
* ******************************************************************************************************************/
|
|
80
|
+
exists(where?: BaseWhere<this>): Promise<boolean>;
|
|
81
|
+
/********************************************************************************************************************
|
|
82
|
+
* existsByPrimarykey
|
|
83
|
+
* ******************************************************************************************************************/
|
|
84
|
+
existsByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<boolean>;
|
|
85
|
+
/********************************************************************************************************************
|
|
86
|
+
* notExists
|
|
87
|
+
* ******************************************************************************************************************/
|
|
88
|
+
notExists(where?: BaseWhere<this>): Promise<boolean>;
|
|
89
|
+
/********************************************************************************************************************
|
|
90
|
+
* notExistsByPrimaryKey
|
|
91
|
+
* ******************************************************************************************************************/
|
|
92
|
+
notExistsByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<boolean>;
|
|
93
|
+
/********************************************************************************************************************
|
|
94
|
+
* count
|
|
95
|
+
* ******************************************************************************************************************/
|
|
96
|
+
count(where?: BaseWhere<this>): Promise<number>;
|
|
97
|
+
/********************************************************************************************************************
|
|
98
|
+
* (PRIVATE) insertValues
|
|
99
|
+
* ******************************************************************************************************************/
|
|
100
|
+
private insertValues;
|
|
101
|
+
/********************************************************************************************************************
|
|
102
|
+
* add
|
|
103
|
+
* ******************************************************************************************************************/
|
|
104
|
+
add(value: IV[]): Promise<AR[]>;
|
|
105
|
+
add(value: IV): Promise<AR>;
|
|
106
|
+
/********************************************************************************************************************
|
|
107
|
+
* addWithCreatedAt
|
|
108
|
+
* ******************************************************************************************************************/
|
|
109
|
+
addWithCreatedAt(value: TimestampInput<IV, TCreatedAt, TUpdatedAt>[]): Promise<AR[]>;
|
|
110
|
+
addWithCreatedAt(value: TimestampInput<IV, TCreatedAt, TUpdatedAt>): Promise<AR>;
|
|
111
|
+
/********************************************************************************************************************
|
|
112
|
+
* addWithCreatedUpdatedAt
|
|
113
|
+
* ******************************************************************************************************************/
|
|
114
|
+
addWithCreatedUpdatedAt(value: TimestampInput<IV, TCreatedAt, TUpdatedAt>[]): Promise<AR[]>;
|
|
115
|
+
addWithCreatedUpdatedAt(value: TimestampInput<IV, TCreatedAt, TUpdatedAt>): Promise<AR>;
|
|
116
|
+
/********************************************************************************************************************
|
|
117
|
+
* edit
|
|
118
|
+
* ******************************************************************************************************************/
|
|
119
|
+
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">;
|
|
120
|
+
/********************************************************************************************************************
|
|
121
|
+
* editByPrimaryKey
|
|
122
|
+
* ******************************************************************************************************************/
|
|
123
|
+
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">;
|
|
124
|
+
/********************************************************************************************************************
|
|
125
|
+
* editWithUpdatedAt
|
|
126
|
+
* ******************************************************************************************************************/
|
|
127
|
+
editWithUpdatedAt(set: Omit<UV, TUpdatedAt> & {
|
|
128
|
+
[P in TUpdatedAt]?: never;
|
|
129
|
+
}, 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">;
|
|
130
|
+
/********************************************************************************************************************
|
|
131
|
+
* editWithUpdatedAtByPrimaryKey
|
|
132
|
+
* ******************************************************************************************************************/
|
|
133
|
+
editWithUpdatedAtByPrimaryKey(set: Omit<UV, TUpdatedAt> & {
|
|
134
|
+
[P in TUpdatedAt]?: never;
|
|
135
|
+
}, 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">;
|
|
136
|
+
/********************************************************************************************************************
|
|
137
|
+
* remove
|
|
138
|
+
* ******************************************************************************************************************/
|
|
139
|
+
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">;
|
|
140
|
+
/********************************************************************************************************************
|
|
141
|
+
* removeByPrimaryKey
|
|
142
|
+
* ******************************************************************************************************************/
|
|
143
|
+
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">;
|
|
144
|
+
/********************************************************************************************************************
|
|
145
|
+
* eq
|
|
146
|
+
* ******************************************************************************************************************/
|
|
147
|
+
eq(values: MySqlCompareValues<TTable>): SQL | undefined;
|
|
148
|
+
/********************************************************************************************************************
|
|
149
|
+
* ne
|
|
150
|
+
* ******************************************************************************************************************/
|
|
151
|
+
ne(values: MySqlCompareValues<TTable>): SQL | undefined;
|
|
152
|
+
/********************************************************************************************************************
|
|
153
|
+
* gt
|
|
154
|
+
* ******************************************************************************************************************/
|
|
155
|
+
gt(values: MySqlCompareValues<TTable>): SQL | undefined;
|
|
156
|
+
/********************************************************************************************************************
|
|
157
|
+
* gte
|
|
158
|
+
* ******************************************************************************************************************/
|
|
159
|
+
gte(values: MySqlCompareValues<TTable>): SQL | undefined;
|
|
160
|
+
/********************************************************************************************************************
|
|
161
|
+
* lt
|
|
162
|
+
* ******************************************************************************************************************/
|
|
163
|
+
lt(values: MySqlCompareValues<TTable>): SQL | undefined;
|
|
164
|
+
/********************************************************************************************************************
|
|
165
|
+
* lte
|
|
166
|
+
* ******************************************************************************************************************/
|
|
167
|
+
lte(values: MySqlCompareValues<TTable>): SQL | undefined;
|
|
168
|
+
/********************************************************************************************************************
|
|
169
|
+
* lte
|
|
170
|
+
* ******************************************************************************************************************/
|
|
171
|
+
inArray(values: MySqlArrayCompareValues<TTable>): SQL | undefined;
|
|
172
|
+
/********************************************************************************************************************
|
|
173
|
+
* notInArray
|
|
174
|
+
* ******************************************************************************************************************/
|
|
175
|
+
notInArray(values: MySqlArrayCompareValues<TTable>): SQL | undefined;
|
|
176
|
+
/********************************************************************************************************************
|
|
177
|
+
* between
|
|
178
|
+
* ******************************************************************************************************************/
|
|
179
|
+
between(values: MySqlRangeCompareValues<TTable>): SQL | undefined;
|
|
180
|
+
/********************************************************************************************************************
|
|
181
|
+
* notBetween
|
|
182
|
+
* ******************************************************************************************************************/
|
|
183
|
+
notBetween(values: MySqlRangeCompareValues<TTable>): SQL | undefined;
|
|
184
|
+
/********************************************************************************************************************
|
|
185
|
+
* like
|
|
186
|
+
* ******************************************************************************************************************/
|
|
187
|
+
like(values: MySqlPatternCompareValues<TTable>): SQL | undefined;
|
|
188
|
+
/********************************************************************************************************************
|
|
189
|
+
* notLike
|
|
190
|
+
* ******************************************************************************************************************/
|
|
191
|
+
notLike(values: MySqlPatternCompareValues<TTable>): SQL | undefined;
|
|
192
|
+
/********************************************************************************************************************
|
|
193
|
+
* ilike
|
|
194
|
+
* ******************************************************************************************************************/
|
|
195
|
+
ilike(values: MySqlPatternCompareValues<TTable>): SQL | undefined;
|
|
196
|
+
/********************************************************************************************************************
|
|
197
|
+
* notIlike
|
|
198
|
+
* ******************************************************************************************************************/
|
|
199
|
+
notIlike(values: MySqlPatternCompareValues<TTable>): SQL | undefined;
|
|
200
|
+
/********************************************************************************************************************
|
|
201
|
+
* isNull
|
|
202
|
+
* ******************************************************************************************************************/
|
|
203
|
+
isNull(name: MySqlColumnName<TTable>): SQL;
|
|
204
|
+
isNull(names: MySqlNullConditionInput<TTable>): SQL | undefined;
|
|
205
|
+
/********************************************************************************************************************
|
|
206
|
+
* isNotNull
|
|
207
|
+
* ******************************************************************************************************************/
|
|
208
|
+
isNotNull(name: MySqlColumnName<TTable>): SQL;
|
|
209
|
+
isNotNull(names: MySqlNullConditionInput<TTable>): SQL | undefined;
|
|
210
|
+
/********************************************************************************************************************
|
|
211
|
+
* and
|
|
212
|
+
* ******************************************************************************************************************/
|
|
213
|
+
and(options: MySqlConditions<TTable>): SQL | undefined;
|
|
214
|
+
/********************************************************************************************************************
|
|
215
|
+
* or
|
|
216
|
+
* ******************************************************************************************************************/
|
|
217
|
+
or(options: MySqlConditions<TTable>): SQL | undefined;
|
|
218
|
+
}
|
|
219
|
+
/********************************************************************************************************************
|
|
220
|
+
* types
|
|
221
|
+
* ******************************************************************************************************************/
|
|
222
|
+
type SelectFrom<TTable extends MySqlTable, TSelection extends FieldSet | undefined> = MySqlAsyncSelectBase<GetSelectTableName<TTable>, TSelection extends undefined ? MySqlSelectedTableColumns<TTable> : TSelection, 'partial'>;
|
|
223
|
+
type FindResult<TTable extends MySqlTable, TSelection extends FieldSet | undefined> = Awaited<SelectFrom<TTable, TSelection>>[number] | undefined;
|
|
224
|
+
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'>>;
|
|
225
|
+
type BaseWhere<TQuery> = SQL | undefined | ((query: WhereQuery<TQuery>) => SQL | undefined);
|
|
226
|
+
type FieldSet = SelectedFields<MySqlColumn, MySqlTable>;
|
|
227
|
+
type FieldInput = FieldSet | false | undefined;
|
|
228
|
+
type FieldsQuery<TTable extends MySqlTable> = {
|
|
229
|
+
readonly t: TTable;
|
|
230
|
+
columns(): MySqlSelectedTableColumns<TTable>;
|
|
231
|
+
columns<N extends MySqlColumnSelectionName<TTable>>(...names: N[] & MySqlColumnSelectionName<TTable>[]): MySqlSelectedNamedColumnUnion<TTable, N>;
|
|
232
|
+
};
|
|
233
|
+
type Fields<TQuery, TSelection> = TSelection | ((query: TQuery) => TSelection);
|
|
234
|
+
type NamedFields<TTable extends MySqlTable, T extends readonly (FieldInput | MySqlColumnSelectionName<TTable>)[]> = {
|
|
235
|
+
[I in keyof T]: T[I] extends MySqlColumnSelectionName<TTable> ? MySqlSelectedNamedColumns<TTable, readonly [T[I]]> : Extract<T[I], FieldInput>;
|
|
236
|
+
};
|
|
237
|
+
type MergeField<First, Result> = First extends FieldSet ? Result extends unknown ? Omit<Result, keyof First> & First : never : Result;
|
|
238
|
+
type MergeFields<T extends readonly FieldInput[], Result = {}> = T extends readonly [
|
|
239
|
+
infer First extends FieldInput,
|
|
240
|
+
...infer Rest extends readonly FieldInput[]
|
|
241
|
+
] ? MergeFields<Rest, MergeField<First, Result>> : number extends T['length'] ? Exclude<T[number], false | undefined> : Result extends unknown ? {
|
|
242
|
+
[P in keyof Result]: Result[P];
|
|
243
|
+
} : never;
|
|
244
|
+
type PrimaryKeyNames<T extends MySqlTable> = {
|
|
245
|
+
[P in keyof T['_']['columns']]: T['_']['columns'][P]['_'] extends {
|
|
246
|
+
isPrimaryKey: true;
|
|
247
|
+
} ? P : never;
|
|
248
|
+
}[keyof T['_']['columns']];
|
|
249
|
+
type PrimaryKeyObject<T extends MySqlTable> = {
|
|
250
|
+
[P in PrimaryKeyNames<T>]: T['_']['columns'][P]['_']['data'];
|
|
251
|
+
};
|
|
252
|
+
type IsUnion<T, U = T> = T extends U ? ([U] extends [T] ? false : true) : never;
|
|
253
|
+
type PrimaryKeyInput<T extends MySqlTable> = [PrimaryKeyNames<T>] extends [never] ? never : IsUnion<PrimaryKeyNames<T>> extends true ? PrimaryKeyObject<T> : PrimaryKeyObject<T> | PrimaryKeyObject<T>[PrimaryKeyNames<T>];
|
|
254
|
+
type AutoIncrementKeys<TTable extends MySqlTable> = {
|
|
255
|
+
[P in keyof TTable['_']['columns']]: TTable['_']['columns'][P]['_'] extends {
|
|
256
|
+
isAutoincrement: true;
|
|
257
|
+
} ? P : never;
|
|
258
|
+
}[keyof TTable['_']['columns']];
|
|
259
|
+
type HasAutoIncrement<TTable extends MySqlTable> = [AutoIncrementKeys<TTable>] extends [never] ? false : true;
|
|
260
|
+
type TimestampInput<T, C extends string, U extends string> = Omit<T, C | U> & {
|
|
261
|
+
[P in C | U]?: never;
|
|
262
|
+
};
|
|
263
|
+
type AddResult<TTable extends MySqlTable> = HasAutoIncrement<TTable> extends true ? number : undefined;
|
|
264
|
+
export {};
|
|
@@ -0,0 +1,264 @@
|
|
|
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>, TCreatedAt extends string = 'created_at', TUpdatedAt extends string = 'updated_at', AR = AddResult<TTable>> {
|
|
12
|
+
private readonly current;
|
|
13
|
+
private readonly getTimestamp;
|
|
14
|
+
private readonly timestampColumns;
|
|
15
|
+
readonly t: TTable;
|
|
16
|
+
/********************************************************************************************************************
|
|
17
|
+
* constructor
|
|
18
|
+
* ******************************************************************************************************************/
|
|
19
|
+
constructor(table: TTable, current: () => MySql2Database, getTimestamp: () => any, timestampColumns?: {
|
|
20
|
+
createdAt?: TCreatedAt;
|
|
21
|
+
updatedAt?: TUpdatedAt;
|
|
22
|
+
});
|
|
23
|
+
private readonly drizzle;
|
|
24
|
+
/********************************************************************************************************************
|
|
25
|
+
* (PROTECTED) getTx
|
|
26
|
+
* ******************************************************************************************************************/
|
|
27
|
+
protected getTx(): MySql2Database<import("drizzle-orm").EmptyRelations>;
|
|
28
|
+
/********************************************************************************************************************
|
|
29
|
+
* columns
|
|
30
|
+
* ******************************************************************************************************************/
|
|
31
|
+
columns(): MySqlSelectedTableColumns<TTable>;
|
|
32
|
+
columns<N extends MySqlColumnSelectionName<TTable>>(...names: N[] & MySqlColumnSelectionName<TTable>[]): MySqlSelectedNamedColumnUnion<TTable, N>;
|
|
33
|
+
private resolveFields;
|
|
34
|
+
/********************************************************************************************************************
|
|
35
|
+
* select
|
|
36
|
+
* ******************************************************************************************************************/
|
|
37
|
+
select(): SelectFrom<TTable, undefined>;
|
|
38
|
+
select(fields: readonly []): SelectFrom<TTable, {}>;
|
|
39
|
+
select<N extends MySqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MySqlColumnSelectionName<TTable>[]): SelectFrom<TTable, MySqlSelectedNamedColumns<TTable, readonly N[]>>;
|
|
40
|
+
select<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T): SelectFrom<TTable, MergeFields<T>>;
|
|
41
|
+
select<const T extends readonly FieldInput[] | readonly MySqlColumnSelectionName<TTable>[]>(fields: T & readonly (FieldInput | MySqlColumnSelectionName<TTable>)[]): SelectFrom<TTable, MergeFields<NamedFields<TTable, T>>>;
|
|
42
|
+
select<TSelection extends SelectedFields<MySqlColumn, TTable>>(fields?: Fields<FieldsQuery<TTable>, TSelection>): SelectFrom<TTable, TSelection>;
|
|
43
|
+
select<TAlias extends string>(alias: MySqlAliasTable<TTable, TAlias>): SelectFrom<MySqlAliasTable<TTable, TAlias>, undefined>;
|
|
44
|
+
select<TAlias extends string>(alias: MySqlAliasTable<TTable, TAlias>, fields: readonly []): SelectFrom<MySqlAliasTable<TTable, TAlias>, {}>;
|
|
45
|
+
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[]>>;
|
|
46
|
+
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>>;
|
|
47
|
+
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>>>;
|
|
48
|
+
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>;
|
|
49
|
+
/********************************************************************************************************************
|
|
50
|
+
* find
|
|
51
|
+
* ******************************************************************************************************************/
|
|
52
|
+
find(where: BaseWhere<this>): Promise<FindResult<TTable, undefined>>;
|
|
53
|
+
find(fields: readonly [], where?: BaseWhere<this>): Promise<FindResult<TTable, {}>>;
|
|
54
|
+
find<N extends MySqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MySqlColumnSelectionName<TTable>[], where?: BaseWhere<this>): Promise<FindResult<TTable, MySqlSelectedNamedColumns<TTable, readonly N[]>>>;
|
|
55
|
+
find<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T, where: BaseWhere<this>): Promise<FindResult<TTable, MergeFields<T>>>;
|
|
56
|
+
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>>>>;
|
|
57
|
+
find<TSelection extends SelectedFields<MySqlColumn, TTable>>(fields: Fields<FieldsQuery<TTable>, TSelection>, where: BaseWhere<this>): Promise<FindResult<TTable, TSelection>>;
|
|
58
|
+
find<TAlias extends string>(alias: MySqlAliasTable<TTable, TAlias>, where: BaseWhere<this>): Promise<FindResult<MySqlAliasTable<TTable, TAlias>, undefined>>;
|
|
59
|
+
find<TAlias extends string>(alias: MySqlAliasTable<TTable, TAlias>, fields: readonly [], where?: BaseWhere<this>): Promise<FindResult<MySqlAliasTable<TTable, TAlias>, {}>>;
|
|
60
|
+
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[]>>>;
|
|
61
|
+
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>>>;
|
|
62
|
+
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>>>>;
|
|
63
|
+
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>>;
|
|
64
|
+
/********************************************************************************************************************
|
|
65
|
+
* findByPrimaryKey
|
|
66
|
+
* ******************************************************************************************************************/
|
|
67
|
+
findByPrimaryKey<N extends MySqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MySqlColumnSelectionName<TTable>[], key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, MySqlSelectedNamedColumns<TTable, readonly N[]>>>;
|
|
68
|
+
findByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, undefined>>;
|
|
69
|
+
findByPrimaryKey(fields: readonly [], key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, {}>>;
|
|
70
|
+
findByPrimaryKey<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T, key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, MergeFields<T>>>;
|
|
71
|
+
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>>>>;
|
|
72
|
+
findByPrimaryKey<TSelection extends SelectedFields<MySqlColumn, TTable>>(fields: Fields<FieldsQuery<TTable>, TSelection>, key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, TSelection>>;
|
|
73
|
+
/********************************************************************************************************************
|
|
74
|
+
* primaryKeyCondition
|
|
75
|
+
* ******************************************************************************************************************/
|
|
76
|
+
private primaryKeyCondition;
|
|
77
|
+
/********************************************************************************************************************
|
|
78
|
+
* exists
|
|
79
|
+
* ******************************************************************************************************************/
|
|
80
|
+
exists(where?: BaseWhere<this>): Promise<boolean>;
|
|
81
|
+
/********************************************************************************************************************
|
|
82
|
+
* existsByPrimarykey
|
|
83
|
+
* ******************************************************************************************************************/
|
|
84
|
+
existsByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<boolean>;
|
|
85
|
+
/********************************************************************************************************************
|
|
86
|
+
* notExists
|
|
87
|
+
* ******************************************************************************************************************/
|
|
88
|
+
notExists(where?: BaseWhere<this>): Promise<boolean>;
|
|
89
|
+
/********************************************************************************************************************
|
|
90
|
+
* notExistsByPrimaryKey
|
|
91
|
+
* ******************************************************************************************************************/
|
|
92
|
+
notExistsByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<boolean>;
|
|
93
|
+
/********************************************************************************************************************
|
|
94
|
+
* count
|
|
95
|
+
* ******************************************************************************************************************/
|
|
96
|
+
count(where?: BaseWhere<this>): Promise<number>;
|
|
97
|
+
/********************************************************************************************************************
|
|
98
|
+
* (PRIVATE) insertValues
|
|
99
|
+
* ******************************************************************************************************************/
|
|
100
|
+
private insertValues;
|
|
101
|
+
/********************************************************************************************************************
|
|
102
|
+
* add
|
|
103
|
+
* ******************************************************************************************************************/
|
|
104
|
+
add(value: IV[]): Promise<AR[]>;
|
|
105
|
+
add(value: IV): Promise<AR>;
|
|
106
|
+
/********************************************************************************************************************
|
|
107
|
+
* addWithCreatedAt
|
|
108
|
+
* ******************************************************************************************************************/
|
|
109
|
+
addWithCreatedAt(value: TimestampInput<IV, TCreatedAt, TUpdatedAt>[]): Promise<AR[]>;
|
|
110
|
+
addWithCreatedAt(value: TimestampInput<IV, TCreatedAt, TUpdatedAt>): Promise<AR>;
|
|
111
|
+
/********************************************************************************************************************
|
|
112
|
+
* addWithCreatedUpdatedAt
|
|
113
|
+
* ******************************************************************************************************************/
|
|
114
|
+
addWithCreatedUpdatedAt(value: TimestampInput<IV, TCreatedAt, TUpdatedAt>[]): Promise<AR[]>;
|
|
115
|
+
addWithCreatedUpdatedAt(value: TimestampInput<IV, TCreatedAt, TUpdatedAt>): Promise<AR>;
|
|
116
|
+
/********************************************************************************************************************
|
|
117
|
+
* edit
|
|
118
|
+
* ******************************************************************************************************************/
|
|
119
|
+
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">;
|
|
120
|
+
/********************************************************************************************************************
|
|
121
|
+
* editByPrimaryKey
|
|
122
|
+
* ******************************************************************************************************************/
|
|
123
|
+
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">;
|
|
124
|
+
/********************************************************************************************************************
|
|
125
|
+
* editWithUpdatedAt
|
|
126
|
+
* ******************************************************************************************************************/
|
|
127
|
+
editWithUpdatedAt(set: Omit<UV, TUpdatedAt> & {
|
|
128
|
+
[P in TUpdatedAt]?: never;
|
|
129
|
+
}, 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">;
|
|
130
|
+
/********************************************************************************************************************
|
|
131
|
+
* editWithUpdatedAtByPrimaryKey
|
|
132
|
+
* ******************************************************************************************************************/
|
|
133
|
+
editWithUpdatedAtByPrimaryKey(set: Omit<UV, TUpdatedAt> & {
|
|
134
|
+
[P in TUpdatedAt]?: never;
|
|
135
|
+
}, 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">;
|
|
136
|
+
/********************************************************************************************************************
|
|
137
|
+
* remove
|
|
138
|
+
* ******************************************************************************************************************/
|
|
139
|
+
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">;
|
|
140
|
+
/********************************************************************************************************************
|
|
141
|
+
* removeByPrimaryKey
|
|
142
|
+
* ******************************************************************************************************************/
|
|
143
|
+
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">;
|
|
144
|
+
/********************************************************************************************************************
|
|
145
|
+
* eq
|
|
146
|
+
* ******************************************************************************************************************/
|
|
147
|
+
eq(values: MySqlCompareValues<TTable>): SQL | undefined;
|
|
148
|
+
/********************************************************************************************************************
|
|
149
|
+
* ne
|
|
150
|
+
* ******************************************************************************************************************/
|
|
151
|
+
ne(values: MySqlCompareValues<TTable>): SQL | undefined;
|
|
152
|
+
/********************************************************************************************************************
|
|
153
|
+
* gt
|
|
154
|
+
* ******************************************************************************************************************/
|
|
155
|
+
gt(values: MySqlCompareValues<TTable>): SQL | undefined;
|
|
156
|
+
/********************************************************************************************************************
|
|
157
|
+
* gte
|
|
158
|
+
* ******************************************************************************************************************/
|
|
159
|
+
gte(values: MySqlCompareValues<TTable>): SQL | undefined;
|
|
160
|
+
/********************************************************************************************************************
|
|
161
|
+
* lt
|
|
162
|
+
* ******************************************************************************************************************/
|
|
163
|
+
lt(values: MySqlCompareValues<TTable>): SQL | undefined;
|
|
164
|
+
/********************************************************************************************************************
|
|
165
|
+
* lte
|
|
166
|
+
* ******************************************************************************************************************/
|
|
167
|
+
lte(values: MySqlCompareValues<TTable>): SQL | undefined;
|
|
168
|
+
/********************************************************************************************************************
|
|
169
|
+
* lte
|
|
170
|
+
* ******************************************************************************************************************/
|
|
171
|
+
inArray(values: MySqlArrayCompareValues<TTable>): SQL | undefined;
|
|
172
|
+
/********************************************************************************************************************
|
|
173
|
+
* notInArray
|
|
174
|
+
* ******************************************************************************************************************/
|
|
175
|
+
notInArray(values: MySqlArrayCompareValues<TTable>): SQL | undefined;
|
|
176
|
+
/********************************************************************************************************************
|
|
177
|
+
* between
|
|
178
|
+
* ******************************************************************************************************************/
|
|
179
|
+
between(values: MySqlRangeCompareValues<TTable>): SQL | undefined;
|
|
180
|
+
/********************************************************************************************************************
|
|
181
|
+
* notBetween
|
|
182
|
+
* ******************************************************************************************************************/
|
|
183
|
+
notBetween(values: MySqlRangeCompareValues<TTable>): SQL | undefined;
|
|
184
|
+
/********************************************************************************************************************
|
|
185
|
+
* like
|
|
186
|
+
* ******************************************************************************************************************/
|
|
187
|
+
like(values: MySqlPatternCompareValues<TTable>): SQL | undefined;
|
|
188
|
+
/********************************************************************************************************************
|
|
189
|
+
* notLike
|
|
190
|
+
* ******************************************************************************************************************/
|
|
191
|
+
notLike(values: MySqlPatternCompareValues<TTable>): SQL | undefined;
|
|
192
|
+
/********************************************************************************************************************
|
|
193
|
+
* ilike
|
|
194
|
+
* ******************************************************************************************************************/
|
|
195
|
+
ilike(values: MySqlPatternCompareValues<TTable>): SQL | undefined;
|
|
196
|
+
/********************************************************************************************************************
|
|
197
|
+
* notIlike
|
|
198
|
+
* ******************************************************************************************************************/
|
|
199
|
+
notIlike(values: MySqlPatternCompareValues<TTable>): SQL | undefined;
|
|
200
|
+
/********************************************************************************************************************
|
|
201
|
+
* isNull
|
|
202
|
+
* ******************************************************************************************************************/
|
|
203
|
+
isNull(name: MySqlColumnName<TTable>): SQL;
|
|
204
|
+
isNull(names: MySqlNullConditionInput<TTable>): SQL | undefined;
|
|
205
|
+
/********************************************************************************************************************
|
|
206
|
+
* isNotNull
|
|
207
|
+
* ******************************************************************************************************************/
|
|
208
|
+
isNotNull(name: MySqlColumnName<TTable>): SQL;
|
|
209
|
+
isNotNull(names: MySqlNullConditionInput<TTable>): SQL | undefined;
|
|
210
|
+
/********************************************************************************************************************
|
|
211
|
+
* and
|
|
212
|
+
* ******************************************************************************************************************/
|
|
213
|
+
and(options: MySqlConditions<TTable>): SQL | undefined;
|
|
214
|
+
/********************************************************************************************************************
|
|
215
|
+
* or
|
|
216
|
+
* ******************************************************************************************************************/
|
|
217
|
+
or(options: MySqlConditions<TTable>): SQL | undefined;
|
|
218
|
+
}
|
|
219
|
+
/********************************************************************************************************************
|
|
220
|
+
* types
|
|
221
|
+
* ******************************************************************************************************************/
|
|
222
|
+
type SelectFrom<TTable extends MySqlTable, TSelection extends FieldSet | undefined> = MySqlAsyncSelectBase<GetSelectTableName<TTable>, TSelection extends undefined ? MySqlSelectedTableColumns<TTable> : TSelection, 'partial'>;
|
|
223
|
+
type FindResult<TTable extends MySqlTable, TSelection extends FieldSet | undefined> = Awaited<SelectFrom<TTable, TSelection>>[number] | undefined;
|
|
224
|
+
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'>>;
|
|
225
|
+
type BaseWhere<TQuery> = SQL | undefined | ((query: WhereQuery<TQuery>) => SQL | undefined);
|
|
226
|
+
type FieldSet = SelectedFields<MySqlColumn, MySqlTable>;
|
|
227
|
+
type FieldInput = FieldSet | false | undefined;
|
|
228
|
+
type FieldsQuery<TTable extends MySqlTable> = {
|
|
229
|
+
readonly t: TTable;
|
|
230
|
+
columns(): MySqlSelectedTableColumns<TTable>;
|
|
231
|
+
columns<N extends MySqlColumnSelectionName<TTable>>(...names: N[] & MySqlColumnSelectionName<TTable>[]): MySqlSelectedNamedColumnUnion<TTable, N>;
|
|
232
|
+
};
|
|
233
|
+
type Fields<TQuery, TSelection> = TSelection | ((query: TQuery) => TSelection);
|
|
234
|
+
type NamedFields<TTable extends MySqlTable, T extends readonly (FieldInput | MySqlColumnSelectionName<TTable>)[]> = {
|
|
235
|
+
[I in keyof T]: T[I] extends MySqlColumnSelectionName<TTable> ? MySqlSelectedNamedColumns<TTable, readonly [T[I]]> : Extract<T[I], FieldInput>;
|
|
236
|
+
};
|
|
237
|
+
type MergeField<First, Result> = First extends FieldSet ? Result extends unknown ? Omit<Result, keyof First> & First : never : Result;
|
|
238
|
+
type MergeFields<T extends readonly FieldInput[], Result = {}> = T extends readonly [
|
|
239
|
+
infer First extends FieldInput,
|
|
240
|
+
...infer Rest extends readonly FieldInput[]
|
|
241
|
+
] ? MergeFields<Rest, MergeField<First, Result>> : number extends T['length'] ? Exclude<T[number], false | undefined> : Result extends unknown ? {
|
|
242
|
+
[P in keyof Result]: Result[P];
|
|
243
|
+
} : never;
|
|
244
|
+
type PrimaryKeyNames<T extends MySqlTable> = {
|
|
245
|
+
[P in keyof T['_']['columns']]: T['_']['columns'][P]['_'] extends {
|
|
246
|
+
isPrimaryKey: true;
|
|
247
|
+
} ? P : never;
|
|
248
|
+
}[keyof T['_']['columns']];
|
|
249
|
+
type PrimaryKeyObject<T extends MySqlTable> = {
|
|
250
|
+
[P in PrimaryKeyNames<T>]: T['_']['columns'][P]['_']['data'];
|
|
251
|
+
};
|
|
252
|
+
type IsUnion<T, U = T> = T extends U ? ([U] extends [T] ? false : true) : never;
|
|
253
|
+
type PrimaryKeyInput<T extends MySqlTable> = [PrimaryKeyNames<T>] extends [never] ? never : IsUnion<PrimaryKeyNames<T>> extends true ? PrimaryKeyObject<T> : PrimaryKeyObject<T> | PrimaryKeyObject<T>[PrimaryKeyNames<T>];
|
|
254
|
+
type AutoIncrementKeys<TTable extends MySqlTable> = {
|
|
255
|
+
[P in keyof TTable['_']['columns']]: TTable['_']['columns'][P]['_'] extends {
|
|
256
|
+
isAutoincrement: true;
|
|
257
|
+
} ? P : never;
|
|
258
|
+
}[keyof TTable['_']['columns']];
|
|
259
|
+
type HasAutoIncrement<TTable extends MySqlTable> = [AutoIncrementKeys<TTable>] extends [never] ? false : true;
|
|
260
|
+
type TimestampInput<T, C extends string, U extends string> = Omit<T, C | U> & {
|
|
261
|
+
[P in C | U]?: never;
|
|
262
|
+
};
|
|
263
|
+
type AddResult<TTable extends MySqlTable> = HasAutoIncrement<TTable> extends true ? number : undefined;
|
|
264
|
+
export {};
|