@pdg/drizzle-mssql 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.
@@ -0,0 +1,259 @@
1
+ import { SQL } from 'drizzle-orm';
2
+ import { MsSqlTable, MsSqlColumn, type MsSqlSelectBase } from 'drizzle-orm/mssql-core';
3
+ import type { SelectedFields } from 'drizzle-orm/operations';
4
+ import type { GetSelectTableName } from 'drizzle-orm/query-builders/select.types';
5
+ import type { MsSqlColumnSelectionName, MsSqlSelectedNamedColumnUnion, MsSqlSelectedNamedColumns, MsSqlSelectedTableColumns, MsSqlAliasTable } from './columns.cjs';
6
+ import { type TableMutationPolicy } from './mssqlTable.cjs';
7
+ import type { MsSqlInsertValues, MsSqlUpdateValues, MsSqlCompareValues, MsSqlColumnName, MsSqlArrayCompareValues, MsSqlRangeCompareValues, MsSqlPatternCompareValues, MsSqlNullConditionInput, MsSqlConditions } from './@types/index.cjs';
8
+ import type { NodeMsSqlDatabase, NodeMsSqlPreparedQueryHKT } from 'drizzle-orm/node-mssql';
9
+ /********************************************************************************************************************
10
+ * MsSqlQuery
11
+ * ******************************************************************************************************************/
12
+ export declare class MsSqlQuery<TTable extends MsSqlTable, IV extends MsSqlInsertValues<TTable> = MsSqlInsertValues<TTable>, UV extends MsSqlUpdateValues<TTable> = MsSqlUpdateValues<TTable>, AR = AddResult<TTable>> {
13
+ private readonly current;
14
+ private readonly getTimestamp?;
15
+ readonly t: TTable;
16
+ /********************************************************************************************************************
17
+ * constructor
18
+ * ******************************************************************************************************************/
19
+ constructor(table: TTable, current: (() => NodeMsSqlDatabase) & {
20
+ getTimestamp?: () => unknown;
21
+ }, getTimestamp?: (() => unknown) | undefined);
22
+ private readonly drizzle;
23
+ /********************************************************************************************************************
24
+ * (PROTECTED) getTx
25
+ * ******************************************************************************************************************/
26
+ protected getTx(): NodeMsSqlDatabase;
27
+ /********************************************************************************************************************
28
+ * columns
29
+ * ******************************************************************************************************************/
30
+ columns(): MsSqlSelectedTableColumns<TTable>;
31
+ columns<N extends MsSqlColumnSelectionName<TTable>>(...names: N[] & MsSqlColumnSelectionName<TTable>[]): MsSqlSelectedNamedColumnUnion<TTable, N>;
32
+ private resolveFields;
33
+ /********************************************************************************************************************
34
+ * select
35
+ * ******************************************************************************************************************/
36
+ select(): SelectFrom<TTable, undefined>;
37
+ select(fields: readonly []): SelectFrom<TTable, {}>;
38
+ select<N extends MsSqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MsSqlColumnSelectionName<TTable>[]): SelectFrom<TTable, MsSqlSelectedNamedColumns<TTable, readonly N[]>>;
39
+ select<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T): SelectFrom<TTable, MergeFields<T>>;
40
+ select<const T extends readonly FieldInput[] | readonly MsSqlColumnSelectionName<TTable>[]>(fields: T & readonly (FieldInput | MsSqlColumnSelectionName<TTable>)[]): SelectFrom<TTable, MergeFields<NamedFields<TTable, T>>>;
41
+ select<TSelection extends SelectedFields<MsSqlColumn, TTable>>(fields?: Fields<FieldsQuery<TTable>, TSelection>): SelectFrom<TTable, TSelection>;
42
+ select<TAlias extends string>(alias: MsSqlAliasTable<TTable, TAlias>): SelectFrom<MsSqlAliasTable<TTable, TAlias>, undefined>;
43
+ select<TAlias extends string>(alias: MsSqlAliasTable<TTable, TAlias>, fields: readonly []): SelectFrom<MsSqlAliasTable<TTable, TAlias>, {}>;
44
+ select<TAlias extends string, N extends MsSqlColumnSelectionName<MsSqlAliasTable<TTable, TAlias>>>(alias: MsSqlAliasTable<TTable, TAlias>, fields: readonly N[] & readonly MsSqlColumnSelectionName<MsSqlAliasTable<TTable, TAlias>>[]): SelectFrom<MsSqlAliasTable<TTable, TAlias>, MsSqlSelectedNamedColumns<MsSqlAliasTable<TTable, TAlias>, readonly N[]>>;
45
+ select<TAlias extends string, const T extends readonly FieldInput[]>(alias: MsSqlAliasTable<TTable, TAlias>, fields: (query: FieldsQuery<MsSqlAliasTable<TTable, TAlias>>) => T): SelectFrom<MsSqlAliasTable<TTable, TAlias>, MergeFields<T>>;
46
+ select<TAlias extends string, const T extends readonly FieldInput[] | readonly MsSqlColumnSelectionName<MsSqlAliasTable<TTable, TAlias>>[]>(alias: MsSqlAliasTable<TTable, TAlias>, fields: T & readonly (FieldInput | MsSqlColumnSelectionName<MsSqlAliasTable<TTable, TAlias>>)[]): SelectFrom<MsSqlAliasTable<TTable, TAlias>, MergeFields<NamedFields<MsSqlAliasTable<TTable, TAlias>, T>>>;
47
+ select<TAlias extends string, TSelection extends SelectedFields<MsSqlColumn, MsSqlAliasTable<TTable, TAlias>>>(alias: MsSqlAliasTable<TTable, TAlias>, fields: Fields<FieldsQuery<MsSqlAliasTable<TTable, TAlias>>, TSelection>): SelectFrom<MsSqlAliasTable<TTable, TAlias>, TSelection>;
48
+ /********************************************************************************************************************
49
+ * find
50
+ * ******************************************************************************************************************/
51
+ find(where: BaseWhere<this>): Promise<FindResult<TTable, undefined>>;
52
+ find(fields: readonly [], where?: BaseWhere<this>): Promise<FindResult<TTable, {}>>;
53
+ find<N extends MsSqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MsSqlColumnSelectionName<TTable>[], where?: BaseWhere<this>): Promise<FindResult<TTable, MsSqlSelectedNamedColumns<TTable, readonly N[]>>>;
54
+ find<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T, where: BaseWhere<this>): Promise<FindResult<TTable, MergeFields<T>>>;
55
+ find<const T extends readonly FieldInput[] | readonly MsSqlColumnSelectionName<TTable>[]>(fields: T & readonly (FieldInput | MsSqlColumnSelectionName<TTable>)[], where: BaseWhere<this>): Promise<FindResult<TTable, MergeFields<NamedFields<TTable, T>>>>;
56
+ find<TSelection extends SelectedFields<MsSqlColumn, TTable>>(fields: Fields<FieldsQuery<TTable>, TSelection>, where: BaseWhere<this>): Promise<FindResult<TTable, TSelection>>;
57
+ find<TAlias extends string>(alias: MsSqlAliasTable<TTable, TAlias>, where: BaseWhere<this>): Promise<FindResult<MsSqlAliasTable<TTable, TAlias>, undefined>>;
58
+ find<TAlias extends string>(alias: MsSqlAliasTable<TTable, TAlias>, fields: readonly [], where?: BaseWhere<this>): Promise<FindResult<MsSqlAliasTable<TTable, TAlias>, {}>>;
59
+ find<TAlias extends string, N extends MsSqlColumnSelectionName<MsSqlAliasTable<TTable, TAlias>>>(alias: MsSqlAliasTable<TTable, TAlias>, fields: readonly N[] & readonly MsSqlColumnSelectionName<MsSqlAliasTable<TTable, TAlias>>[], where?: BaseWhere<this>): Promise<FindResult<MsSqlAliasTable<TTable, TAlias>, MsSqlSelectedNamedColumns<MsSqlAliasTable<TTable, TAlias>, readonly N[]>>>;
60
+ find<TAlias extends string, const T extends readonly FieldInput[]>(alias: MsSqlAliasTable<TTable, TAlias>, fields: (query: FieldsQuery<MsSqlAliasTable<TTable, TAlias>>) => T, where: BaseWhere<this>): Promise<FindResult<MsSqlAliasTable<TTable, TAlias>, MergeFields<T>>>;
61
+ find<TAlias extends string, const T extends readonly FieldInput[] | readonly MsSqlColumnSelectionName<MsSqlAliasTable<TTable, TAlias>>[]>(alias: MsSqlAliasTable<TTable, TAlias>, fields: T & readonly (FieldInput | MsSqlColumnSelectionName<MsSqlAliasTable<TTable, TAlias>>)[], where: BaseWhere<this>): Promise<FindResult<MsSqlAliasTable<TTable, TAlias>, MergeFields<NamedFields<MsSqlAliasTable<TTable, TAlias>, T>>>>;
62
+ find<TAlias extends string, TSelection extends SelectedFields<MsSqlColumn, MsSqlAliasTable<TTable, TAlias>>>(alias: MsSqlAliasTable<TTable, TAlias>, fields: Fields<FieldsQuery<MsSqlAliasTable<TTable, TAlias>>, TSelection>, where: BaseWhere<this>): Promise<FindResult<MsSqlAliasTable<TTable, TAlias>, TSelection>>;
63
+ /********************************************************************************************************************
64
+ * findByPrimaryKey
65
+ * ******************************************************************************************************************/
66
+ findByPrimaryKey<N extends MsSqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MsSqlColumnSelectionName<TTable>[], key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, MsSqlSelectedNamedColumns<TTable, readonly N[]>>>;
67
+ findByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, undefined>>;
68
+ findByPrimaryKey(fields: readonly [], key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, {}>>;
69
+ findByPrimaryKey<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T, key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, MergeFields<T>>>;
70
+ findByPrimaryKey<const T extends readonly FieldInput[] | readonly MsSqlColumnSelectionName<TTable>[]>(fields: T & readonly (FieldInput | MsSqlColumnSelectionName<TTable>)[], key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, MergeFields<NamedFields<TTable, T>>>>;
71
+ findByPrimaryKey<TSelection extends SelectedFields<MsSqlColumn, TTable>>(fields: Fields<FieldsQuery<TTable>, TSelection>, key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, TSelection>>;
72
+ /********************************************************************************************************************
73
+ * primaryKeyCondition
74
+ * ******************************************************************************************************************/
75
+ private primaryKeyCondition;
76
+ /********************************************************************************************************************
77
+ * exists
78
+ * ******************************************************************************************************************/
79
+ exists(where?: BaseWhere<this>): Promise<boolean>;
80
+ /********************************************************************************************************************
81
+ * existsByPrimarykey
82
+ * ******************************************************************************************************************/
83
+ existsByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<boolean>;
84
+ /********************************************************************************************************************
85
+ * notExists
86
+ * ******************************************************************************************************************/
87
+ notExists(where?: BaseWhere<this>): Promise<boolean>;
88
+ /********************************************************************************************************************
89
+ * notExistsByPrimaryKey
90
+ * ******************************************************************************************************************/
91
+ notExistsByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<boolean>;
92
+ /********************************************************************************************************************
93
+ * count
94
+ * ******************************************************************************************************************/
95
+ count(where?: BaseWhere<this>): Promise<number>;
96
+ private prepareValues;
97
+ /********************************************************************************************************************
98
+ * (PRIVATE) executeInsert
99
+ * ******************************************************************************************************************/
100
+ private executeInsert;
101
+ /********************************************************************************************************************
102
+ * insertValues
103
+ * ******************************************************************************************************************/
104
+ insertValues(values: IV[]): IV[];
105
+ insertValues(values: IV): IV;
106
+ /********************************************************************************************************************
107
+ * updateValues
108
+ * ******************************************************************************************************************/
109
+ updateValues(values: UV): UV;
110
+ /********************************************************************************************************************
111
+ * add
112
+ * ******************************************************************************************************************/
113
+ add(value: IV[]): Promise<AR[]>;
114
+ add(value: IV): Promise<AR>;
115
+ /********************************************************************************************************************
116
+ * edit
117
+ * ******************************************************************************************************************/
118
+ edit(this: this & (TableMutationPolicy<TTable> extends {
119
+ updateBlocked: true;
120
+ } ? never : unknown), set: UV, where: BaseWhere<this>): Omit<import("drizzle-orm/mssql-core").MsSqlUpdateBase<TTable, import("drizzle-orm/node-mssql").NodeMsSqlQueryResultHKT, NodeMsSqlPreparedQueryHKT, undefined, false, "where">, "where">;
121
+ /********************************************************************************************************************
122
+ * editByPrimaryKey
123
+ * ******************************************************************************************************************/
124
+ editByPrimaryKey(this: this & (TableMutationPolicy<TTable> extends {
125
+ updateBlocked: true;
126
+ } ? never : unknown), set: UV, key: PrimaryKeyInput<TTable>): Omit<import("drizzle-orm/mssql-core").MsSqlUpdateBase<TTable, import("drizzle-orm/node-mssql").NodeMsSqlQueryResultHKT, NodeMsSqlPreparedQueryHKT, undefined, false, "where">, "where">;
127
+ /********************************************************************************************************************
128
+ * remove
129
+ * ******************************************************************************************************************/
130
+ remove(this: this & (TableMutationPolicy<TTable> extends {
131
+ deleteBlocked: true;
132
+ } ? never : unknown), where: BaseWhere<this>): Omit<import("drizzle-orm/mssql-core").MsSqlDeleteBase<TTable, import("drizzle-orm/node-mssql").NodeMsSqlQueryResultHKT, NodeMsSqlPreparedQueryHKT, undefined, false, "where">, "where">;
133
+ /********************************************************************************************************************
134
+ * removeByPrimaryKey
135
+ * ******************************************************************************************************************/
136
+ removeByPrimaryKey(this: this & (TableMutationPolicy<TTable> extends {
137
+ deleteBlocked: true;
138
+ } ? never : unknown), key: PrimaryKeyInput<TTable>): Omit<import("drizzle-orm/mssql-core").MsSqlDeleteBase<TTable, import("drizzle-orm/node-mssql").NodeMsSqlQueryResultHKT, NodeMsSqlPreparedQueryHKT, undefined, false, "where">, "where">;
139
+ private assertMutationAllowed;
140
+ /********************************************************************************************************************
141
+ * eq
142
+ * ******************************************************************************************************************/
143
+ eq(values: MsSqlCompareValues<TTable>): SQL | undefined;
144
+ /********************************************************************************************************************
145
+ * ne
146
+ * ******************************************************************************************************************/
147
+ ne(values: MsSqlCompareValues<TTable>): SQL | undefined;
148
+ /********************************************************************************************************************
149
+ * gt
150
+ * ******************************************************************************************************************/
151
+ gt(values: MsSqlCompareValues<TTable>): SQL | undefined;
152
+ /********************************************************************************************************************
153
+ * gte
154
+ * ******************************************************************************************************************/
155
+ gte(values: MsSqlCompareValues<TTable>): SQL | undefined;
156
+ /********************************************************************************************************************
157
+ * lt
158
+ * ******************************************************************************************************************/
159
+ lt(values: MsSqlCompareValues<TTable>): SQL | undefined;
160
+ /********************************************************************************************************************
161
+ * lte
162
+ * ******************************************************************************************************************/
163
+ lte(values: MsSqlCompareValues<TTable>): SQL | undefined;
164
+ /********************************************************************************************************************
165
+ * lte
166
+ * ******************************************************************************************************************/
167
+ inArray(values: MsSqlArrayCompareValues<TTable>): SQL | undefined;
168
+ /********************************************************************************************************************
169
+ * notInArray
170
+ * ******************************************************************************************************************/
171
+ notInArray(values: MsSqlArrayCompareValues<TTable>): SQL | undefined;
172
+ /********************************************************************************************************************
173
+ * between
174
+ * ******************************************************************************************************************/
175
+ between(values: MsSqlRangeCompareValues<TTable>): SQL | undefined;
176
+ /********************************************************************************************************************
177
+ * notBetween
178
+ * ******************************************************************************************************************/
179
+ notBetween(values: MsSqlRangeCompareValues<TTable>): SQL | undefined;
180
+ /********************************************************************************************************************
181
+ * like
182
+ * ******************************************************************************************************************/
183
+ like(values: MsSqlPatternCompareValues<TTable>): SQL | undefined;
184
+ /********************************************************************************************************************
185
+ * notLike
186
+ * ******************************************************************************************************************/
187
+ notLike(values: MsSqlPatternCompareValues<TTable>): SQL | undefined;
188
+ /********************************************************************************************************************
189
+ * ilike
190
+ * ******************************************************************************************************************/
191
+ ilike(values: MsSqlPatternCompareValues<TTable>): SQL | undefined;
192
+ /********************************************************************************************************************
193
+ * notIlike
194
+ * ******************************************************************************************************************/
195
+ notIlike(values: MsSqlPatternCompareValues<TTable>): SQL | undefined;
196
+ /********************************************************************************************************************
197
+ * isNull
198
+ * ******************************************************************************************************************/
199
+ isNull(name: MsSqlColumnName<TTable>): SQL;
200
+ isNull(names: MsSqlNullConditionInput<TTable>): SQL | undefined;
201
+ /********************************************************************************************************************
202
+ * isNotNull
203
+ * ******************************************************************************************************************/
204
+ isNotNull(name: MsSqlColumnName<TTable>): SQL;
205
+ isNotNull(names: MsSqlNullConditionInput<TTable>): SQL | undefined;
206
+ /********************************************************************************************************************
207
+ * and
208
+ * ******************************************************************************************************************/
209
+ and(options: MsSqlConditions<TTable>): SQL | undefined;
210
+ /********************************************************************************************************************
211
+ * or
212
+ * ******************************************************************************************************************/
213
+ or(options: MsSqlConditions<TTable>): SQL | undefined;
214
+ }
215
+ /********************************************************************************************************************
216
+ * types
217
+ * ******************************************************************************************************************/
218
+ type SelectFrom<TTable extends MsSqlTable, TSelection extends FieldSet | undefined> = MsSqlSelectBase<GetSelectTableName<TTable>, TSelection extends undefined ? MsSqlSelectedTableColumns<TTable> : TSelection, 'partial', NodeMsSqlPreparedQueryHKT, 'from'>;
219
+ type FindResult<TTable extends MsSqlTable, TSelection extends FieldSet | undefined> = Awaited<SelectFrom<TTable, TSelection>>[number] | undefined;
220
+ 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'>>;
221
+ type BaseWhere<TQuery> = SQL | undefined | ((query: WhereQuery<TQuery>) => SQL | undefined);
222
+ type FieldSet = SelectedFields<MsSqlColumn, MsSqlTable>;
223
+ type FieldInput = FieldSet | false | undefined;
224
+ type FieldsQuery<TTable extends MsSqlTable> = {
225
+ readonly t: TTable;
226
+ columns(): MsSqlSelectedTableColumns<TTable>;
227
+ columns<N extends MsSqlColumnSelectionName<TTable>>(...names: N[] & MsSqlColumnSelectionName<TTable>[]): MsSqlSelectedNamedColumnUnion<TTable, N>;
228
+ };
229
+ type Fields<TQuery, TSelection> = TSelection | ((query: TQuery) => TSelection);
230
+ type NamedFields<TTable extends MsSqlTable, T extends readonly (FieldInput | MsSqlColumnSelectionName<TTable>)[]> = {
231
+ [I in keyof T]: T[I] extends MsSqlColumnSelectionName<TTable> ? MsSqlSelectedNamedColumns<TTable, readonly [T[I]]> : Extract<T[I], FieldInput>;
232
+ };
233
+ type MergeField<First, Result> = First extends FieldSet ? Result extends unknown ? Omit<Result, keyof First> & First : never : Result;
234
+ type MergeFields<T extends readonly FieldInput[], Result = {}> = T extends readonly [
235
+ infer First extends FieldInput,
236
+ ...infer Rest extends readonly FieldInput[]
237
+ ] ? MergeFields<Rest, MergeField<First, Result>> : number extends T['length'] ? Exclude<T[number], false | undefined> : Result extends unknown ? {
238
+ [P in keyof Result]: Result[P];
239
+ } : never;
240
+ type PrimaryKeyNames<T extends MsSqlTable> = {
241
+ [P in keyof T['_']['columns']]: T['_']['columns'][P]['_'] extends {
242
+ isPrimaryKey: true;
243
+ } ? P : never;
244
+ }[keyof T['_']['columns']];
245
+ type PrimaryKeyObject<T extends MsSqlTable> = {
246
+ [P in PrimaryKeyNames<T>]: T['_']['columns'][P]['_']['data'];
247
+ };
248
+ type IsUnion<T, U = T> = T extends U ? ([U] extends [T] ? false : true) : never;
249
+ type PrimaryKeyInput<T extends MsSqlTable> = [PrimaryKeyNames<T>] extends [never] ? Partial<{
250
+ [P in keyof T['_']['columns']]: T['_']['columns'][P]['_']['data'];
251
+ }> : IsUnion<PrimaryKeyNames<T>> extends true ? PrimaryKeyObject<T> : PrimaryKeyObject<T> | PrimaryKeyObject<T>[PrimaryKeyNames<T>];
252
+ type AutoIncrementKeys<TTable extends MsSqlTable> = {
253
+ [P in keyof TTable['_']['columns']]: TTable['_']['columns'][P]['_'] extends {
254
+ generated: infer G;
255
+ } ? undefined extends G ? never : keyof G extends never ? P : never : never;
256
+ }[keyof TTable['_']['columns']];
257
+ type HasAutoIncrement<TTable extends MsSqlTable> = [AutoIncrementKeys<TTable>] extends [never] ? false : true;
258
+ type AddResult<TTable extends MsSqlTable> = HasAutoIncrement<TTable> extends true ? TTable['_']['columns'][AutoIncrementKeys<TTable>]['_']['data'] : undefined;
259
+ export {};
@@ -0,0 +1,259 @@
1
+ import { SQL } from 'drizzle-orm';
2
+ import { MsSqlTable, MsSqlColumn, type MsSqlSelectBase } from 'drizzle-orm/mssql-core';
3
+ import type { SelectedFields } from 'drizzle-orm/operations';
4
+ import type { GetSelectTableName } from 'drizzle-orm/query-builders/select.types';
5
+ import type { MsSqlColumnSelectionName, MsSqlSelectedNamedColumnUnion, MsSqlSelectedNamedColumns, MsSqlSelectedTableColumns, MsSqlAliasTable } from './columns.js';
6
+ import { type TableMutationPolicy } from './mssqlTable.js';
7
+ import type { MsSqlInsertValues, MsSqlUpdateValues, MsSqlCompareValues, MsSqlColumnName, MsSqlArrayCompareValues, MsSqlRangeCompareValues, MsSqlPatternCompareValues, MsSqlNullConditionInput, MsSqlConditions } from './@types/index.js';
8
+ import type { NodeMsSqlDatabase, NodeMsSqlPreparedQueryHKT } from 'drizzle-orm/node-mssql';
9
+ /********************************************************************************************************************
10
+ * MsSqlQuery
11
+ * ******************************************************************************************************************/
12
+ export declare class MsSqlQuery<TTable extends MsSqlTable, IV extends MsSqlInsertValues<TTable> = MsSqlInsertValues<TTable>, UV extends MsSqlUpdateValues<TTable> = MsSqlUpdateValues<TTable>, AR = AddResult<TTable>> {
13
+ private readonly current;
14
+ private readonly getTimestamp?;
15
+ readonly t: TTable;
16
+ /********************************************************************************************************************
17
+ * constructor
18
+ * ******************************************************************************************************************/
19
+ constructor(table: TTable, current: (() => NodeMsSqlDatabase) & {
20
+ getTimestamp?: () => unknown;
21
+ }, getTimestamp?: (() => unknown) | undefined);
22
+ private readonly drizzle;
23
+ /********************************************************************************************************************
24
+ * (PROTECTED) getTx
25
+ * ******************************************************************************************************************/
26
+ protected getTx(): NodeMsSqlDatabase;
27
+ /********************************************************************************************************************
28
+ * columns
29
+ * ******************************************************************************************************************/
30
+ columns(): MsSqlSelectedTableColumns<TTable>;
31
+ columns<N extends MsSqlColumnSelectionName<TTable>>(...names: N[] & MsSqlColumnSelectionName<TTable>[]): MsSqlSelectedNamedColumnUnion<TTable, N>;
32
+ private resolveFields;
33
+ /********************************************************************************************************************
34
+ * select
35
+ * ******************************************************************************************************************/
36
+ select(): SelectFrom<TTable, undefined>;
37
+ select(fields: readonly []): SelectFrom<TTable, {}>;
38
+ select<N extends MsSqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MsSqlColumnSelectionName<TTable>[]): SelectFrom<TTable, MsSqlSelectedNamedColumns<TTable, readonly N[]>>;
39
+ select<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T): SelectFrom<TTable, MergeFields<T>>;
40
+ select<const T extends readonly FieldInput[] | readonly MsSqlColumnSelectionName<TTable>[]>(fields: T & readonly (FieldInput | MsSqlColumnSelectionName<TTable>)[]): SelectFrom<TTable, MergeFields<NamedFields<TTable, T>>>;
41
+ select<TSelection extends SelectedFields<MsSqlColumn, TTable>>(fields?: Fields<FieldsQuery<TTable>, TSelection>): SelectFrom<TTable, TSelection>;
42
+ select<TAlias extends string>(alias: MsSqlAliasTable<TTable, TAlias>): SelectFrom<MsSqlAliasTable<TTable, TAlias>, undefined>;
43
+ select<TAlias extends string>(alias: MsSqlAliasTable<TTable, TAlias>, fields: readonly []): SelectFrom<MsSqlAliasTable<TTable, TAlias>, {}>;
44
+ select<TAlias extends string, N extends MsSqlColumnSelectionName<MsSqlAliasTable<TTable, TAlias>>>(alias: MsSqlAliasTable<TTable, TAlias>, fields: readonly N[] & readonly MsSqlColumnSelectionName<MsSqlAliasTable<TTable, TAlias>>[]): SelectFrom<MsSqlAliasTable<TTable, TAlias>, MsSqlSelectedNamedColumns<MsSqlAliasTable<TTable, TAlias>, readonly N[]>>;
45
+ select<TAlias extends string, const T extends readonly FieldInput[]>(alias: MsSqlAliasTable<TTable, TAlias>, fields: (query: FieldsQuery<MsSqlAliasTable<TTable, TAlias>>) => T): SelectFrom<MsSqlAliasTable<TTable, TAlias>, MergeFields<T>>;
46
+ select<TAlias extends string, const T extends readonly FieldInput[] | readonly MsSqlColumnSelectionName<MsSqlAliasTable<TTable, TAlias>>[]>(alias: MsSqlAliasTable<TTable, TAlias>, fields: T & readonly (FieldInput | MsSqlColumnSelectionName<MsSqlAliasTable<TTable, TAlias>>)[]): SelectFrom<MsSqlAliasTable<TTable, TAlias>, MergeFields<NamedFields<MsSqlAliasTable<TTable, TAlias>, T>>>;
47
+ select<TAlias extends string, TSelection extends SelectedFields<MsSqlColumn, MsSqlAliasTable<TTable, TAlias>>>(alias: MsSqlAliasTable<TTable, TAlias>, fields: Fields<FieldsQuery<MsSqlAliasTable<TTable, TAlias>>, TSelection>): SelectFrom<MsSqlAliasTable<TTable, TAlias>, TSelection>;
48
+ /********************************************************************************************************************
49
+ * find
50
+ * ******************************************************************************************************************/
51
+ find(where: BaseWhere<this>): Promise<FindResult<TTable, undefined>>;
52
+ find(fields: readonly [], where?: BaseWhere<this>): Promise<FindResult<TTable, {}>>;
53
+ find<N extends MsSqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MsSqlColumnSelectionName<TTable>[], where?: BaseWhere<this>): Promise<FindResult<TTable, MsSqlSelectedNamedColumns<TTable, readonly N[]>>>;
54
+ find<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T, where: BaseWhere<this>): Promise<FindResult<TTable, MergeFields<T>>>;
55
+ find<const T extends readonly FieldInput[] | readonly MsSqlColumnSelectionName<TTable>[]>(fields: T & readonly (FieldInput | MsSqlColumnSelectionName<TTable>)[], where: BaseWhere<this>): Promise<FindResult<TTable, MergeFields<NamedFields<TTable, T>>>>;
56
+ find<TSelection extends SelectedFields<MsSqlColumn, TTable>>(fields: Fields<FieldsQuery<TTable>, TSelection>, where: BaseWhere<this>): Promise<FindResult<TTable, TSelection>>;
57
+ find<TAlias extends string>(alias: MsSqlAliasTable<TTable, TAlias>, where: BaseWhere<this>): Promise<FindResult<MsSqlAliasTable<TTable, TAlias>, undefined>>;
58
+ find<TAlias extends string>(alias: MsSqlAliasTable<TTable, TAlias>, fields: readonly [], where?: BaseWhere<this>): Promise<FindResult<MsSqlAliasTable<TTable, TAlias>, {}>>;
59
+ find<TAlias extends string, N extends MsSqlColumnSelectionName<MsSqlAliasTable<TTable, TAlias>>>(alias: MsSqlAliasTable<TTable, TAlias>, fields: readonly N[] & readonly MsSqlColumnSelectionName<MsSqlAliasTable<TTable, TAlias>>[], where?: BaseWhere<this>): Promise<FindResult<MsSqlAliasTable<TTable, TAlias>, MsSqlSelectedNamedColumns<MsSqlAliasTable<TTable, TAlias>, readonly N[]>>>;
60
+ find<TAlias extends string, const T extends readonly FieldInput[]>(alias: MsSqlAliasTable<TTable, TAlias>, fields: (query: FieldsQuery<MsSqlAliasTable<TTable, TAlias>>) => T, where: BaseWhere<this>): Promise<FindResult<MsSqlAliasTable<TTable, TAlias>, MergeFields<T>>>;
61
+ find<TAlias extends string, const T extends readonly FieldInput[] | readonly MsSqlColumnSelectionName<MsSqlAliasTable<TTable, TAlias>>[]>(alias: MsSqlAliasTable<TTable, TAlias>, fields: T & readonly (FieldInput | MsSqlColumnSelectionName<MsSqlAliasTable<TTable, TAlias>>)[], where: BaseWhere<this>): Promise<FindResult<MsSqlAliasTable<TTable, TAlias>, MergeFields<NamedFields<MsSqlAliasTable<TTable, TAlias>, T>>>>;
62
+ find<TAlias extends string, TSelection extends SelectedFields<MsSqlColumn, MsSqlAliasTable<TTable, TAlias>>>(alias: MsSqlAliasTable<TTable, TAlias>, fields: Fields<FieldsQuery<MsSqlAliasTable<TTable, TAlias>>, TSelection>, where: BaseWhere<this>): Promise<FindResult<MsSqlAliasTable<TTable, TAlias>, TSelection>>;
63
+ /********************************************************************************************************************
64
+ * findByPrimaryKey
65
+ * ******************************************************************************************************************/
66
+ findByPrimaryKey<N extends MsSqlColumnSelectionName<TTable>>(fields: readonly N[] & readonly MsSqlColumnSelectionName<TTable>[], key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, MsSqlSelectedNamedColumns<TTable, readonly N[]>>>;
67
+ findByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, undefined>>;
68
+ findByPrimaryKey(fields: readonly [], key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, {}>>;
69
+ findByPrimaryKey<const T extends readonly FieldInput[]>(fields: (query: FieldsQuery<TTable>) => T, key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, MergeFields<T>>>;
70
+ findByPrimaryKey<const T extends readonly FieldInput[] | readonly MsSqlColumnSelectionName<TTable>[]>(fields: T & readonly (FieldInput | MsSqlColumnSelectionName<TTable>)[], key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, MergeFields<NamedFields<TTable, T>>>>;
71
+ findByPrimaryKey<TSelection extends SelectedFields<MsSqlColumn, TTable>>(fields: Fields<FieldsQuery<TTable>, TSelection>, key: PrimaryKeyInput<TTable>): Promise<FindResult<TTable, TSelection>>;
72
+ /********************************************************************************************************************
73
+ * primaryKeyCondition
74
+ * ******************************************************************************************************************/
75
+ private primaryKeyCondition;
76
+ /********************************************************************************************************************
77
+ * exists
78
+ * ******************************************************************************************************************/
79
+ exists(where?: BaseWhere<this>): Promise<boolean>;
80
+ /********************************************************************************************************************
81
+ * existsByPrimarykey
82
+ * ******************************************************************************************************************/
83
+ existsByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<boolean>;
84
+ /********************************************************************************************************************
85
+ * notExists
86
+ * ******************************************************************************************************************/
87
+ notExists(where?: BaseWhere<this>): Promise<boolean>;
88
+ /********************************************************************************************************************
89
+ * notExistsByPrimaryKey
90
+ * ******************************************************************************************************************/
91
+ notExistsByPrimaryKey(key: PrimaryKeyInput<TTable>): Promise<boolean>;
92
+ /********************************************************************************************************************
93
+ * count
94
+ * ******************************************************************************************************************/
95
+ count(where?: BaseWhere<this>): Promise<number>;
96
+ private prepareValues;
97
+ /********************************************************************************************************************
98
+ * (PRIVATE) executeInsert
99
+ * ******************************************************************************************************************/
100
+ private executeInsert;
101
+ /********************************************************************************************************************
102
+ * insertValues
103
+ * ******************************************************************************************************************/
104
+ insertValues(values: IV[]): IV[];
105
+ insertValues(values: IV): IV;
106
+ /********************************************************************************************************************
107
+ * updateValues
108
+ * ******************************************************************************************************************/
109
+ updateValues(values: UV): UV;
110
+ /********************************************************************************************************************
111
+ * add
112
+ * ******************************************************************************************************************/
113
+ add(value: IV[]): Promise<AR[]>;
114
+ add(value: IV): Promise<AR>;
115
+ /********************************************************************************************************************
116
+ * edit
117
+ * ******************************************************************************************************************/
118
+ edit(this: this & (TableMutationPolicy<TTable> extends {
119
+ updateBlocked: true;
120
+ } ? never : unknown), set: UV, where: BaseWhere<this>): Omit<import("drizzle-orm/mssql-core").MsSqlUpdateBase<TTable, import("drizzle-orm/node-mssql").NodeMsSqlQueryResultHKT, NodeMsSqlPreparedQueryHKT, undefined, false, "where">, "where">;
121
+ /********************************************************************************************************************
122
+ * editByPrimaryKey
123
+ * ******************************************************************************************************************/
124
+ editByPrimaryKey(this: this & (TableMutationPolicy<TTable> extends {
125
+ updateBlocked: true;
126
+ } ? never : unknown), set: UV, key: PrimaryKeyInput<TTable>): Omit<import("drizzle-orm/mssql-core").MsSqlUpdateBase<TTable, import("drizzle-orm/node-mssql").NodeMsSqlQueryResultHKT, NodeMsSqlPreparedQueryHKT, undefined, false, "where">, "where">;
127
+ /********************************************************************************************************************
128
+ * remove
129
+ * ******************************************************************************************************************/
130
+ remove(this: this & (TableMutationPolicy<TTable> extends {
131
+ deleteBlocked: true;
132
+ } ? never : unknown), where: BaseWhere<this>): Omit<import("drizzle-orm/mssql-core").MsSqlDeleteBase<TTable, import("drizzle-orm/node-mssql").NodeMsSqlQueryResultHKT, NodeMsSqlPreparedQueryHKT, undefined, false, "where">, "where">;
133
+ /********************************************************************************************************************
134
+ * removeByPrimaryKey
135
+ * ******************************************************************************************************************/
136
+ removeByPrimaryKey(this: this & (TableMutationPolicy<TTable> extends {
137
+ deleteBlocked: true;
138
+ } ? never : unknown), key: PrimaryKeyInput<TTable>): Omit<import("drizzle-orm/mssql-core").MsSqlDeleteBase<TTable, import("drizzle-orm/node-mssql").NodeMsSqlQueryResultHKT, NodeMsSqlPreparedQueryHKT, undefined, false, "where">, "where">;
139
+ private assertMutationAllowed;
140
+ /********************************************************************************************************************
141
+ * eq
142
+ * ******************************************************************************************************************/
143
+ eq(values: MsSqlCompareValues<TTable>): SQL | undefined;
144
+ /********************************************************************************************************************
145
+ * ne
146
+ * ******************************************************************************************************************/
147
+ ne(values: MsSqlCompareValues<TTable>): SQL | undefined;
148
+ /********************************************************************************************************************
149
+ * gt
150
+ * ******************************************************************************************************************/
151
+ gt(values: MsSqlCompareValues<TTable>): SQL | undefined;
152
+ /********************************************************************************************************************
153
+ * gte
154
+ * ******************************************************************************************************************/
155
+ gte(values: MsSqlCompareValues<TTable>): SQL | undefined;
156
+ /********************************************************************************************************************
157
+ * lt
158
+ * ******************************************************************************************************************/
159
+ lt(values: MsSqlCompareValues<TTable>): SQL | undefined;
160
+ /********************************************************************************************************************
161
+ * lte
162
+ * ******************************************************************************************************************/
163
+ lte(values: MsSqlCompareValues<TTable>): SQL | undefined;
164
+ /********************************************************************************************************************
165
+ * lte
166
+ * ******************************************************************************************************************/
167
+ inArray(values: MsSqlArrayCompareValues<TTable>): SQL | undefined;
168
+ /********************************************************************************************************************
169
+ * notInArray
170
+ * ******************************************************************************************************************/
171
+ notInArray(values: MsSqlArrayCompareValues<TTable>): SQL | undefined;
172
+ /********************************************************************************************************************
173
+ * between
174
+ * ******************************************************************************************************************/
175
+ between(values: MsSqlRangeCompareValues<TTable>): SQL | undefined;
176
+ /********************************************************************************************************************
177
+ * notBetween
178
+ * ******************************************************************************************************************/
179
+ notBetween(values: MsSqlRangeCompareValues<TTable>): SQL | undefined;
180
+ /********************************************************************************************************************
181
+ * like
182
+ * ******************************************************************************************************************/
183
+ like(values: MsSqlPatternCompareValues<TTable>): SQL | undefined;
184
+ /********************************************************************************************************************
185
+ * notLike
186
+ * ******************************************************************************************************************/
187
+ notLike(values: MsSqlPatternCompareValues<TTable>): SQL | undefined;
188
+ /********************************************************************************************************************
189
+ * ilike
190
+ * ******************************************************************************************************************/
191
+ ilike(values: MsSqlPatternCompareValues<TTable>): SQL | undefined;
192
+ /********************************************************************************************************************
193
+ * notIlike
194
+ * ******************************************************************************************************************/
195
+ notIlike(values: MsSqlPatternCompareValues<TTable>): SQL | undefined;
196
+ /********************************************************************************************************************
197
+ * isNull
198
+ * ******************************************************************************************************************/
199
+ isNull(name: MsSqlColumnName<TTable>): SQL;
200
+ isNull(names: MsSqlNullConditionInput<TTable>): SQL | undefined;
201
+ /********************************************************************************************************************
202
+ * isNotNull
203
+ * ******************************************************************************************************************/
204
+ isNotNull(name: MsSqlColumnName<TTable>): SQL;
205
+ isNotNull(names: MsSqlNullConditionInput<TTable>): SQL | undefined;
206
+ /********************************************************************************************************************
207
+ * and
208
+ * ******************************************************************************************************************/
209
+ and(options: MsSqlConditions<TTable>): SQL | undefined;
210
+ /********************************************************************************************************************
211
+ * or
212
+ * ******************************************************************************************************************/
213
+ or(options: MsSqlConditions<TTable>): SQL | undefined;
214
+ }
215
+ /********************************************************************************************************************
216
+ * types
217
+ * ******************************************************************************************************************/
218
+ type SelectFrom<TTable extends MsSqlTable, TSelection extends FieldSet | undefined> = MsSqlSelectBase<GetSelectTableName<TTable>, TSelection extends undefined ? MsSqlSelectedTableColumns<TTable> : TSelection, 'partial', NodeMsSqlPreparedQueryHKT, 'from'>;
219
+ type FindResult<TTable extends MsSqlTable, TSelection extends FieldSet | undefined> = Awaited<SelectFrom<TTable, TSelection>>[number] | undefined;
220
+ 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'>>;
221
+ type BaseWhere<TQuery> = SQL | undefined | ((query: WhereQuery<TQuery>) => SQL | undefined);
222
+ type FieldSet = SelectedFields<MsSqlColumn, MsSqlTable>;
223
+ type FieldInput = FieldSet | false | undefined;
224
+ type FieldsQuery<TTable extends MsSqlTable> = {
225
+ readonly t: TTable;
226
+ columns(): MsSqlSelectedTableColumns<TTable>;
227
+ columns<N extends MsSqlColumnSelectionName<TTable>>(...names: N[] & MsSqlColumnSelectionName<TTable>[]): MsSqlSelectedNamedColumnUnion<TTable, N>;
228
+ };
229
+ type Fields<TQuery, TSelection> = TSelection | ((query: TQuery) => TSelection);
230
+ type NamedFields<TTable extends MsSqlTable, T extends readonly (FieldInput | MsSqlColumnSelectionName<TTable>)[]> = {
231
+ [I in keyof T]: T[I] extends MsSqlColumnSelectionName<TTable> ? MsSqlSelectedNamedColumns<TTable, readonly [T[I]]> : Extract<T[I], FieldInput>;
232
+ };
233
+ type MergeField<First, Result> = First extends FieldSet ? Result extends unknown ? Omit<Result, keyof First> & First : never : Result;
234
+ type MergeFields<T extends readonly FieldInput[], Result = {}> = T extends readonly [
235
+ infer First extends FieldInput,
236
+ ...infer Rest extends readonly FieldInput[]
237
+ ] ? MergeFields<Rest, MergeField<First, Result>> : number extends T['length'] ? Exclude<T[number], false | undefined> : Result extends unknown ? {
238
+ [P in keyof Result]: Result[P];
239
+ } : never;
240
+ type PrimaryKeyNames<T extends MsSqlTable> = {
241
+ [P in keyof T['_']['columns']]: T['_']['columns'][P]['_'] extends {
242
+ isPrimaryKey: true;
243
+ } ? P : never;
244
+ }[keyof T['_']['columns']];
245
+ type PrimaryKeyObject<T extends MsSqlTable> = {
246
+ [P in PrimaryKeyNames<T>]: T['_']['columns'][P]['_']['data'];
247
+ };
248
+ type IsUnion<T, U = T> = T extends U ? ([U] extends [T] ? false : true) : never;
249
+ type PrimaryKeyInput<T extends MsSqlTable> = [PrimaryKeyNames<T>] extends [never] ? Partial<{
250
+ [P in keyof T['_']['columns']]: T['_']['columns'][P]['_']['data'];
251
+ }> : IsUnion<PrimaryKeyNames<T>> extends true ? PrimaryKeyObject<T> : PrimaryKeyObject<T> | PrimaryKeyObject<T>[PrimaryKeyNames<T>];
252
+ type AutoIncrementKeys<TTable extends MsSqlTable> = {
253
+ [P in keyof TTable['_']['columns']]: TTable['_']['columns'][P]['_'] extends {
254
+ generated: infer G;
255
+ } ? undefined extends G ? never : keyof G extends never ? P : never : never;
256
+ }[keyof TTable['_']['columns']];
257
+ type HasAutoIncrement<TTable extends MsSqlTable> = [AutoIncrementKeys<TTable>] extends [never] ? false : true;
258
+ type AddResult<TTable extends MsSqlTable> = HasAutoIncrement<TTable> extends true ? TTable['_']['columns'][AutoIncrementKeys<TTable>]['_']['data'] : undefined;
259
+ export {};