@modern-admin/adapter-drizzle 0.2.1 → 0.3.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/LICENSE +21 -0
- package/dist/converters.d.ts +1 -1
- package/dist/converters.d.ts.map +1 -1
- package/dist/converters.js +2 -37
- package/dist/converters.js.map +1 -1
- package/dist/resource.d.ts +3 -0
- package/dist/resource.d.ts.map +1 -1
- package/dist/resource.js +85 -115
- package/dist/resource.js.map +1 -1
- package/dist/types.d.ts +6 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/converters.ts +2 -41
- package/src/resource.ts +91 -123
- package/src/types.ts +7 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Modern Admin contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/converters.d.ts
CHANGED
package/dist/converters.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"converters.d.ts","sourceRoot":"","sources":["../src/converters.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"converters.d.ts","sourceRoot":"","sources":["../src/converters.ts"],"names":[],"mappings":"AACA,OAAO,EAA4C,KAAK,MAAM,EAA6D,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEvK,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,YAAY,CAAA;AAyK7D;;;;GAIG;AACH,eAAO,MAAM,aAAa,GACxB,QAAQ,MAAM,EACd,OAAO,YAAY,KAClB,OAUF,CAAA;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,eAAO,MAAM,oBAAoB,GAC/B,SAAS,WAAW,EACpB,OAAO,YAAY,KAClB,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAYvD,CAAA"}
|
package/dist/converters.js
CHANGED
|
@@ -1,37 +1,5 @@
|
|
|
1
1
|
import { and, arrayContains, arrayOverlaps, asc, desc, eq, gt, gte, ilike, inArray, isNotNull, isNull, like, lt, lte, ne, not, or } from 'drizzle-orm';
|
|
2
|
-
|
|
3
|
-
const coerceScalar = (value, property) => {
|
|
4
|
-
if (value == null || typeof value === 'boolean')
|
|
5
|
-
return value;
|
|
6
|
-
if (Array.isArray(value))
|
|
7
|
-
return value.map((v) => coerceScalar(v, property));
|
|
8
|
-
if (typeof value === 'number')
|
|
9
|
-
return value;
|
|
10
|
-
if (typeof value !== 'string')
|
|
11
|
-
return value;
|
|
12
|
-
if (!property)
|
|
13
|
-
return value;
|
|
14
|
-
switch (property.type()) {
|
|
15
|
-
case 'number':
|
|
16
|
-
case 'currency': {
|
|
17
|
-
const n = Number(value);
|
|
18
|
-
return Number.isFinite(n) ? n : value;
|
|
19
|
-
}
|
|
20
|
-
case 'float': {
|
|
21
|
-
const n = parseFloat(value);
|
|
22
|
-
return Number.isFinite(n) ? n : value;
|
|
23
|
-
}
|
|
24
|
-
case 'boolean':
|
|
25
|
-
return value === 'true' || value === '1';
|
|
26
|
-
case 'date':
|
|
27
|
-
case 'datetime': {
|
|
28
|
-
const d = new Date(value);
|
|
29
|
-
return Number.isNaN(d.getTime()) ? value : d;
|
|
30
|
-
}
|
|
31
|
-
default:
|
|
32
|
-
return value;
|
|
33
|
-
}
|
|
34
|
-
};
|
|
2
|
+
import { coerceScalar, isRangeValue, parseBetween } from '@modern-admin/core';
|
|
35
3
|
/** Return the case-insensitive `like` function appropriate for the dialect. */
|
|
36
4
|
const ciLike = (column) => column.columnType?.startsWith('Pg') ? ilike : like;
|
|
37
5
|
/**
|
|
@@ -171,10 +139,7 @@ const buildOperatorCondition = (operator, value, property, column) => {
|
|
|
171
139
|
return lt(column, coerced);
|
|
172
140
|
}
|
|
173
141
|
case 'between': {
|
|
174
|
-
const
|
|
175
|
-
const comma = str.indexOf(',');
|
|
176
|
-
const fromStr = comma >= 0 ? str.slice(0, comma) : str;
|
|
177
|
-
const toStr = comma >= 0 ? str.slice(comma + 1) : '';
|
|
142
|
+
const { fromStr, toStr } = parseBetween(value);
|
|
178
143
|
const conds = [];
|
|
179
144
|
if (fromStr)
|
|
180
145
|
conds.push(gte(column, coerceScalar(fromStr, property)));
|
package/dist/converters.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"converters.js","sourceRoot":"","sources":["../src/converters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"converters.js","sourceRoot":"","sources":["../src/converters.ts"],"names":[],"mappings":"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"}
|
package/dist/resource.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export declare class DrizzleResource extends BaseResource {
|
|
|
16
16
|
databaseType(): string;
|
|
17
17
|
properties(): DrizzleProperty[];
|
|
18
18
|
property(path: string): DrizzleProperty | null;
|
|
19
|
+
/** Active client: the ambient transaction client when inside `transaction(fn)`. */
|
|
20
|
+
private db;
|
|
19
21
|
private castId;
|
|
20
22
|
/** Drop unknown keys so we never write to columns that don't exist. */
|
|
21
23
|
private writableData;
|
|
@@ -33,6 +35,7 @@ export declare class DrizzleResource extends BaseResource {
|
|
|
33
35
|
create(params: ParamsType): Promise<ParamsType>;
|
|
34
36
|
update(id: string, params: ParamsType): Promise<ParamsType>;
|
|
35
37
|
delete(id: string): Promise<void>;
|
|
38
|
+
deleteMany(filter: Filter): Promise<number>;
|
|
36
39
|
supportsTimeSeries(): boolean;
|
|
37
40
|
aggregateTimeSeries(filter: Filter, query: TimeSeriesQuery): Promise<TimeSeriesResult>;
|
|
38
41
|
private runTimeSeriesQuery;
|
package/dist/resource.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EACV,YAAY,EAOZ,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EAGtB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,eAAe,EAAyC,MAAM,eAAe,CAAA;AAEtF,OAAO,KAAK,EACV,iBAAiB,EAEjB,cAAc,EAEd,YAAY,EACb,MAAM,YAAY,CAAA;AA4BnB,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,SAAgB,MAAM,EAAE,iBAAiB,CAAA;IACzC,SAAgB,KAAK,EAAE,YAAY,CAAA;IACnC,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAChC,SAAgB,OAAO,EAAE,cAAc,CAAA;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;gBAE5B,GAAG,EAAE,OAAO;WA4BR,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI1C,EAAE,IAAI,MAAM;IAIZ,YAAY,IAAI,MAAM;IAItB,YAAY,IAAI,MAAM;IAItB,UAAU,IAAI,eAAe,EAAE;IAI/B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAIvD,mFAAmF;IACnF,OAAO,CAAC,EAAE;IAKV,OAAO,CAAC,MAAM;IAkBd,uEAAuE;IACvE,OAAO,CAAC,YAAY;IASL,QAAQ,CACrB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,MAAM,EAAE,CAAC;IAgCL,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAStC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAYjE,MAAM,CACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3B,OAAO,CAAC,UAAU,EAAE,CAAC;IA2BT,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAU/C,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAU5D,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAQ/C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAS3D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAajD,kBAAkB,IAAI,OAAO;IAIvB,mBAAmB,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,gBAAgB,CAAC;YAkBd,kBAAkB;IAkHjB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAShE"}
|
package/dist/resource.js
CHANGED
|
@@ -1,7 +1,19 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
1
2
|
import { and, asc, count as countFn, eq, gte, ilike, inArray, isNotNull, like, lte, ne, or, sql } from 'drizzle-orm';
|
|
2
|
-
import { BaseRecord, BaseResource, } from '@modern-admin/core';
|
|
3
|
+
import { BaseRecord, BaseResource, buildDisplaySql, isoDate, stringifyKey, sumValues, toDate, toNumber, } from '@modern-admin/core';
|
|
3
4
|
import { DrizzleProperty, extractForeignKeys, findPrimaryColumn } from './property.js';
|
|
4
5
|
import { filterToWhere, findOptionsToDrizzle } from './converters.js';
|
|
6
|
+
/**
|
|
7
|
+
* Ambient transaction context. Module-level (not per-resource) on purpose:
|
|
8
|
+
* inside `transaction(fn)` the callback often touches *other* resources
|
|
9
|
+
* backed by the same Drizzle client (e.g. the junction resource in an m2m
|
|
10
|
+
* diff, every record in a bulk delete) — they must all see the tx client,
|
|
11
|
+
* not the base one. `base` is stored alongside `tx` so a resource bound to
|
|
12
|
+
* a *different* Drizzle client never accidentally picks up a foreign
|
|
13
|
+
* transaction: cross-client atomicity is impossible, so it falls back to
|
|
14
|
+
* its own client.
|
|
15
|
+
*/
|
|
16
|
+
const txStorage = new AsyncLocalStorage();
|
|
5
17
|
const isInit = (raw) => typeof raw === 'object' &&
|
|
6
18
|
raw !== null &&
|
|
7
19
|
'client' in raw &&
|
|
@@ -53,10 +65,25 @@ export class DrizzleResource extends BaseResource {
|
|
|
53
65
|
property(path) {
|
|
54
66
|
return this._properties.find((p) => p.path() === path) ?? null;
|
|
55
67
|
}
|
|
68
|
+
/** Active client: the ambient transaction client when inside `transaction(fn)`. */
|
|
69
|
+
db() {
|
|
70
|
+
const store = txStorage.getStore();
|
|
71
|
+
return store && store.base === this.client ? store.tx : this.client;
|
|
72
|
+
}
|
|
56
73
|
castId(id) {
|
|
57
74
|
if (typeof id === 'number')
|
|
58
75
|
return id;
|
|
59
|
-
|
|
76
|
+
// BigInt ids must round-trip through BigInt — Number() silently loses
|
|
77
|
+
// precision above 2^53, so the lookup would target a neighbouring id.
|
|
78
|
+
if (this.idColumn.dataType === 'bigint') {
|
|
79
|
+
try {
|
|
80
|
+
return BigInt(id);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return id;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (this.idColumn.dataType === 'number') {
|
|
60
87
|
const n = Number(id);
|
|
61
88
|
return Number.isFinite(n) ? n : id;
|
|
62
89
|
}
|
|
@@ -91,7 +118,7 @@ export class DrizzleResource extends BaseResource {
|
|
|
91
118
|
const where = and(...conds);
|
|
92
119
|
// Use select + groupBy for DISTINCT — avoids requiring selectDistinct
|
|
93
120
|
// on the client interface while producing the same SQL result.
|
|
94
|
-
const rows = (await this.
|
|
121
|
+
const rows = (await this.db()
|
|
95
122
|
.select({ value: column })
|
|
96
123
|
.from(this.table)
|
|
97
124
|
.where(where)
|
|
@@ -104,7 +131,7 @@ export class DrizzleResource extends BaseResource {
|
|
|
104
131
|
}
|
|
105
132
|
async count(filter) {
|
|
106
133
|
const where = filterToWhere(filter, this.table);
|
|
107
|
-
let qb = this.
|
|
134
|
+
let qb = this.db().select({ value: countFn() }).from(this.table);
|
|
108
135
|
if (where !== undefined)
|
|
109
136
|
qb = qb.where(where);
|
|
110
137
|
const rows = (await qb);
|
|
@@ -114,7 +141,7 @@ export class DrizzleResource extends BaseResource {
|
|
|
114
141
|
async find(filter, options) {
|
|
115
142
|
const where = filterToWhere(filter, this.table);
|
|
116
143
|
const { limit, offset, orderBy } = findOptionsToDrizzle(options, this.table);
|
|
117
|
-
let qb = this.
|
|
144
|
+
let qb = this.db().select().from(this.table);
|
|
118
145
|
if (where !== undefined)
|
|
119
146
|
qb = qb.where(where);
|
|
120
147
|
if (orderBy !== undefined)
|
|
@@ -148,7 +175,7 @@ export class DrizzleResource extends BaseResource {
|
|
|
148
175
|
if (conds.length === 0)
|
|
149
176
|
return [];
|
|
150
177
|
const where = conds.length === 1 ? conds[0] : or(...conds);
|
|
151
|
-
const rows = (await this.
|
|
178
|
+
const rows = (await this.db()
|
|
152
179
|
.select()
|
|
153
180
|
.from(this.table)
|
|
154
181
|
.where(where)
|
|
@@ -156,7 +183,7 @@ export class DrizzleResource extends BaseResource {
|
|
|
156
183
|
return rows.map((row) => new BaseRecord(row, this));
|
|
157
184
|
}
|
|
158
185
|
async findOne(id) {
|
|
159
|
-
const rows = (await this.
|
|
186
|
+
const rows = (await this.db()
|
|
160
187
|
.select()
|
|
161
188
|
.from(this.table)
|
|
162
189
|
.where(eq(this.idColumn, this.castId(id)))
|
|
@@ -168,21 +195,21 @@ export class DrizzleResource extends BaseResource {
|
|
|
168
195
|
if (ids.length === 0)
|
|
169
196
|
return [];
|
|
170
197
|
const cast = ids.map((id) => this.castId(id));
|
|
171
|
-
const rows = (await this.
|
|
198
|
+
const rows = (await this.db()
|
|
172
199
|
.select()
|
|
173
200
|
.from(this.table)
|
|
174
201
|
.where(inArray(this.idColumn, cast)));
|
|
175
202
|
return rows.map((row) => new BaseRecord(row, this));
|
|
176
203
|
}
|
|
177
204
|
async create(params) {
|
|
178
|
-
const rows = await this.
|
|
205
|
+
const rows = await this.db()
|
|
179
206
|
.insert(this.table)
|
|
180
207
|
.values(this.writableData(params))
|
|
181
208
|
.returning();
|
|
182
209
|
return (rows[0] ?? {});
|
|
183
210
|
}
|
|
184
211
|
async update(id, params) {
|
|
185
|
-
const rows = await this.
|
|
212
|
+
const rows = await this.db()
|
|
186
213
|
.update(this.table)
|
|
187
214
|
.set(this.writableData(params))
|
|
188
215
|
.where(eq(this.idColumn, this.castId(id)))
|
|
@@ -190,10 +217,21 @@ export class DrizzleResource extends BaseResource {
|
|
|
190
217
|
return (rows[0] ?? {});
|
|
191
218
|
}
|
|
192
219
|
async delete(id) {
|
|
193
|
-
await this.
|
|
220
|
+
await this.db()
|
|
194
221
|
.delete(this.table)
|
|
195
222
|
.where(eq(this.idColumn, this.castId(id)));
|
|
196
223
|
}
|
|
224
|
+
async deleteMany(filter) {
|
|
225
|
+
const where = filterToWhere(filter, this.table);
|
|
226
|
+
const builder = this.db().delete(this.table);
|
|
227
|
+
// `returning()` gives an accurate, driver-agnostic deleted-row count on
|
|
228
|
+
// the dialects this adapter targets (Postgres/SQLite), mirroring the
|
|
229
|
+
// `create`/`update` paths above.
|
|
230
|
+
const rows = where !== undefined
|
|
231
|
+
? await builder.where(where).returning()
|
|
232
|
+
: await builder.returning();
|
|
233
|
+
return rows.length;
|
|
234
|
+
}
|
|
197
235
|
supportsTimeSeries() {
|
|
198
236
|
return true;
|
|
199
237
|
}
|
|
@@ -250,7 +288,7 @@ export class DrizzleResource extends BaseResource {
|
|
|
250
288
|
select.bucket = bucketSql;
|
|
251
289
|
if (groupCol)
|
|
252
290
|
select.series_key = groupCol;
|
|
253
|
-
let qb = this.
|
|
291
|
+
let qb = this.db().select(select).from(this.table).where(where);
|
|
254
292
|
const groupKeys = [];
|
|
255
293
|
if (query.step !== 'all')
|
|
256
294
|
groupKeys.push(bucketSql);
|
|
@@ -265,8 +303,23 @@ export class DrizzleResource extends BaseResource {
|
|
|
265
303
|
const fromIso = isoDate(query.from);
|
|
266
304
|
const seriesMap = new Map();
|
|
267
305
|
for (const row of rows) {
|
|
306
|
+
// A bucket whose rows are all NULL aggregates to a NULL value (SUM/AVG/
|
|
307
|
+
// MIN/MAX). The Prisma adapter emits no point for such buckets — skip
|
|
308
|
+
// the row so both adapters agree. COUNT(*) is never NULL.
|
|
309
|
+
if (row.value == null)
|
|
310
|
+
continue;
|
|
268
311
|
const seriesKey = groupCol ? stringifyKey(row.series_key) : '__total__';
|
|
269
|
-
|
|
312
|
+
let bucketKey;
|
|
313
|
+
if (query.step === 'all') {
|
|
314
|
+
bucketKey = fromIso;
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
const bucketDate = toDate(row.bucket);
|
|
318
|
+
// isoDate() throws on Invalid Date — drop the row instead of 500ing.
|
|
319
|
+
if (Number.isNaN(bucketDate.getTime()))
|
|
320
|
+
continue;
|
|
321
|
+
bucketKey = isoDate(bucketDate);
|
|
322
|
+
}
|
|
270
323
|
const num = toNumber(row.value);
|
|
271
324
|
let inner = seriesMap.get(seriesKey);
|
|
272
325
|
if (!inner) {
|
|
@@ -305,9 +358,13 @@ export class DrizzleResource extends BaseResource {
|
|
|
305
358
|
};
|
|
306
359
|
}
|
|
307
360
|
async transaction(fn) {
|
|
361
|
+
const active = txStorage.getStore();
|
|
362
|
+
// Already inside a transaction on this client — join it.
|
|
363
|
+
if (active && active.base === this.client)
|
|
364
|
+
return fn();
|
|
308
365
|
if (typeof this.client.transaction !== 'function')
|
|
309
366
|
return fn();
|
|
310
|
-
return this.client.transaction(
|
|
367
|
+
return this.client.transaction((tx) => txStorage.run({ base: this.client, tx }, fn));
|
|
311
368
|
}
|
|
312
369
|
}
|
|
313
370
|
// ─── Time-series helpers ─────────────────────────────────────────────────
|
|
@@ -317,24 +374,24 @@ const bucketExpr = (dialect, step, dateCol) => {
|
|
|
317
374
|
if (dialect === 'pg') {
|
|
318
375
|
return sql `DATE_TRUNC(${step}, ${dateCol})`;
|
|
319
376
|
}
|
|
377
|
+
// Week buckets must land on the ISO Monday as a plain `YYYY-MM-DD` date —
|
|
378
|
+
// the canonical bucket-key format shared with pg DATE_TRUNC and the Prisma
|
|
379
|
+
// adapter's truncateDate(). Week-label formats ('%x-W%v', '%Y-W%W') are not
|
|
380
|
+
// parseable dates and would break the bucket-key mapping below.
|
|
320
381
|
if (dialect === 'mysql') {
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
? '%Y-%m-01'
|
|
327
|
-
: '%Y-01-01';
|
|
382
|
+
if (step === 'week') {
|
|
383
|
+
// WEEKDAY() is 0-based on Monday.
|
|
384
|
+
return sql `DATE(DATE_SUB(${dateCol}, INTERVAL WEEKDAY(${dateCol}) DAY))`;
|
|
385
|
+
}
|
|
386
|
+
const fmt = step === 'day' ? '%Y-%m-%d' : step === 'month' ? '%Y-%m-01' : '%Y-01-01';
|
|
328
387
|
return sql `DATE_FORMAT(${dateCol}, ${fmt})`;
|
|
329
388
|
}
|
|
330
389
|
// sqlite
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
? '%Y-%m-01'
|
|
337
|
-
: '%Y-01-01';
|
|
390
|
+
if (step === 'week') {
|
|
391
|
+
// %w is 0-based on Sunday; shift back to the Monday of the ISO week.
|
|
392
|
+
return sql `DATE(${dateCol}, '-' || ((CAST(STRFTIME('%w', ${dateCol}) AS INTEGER) + 6) % 7) || ' days')`;
|
|
393
|
+
}
|
|
394
|
+
const fmt = step === 'day' ? '%Y-%m-%d' : step === 'month' ? '%Y-%m-01' : '%Y-01-01';
|
|
338
395
|
return sql `STRFTIME(${fmt}, ${dateCol})`;
|
|
339
396
|
};
|
|
340
397
|
const metricExpr = (op, fieldCol) => {
|
|
@@ -354,91 +411,4 @@ const metricExpr = (op, fieldCol) => {
|
|
|
354
411
|
return sql `MAX(${fieldCol})`;
|
|
355
412
|
}
|
|
356
413
|
};
|
|
357
|
-
const isoDate = (d) => d.toISOString().slice(0, 10);
|
|
358
|
-
const toDate = (v) => {
|
|
359
|
-
if (v instanceof Date)
|
|
360
|
-
return v;
|
|
361
|
-
if (typeof v === 'string' || typeof v === 'number')
|
|
362
|
-
return new Date(v);
|
|
363
|
-
return new Date(String(v));
|
|
364
|
-
};
|
|
365
|
-
const toNumber = (v) => {
|
|
366
|
-
if (typeof v === 'number')
|
|
367
|
-
return v;
|
|
368
|
-
if (v == null)
|
|
369
|
-
return 0;
|
|
370
|
-
const n = Number(v);
|
|
371
|
-
return Number.isFinite(n) ? n : 0;
|
|
372
|
-
};
|
|
373
|
-
const stringifyKey = (v) => {
|
|
374
|
-
if (v == null)
|
|
375
|
-
return '__null__';
|
|
376
|
-
if (typeof v === 'string')
|
|
377
|
-
return v;
|
|
378
|
-
return String(v);
|
|
379
|
-
};
|
|
380
|
-
const sumValues = (m) => {
|
|
381
|
-
let s = 0;
|
|
382
|
-
for (const v of m.values())
|
|
383
|
-
s += v;
|
|
384
|
-
return s;
|
|
385
|
-
};
|
|
386
|
-
const buildDisplaySql = (dialect, tableName, query, filter) => {
|
|
387
|
-
const ident = (s) => (dialect === 'mysql' ? `\`${s}\`` : `"${s}"`);
|
|
388
|
-
const t = ident(tableName);
|
|
389
|
-
const dateCol = ident(query.dateField);
|
|
390
|
-
const bucket = query.step === 'all'
|
|
391
|
-
? `MIN(${dateCol})`
|
|
392
|
-
: dialect === 'pg'
|
|
393
|
-
? `DATE_TRUNC('${query.step}', ${dateCol})`
|
|
394
|
-
: dialect === 'mysql'
|
|
395
|
-
? `DATE_FORMAT(${dateCol}, ${mysqlFmt(query.step)})`
|
|
396
|
-
: `STRFTIME(${sqliteFmt(query.step)}, ${dateCol})`;
|
|
397
|
-
const metric = query.metric === 'count'
|
|
398
|
-
? 'COUNT(*)'
|
|
399
|
-
: `${query.metric.toUpperCase()}(${ident(query.field)})`;
|
|
400
|
-
const cols = [];
|
|
401
|
-
if (query.step !== 'all')
|
|
402
|
-
cols.push(`${bucket} AS bucket`);
|
|
403
|
-
cols.push(`${metric} AS value`);
|
|
404
|
-
if (query.groupBy)
|
|
405
|
-
cols.push(`${ident(query.groupBy)} AS series_key`);
|
|
406
|
-
const where = [
|
|
407
|
-
`${dateCol} >= '${query.from.toISOString()}'`,
|
|
408
|
-
`${dateCol} <= '${query.to.toISOString()}'`,
|
|
409
|
-
];
|
|
410
|
-
filter.reduce((_, el) => {
|
|
411
|
-
where.push(`${ident(el.path)} = '${String(el.value)}'`);
|
|
412
|
-
return null;
|
|
413
|
-
}, null);
|
|
414
|
-
const groupBy = [];
|
|
415
|
-
if (query.step !== 'all')
|
|
416
|
-
groupBy.push('bucket');
|
|
417
|
-
if (query.groupBy)
|
|
418
|
-
groupBy.push('series_key');
|
|
419
|
-
const lines = [
|
|
420
|
-
`SELECT ${cols.join(', ')}`,
|
|
421
|
-
`FROM ${t}`,
|
|
422
|
-
`WHERE ${where.join(' AND ')}`,
|
|
423
|
-
];
|
|
424
|
-
if (groupBy.length)
|
|
425
|
-
lines.push(`GROUP BY ${groupBy.join(', ')}`);
|
|
426
|
-
if (query.step !== 'all')
|
|
427
|
-
lines.push('ORDER BY bucket ASC');
|
|
428
|
-
return lines.join('\n');
|
|
429
|
-
};
|
|
430
|
-
const mysqlFmt = (step) => step === 'day'
|
|
431
|
-
? "'%Y-%m-%d'"
|
|
432
|
-
: step === 'week'
|
|
433
|
-
? "'%x-W%v'"
|
|
434
|
-
: step === 'month'
|
|
435
|
-
? "'%Y-%m-01'"
|
|
436
|
-
: "'%Y-01-01'";
|
|
437
|
-
const sqliteFmt = (step) => step === 'day'
|
|
438
|
-
? "'%Y-%m-%d'"
|
|
439
|
-
: step === 'week'
|
|
440
|
-
? "'%Y-W%W'"
|
|
441
|
-
: step === 'month'
|
|
442
|
-
? "'%Y-%m-01'"
|
|
443
|
-
: "'%Y-01-01'";
|
|
444
414
|
//# sourceMappingURL=resource.js.map
|
package/dist/resource.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -40,8 +40,13 @@ export interface DrizzleUpdateBuilder {
|
|
|
40
40
|
};
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
|
+
/** Awaitable delete query that also supports `RETURNING` for a deleted count. */
|
|
44
|
+
export type DrizzleDeleteExecutable = Promise<unknown> & {
|
|
45
|
+
returning(): Promise<Array<Record<string, unknown>>>;
|
|
46
|
+
};
|
|
43
47
|
export interface DrizzleDeleteBuilder {
|
|
44
|
-
where(condition: unknown):
|
|
48
|
+
where(condition: unknown): DrizzleDeleteExecutable;
|
|
49
|
+
returning(): Promise<Array<Record<string, unknown>>>;
|
|
45
50
|
}
|
|
46
51
|
export interface DrizzleClientLike {
|
|
47
52
|
select(): DrizzleSelectBuilder;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,+GAA+G;IAC/G,QAAQ,EAAE,MAAM,CAAA;IAChB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9B,gEAAgE;IAChE,UAAU,CAAC,EAAE,aAAa,CAAA;CAC3B;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG;IACzD,2CAA2C;IAC3C,CAAC,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACtB,CAAA;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,KAAK,CAAC,SAAS,EAAE,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;IACjD,OAAO,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;IACtD,OAAO,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;IACtD,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;IACxC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;IAEzC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACtE;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CACxE;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QACtC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;KACrD,CAAA;CACF;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QACpC,KAAK,CAAC,SAAS,EAAE,OAAO,GAAG;YACzB,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;SACrD,CAAA;KACF,CAAA;CACF;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@modern-admin/adapter-drizzle",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Drizzle ORM adapter for Modern Admin — implements BaseDatabase/BaseResource on Drizzle schemas.",
|
|
5
5
|
"homepage": "https://github.com/modern-admin/modern-admin/tree/main/packages/adapter-drizzle#readme",
|
|
6
6
|
"keywords": [
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@modern-admin/core": "^0.
|
|
47
|
+
"@modern-admin/core": "^0.3.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@modern-admin/tsconfig": "0.
|
|
50
|
+
"@modern-admin/tsconfig": "0.3.0",
|
|
51
51
|
"@types/bun": "^1.3.13",
|
|
52
52
|
"drizzle-orm": "^0.45.2",
|
|
53
53
|
"typescript": "^6.0.3"
|
package/src/converters.ts
CHANGED
|
@@ -1,44 +1,8 @@
|
|
|
1
1
|
import { and, arrayContains, arrayOverlaps, asc, desc, eq, gt, gte, ilike, inArray, isNotNull, isNull, like, lt, lte, ne, not, or } from 'drizzle-orm'
|
|
2
|
-
import type
|
|
2
|
+
import { coerceScalar, isRangeValue, parseBetween, type Filter, type FilterElement, type FilterOperator, type FilterValue, type FindOptions } from '@modern-admin/core'
|
|
3
3
|
import type { DrizzleProperty } from './property.js'
|
|
4
4
|
import type { DrizzleColumn, DrizzleTable } from './types.js'
|
|
5
5
|
|
|
6
|
-
const isRangeValue = (
|
|
7
|
-
value: FilterValue,
|
|
8
|
-
): value is { from?: string; to?: string } =>
|
|
9
|
-
typeof value === 'object' && value !== null && !Array.isArray(value)
|
|
10
|
-
|
|
11
|
-
const coerceScalar = (
|
|
12
|
-
value: FilterValue,
|
|
13
|
-
property: DrizzleProperty | null,
|
|
14
|
-
): unknown => {
|
|
15
|
-
if (value == null || typeof value === 'boolean') return value
|
|
16
|
-
if (Array.isArray(value)) return value.map((v) => coerceScalar(v as FilterValue, property))
|
|
17
|
-
if (typeof value === 'number') return value
|
|
18
|
-
if (typeof value !== 'string') return value
|
|
19
|
-
if (!property) return value
|
|
20
|
-
switch (property.type()) {
|
|
21
|
-
case 'number':
|
|
22
|
-
case 'currency': {
|
|
23
|
-
const n = Number(value)
|
|
24
|
-
return Number.isFinite(n) ? n : value
|
|
25
|
-
}
|
|
26
|
-
case 'float': {
|
|
27
|
-
const n = parseFloat(value)
|
|
28
|
-
return Number.isFinite(n) ? n : value
|
|
29
|
-
}
|
|
30
|
-
case 'boolean':
|
|
31
|
-
return value === 'true' || value === '1'
|
|
32
|
-
case 'date':
|
|
33
|
-
case 'datetime': {
|
|
34
|
-
const d = new Date(value)
|
|
35
|
-
return Number.isNaN(d.getTime()) ? value : d
|
|
36
|
-
}
|
|
37
|
-
default:
|
|
38
|
-
return value
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
6
|
/** Return the case-insensitive `like` function appropriate for the dialect. */
|
|
43
7
|
const ciLike = (column: DrizzleColumn) =>
|
|
44
8
|
(column as DrizzleColumn).columnType?.startsWith('Pg') ? ilike : like
|
|
@@ -194,10 +158,7 @@ const buildOperatorCondition = (
|
|
|
194
158
|
return lt(column as never, coerced as never)
|
|
195
159
|
}
|
|
196
160
|
case 'between': {
|
|
197
|
-
const
|
|
198
|
-
const comma = str.indexOf(',')
|
|
199
|
-
const fromStr = comma >= 0 ? str.slice(0, comma) : str
|
|
200
|
-
const toStr = comma >= 0 ? str.slice(comma + 1) : ''
|
|
161
|
+
const { fromStr, toStr } = parseBetween(value)
|
|
201
162
|
const conds: unknown[] = []
|
|
202
163
|
if (fromStr) conds.push(gte(column as never, coerceScalar(fromStr, property) as never))
|
|
203
164
|
if (toStr) conds.push(lte(column as never, coerceScalar(toStr, property) as never))
|
package/src/resource.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks'
|
|
1
2
|
import { and, asc, count as countFn, eq, gte, ilike, inArray, isNotNull, like, lte, ne, or, sql } from 'drizzle-orm'
|
|
2
3
|
import {
|
|
3
4
|
BaseRecord,
|
|
4
5
|
BaseResource,
|
|
6
|
+
buildDisplaySql,
|
|
7
|
+
isoDate,
|
|
8
|
+
stringifyKey,
|
|
9
|
+
sumValues,
|
|
10
|
+
toDate,
|
|
11
|
+
toNumber,
|
|
5
12
|
type Filter,
|
|
6
13
|
type FindOptions,
|
|
7
14
|
type ParamsType,
|
|
@@ -27,6 +34,18 @@ interface DrizzleResourceInit extends DrizzleResourceConfig {
|
|
|
27
34
|
dialect: DrizzleDialect
|
|
28
35
|
}
|
|
29
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Ambient transaction context. Module-level (not per-resource) on purpose:
|
|
39
|
+
* inside `transaction(fn)` the callback often touches *other* resources
|
|
40
|
+
* backed by the same Drizzle client (e.g. the junction resource in an m2m
|
|
41
|
+
* diff, every record in a bulk delete) — they must all see the tx client,
|
|
42
|
+
* not the base one. `base` is stored alongside `tx` so a resource bound to
|
|
43
|
+
* a *different* Drizzle client never accidentally picks up a foreign
|
|
44
|
+
* transaction: cross-client atomicity is impossible, so it falls back to
|
|
45
|
+
* its own client.
|
|
46
|
+
*/
|
|
47
|
+
const txStorage = new AsyncLocalStorage<{ base: DrizzleClientLike; tx: DrizzleClientLike }>()
|
|
48
|
+
|
|
30
49
|
const isInit = (raw: unknown): raw is DrizzleResourceInit =>
|
|
31
50
|
typeof raw === 'object' &&
|
|
32
51
|
raw !== null &&
|
|
@@ -95,9 +114,24 @@ export class DrizzleResource extends BaseResource {
|
|
|
95
114
|
return this._properties.find((p) => p.path() === path) ?? null
|
|
96
115
|
}
|
|
97
116
|
|
|
117
|
+
/** Active client: the ambient transaction client when inside `transaction(fn)`. */
|
|
118
|
+
private db(): DrizzleClientLike {
|
|
119
|
+
const store = txStorage.getStore()
|
|
120
|
+
return store && store.base === this.client ? store.tx : this.client
|
|
121
|
+
}
|
|
122
|
+
|
|
98
123
|
private castId(id: string | number): unknown {
|
|
99
124
|
if (typeof id === 'number') return id
|
|
100
|
-
|
|
125
|
+
// BigInt ids must round-trip through BigInt — Number() silently loses
|
|
126
|
+
// precision above 2^53, so the lookup would target a neighbouring id.
|
|
127
|
+
if (this.idColumn.dataType === 'bigint') {
|
|
128
|
+
try {
|
|
129
|
+
return BigInt(id)
|
|
130
|
+
} catch {
|
|
131
|
+
return id
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (this.idColumn.dataType === 'number') {
|
|
101
135
|
const n = Number(id)
|
|
102
136
|
return Number.isFinite(n) ? n : id
|
|
103
137
|
}
|
|
@@ -136,7 +170,7 @@ export class DrizzleResource extends BaseResource {
|
|
|
136
170
|
|
|
137
171
|
// Use select + groupBy for DISTINCT — avoids requiring selectDistinct
|
|
138
172
|
// on the client interface while producing the same SQL result.
|
|
139
|
-
const rows = (await this.
|
|
173
|
+
const rows = (await this.db()
|
|
140
174
|
.select({ value: column })
|
|
141
175
|
.from(this.table)
|
|
142
176
|
.where(where as unknown)
|
|
@@ -151,7 +185,7 @@ export class DrizzleResource extends BaseResource {
|
|
|
151
185
|
|
|
152
186
|
override async count(filter: Filter): Promise<number> {
|
|
153
187
|
const where = filterToWhere(filter, this.table)
|
|
154
|
-
let qb = this.
|
|
188
|
+
let qb = this.db().select({ value: countFn() }).from(this.table)
|
|
155
189
|
if (where !== undefined) qb = qb.where(where)
|
|
156
190
|
const rows = (await qb) as Array<{ value: number | string }>
|
|
157
191
|
const v = rows[0]?.value ?? 0
|
|
@@ -161,7 +195,7 @@ export class DrizzleResource extends BaseResource {
|
|
|
161
195
|
override async find(filter: Filter, options: FindOptions): Promise<BaseRecord[]> {
|
|
162
196
|
const where = filterToWhere(filter, this.table)
|
|
163
197
|
const { limit, offset, orderBy } = findOptionsToDrizzle(options, this.table)
|
|
164
|
-
let qb = this.
|
|
198
|
+
let qb = this.db().select().from(this.table)
|
|
165
199
|
if (where !== undefined) qb = qb.where(where)
|
|
166
200
|
if (orderBy !== undefined) qb = qb.orderBy(orderBy)
|
|
167
201
|
if (limit !== undefined) qb = qb.limit(limit)
|
|
@@ -193,7 +227,7 @@ export class DrizzleResource extends BaseResource {
|
|
|
193
227
|
if (conds.length === 0) return []
|
|
194
228
|
const where =
|
|
195
229
|
conds.length === 1 ? conds[0] : or(...(conds as never[]))
|
|
196
|
-
const rows = (await this.
|
|
230
|
+
const rows = (await this.db()
|
|
197
231
|
.select()
|
|
198
232
|
.from(this.table)
|
|
199
233
|
.where(where as unknown)
|
|
@@ -202,7 +236,7 @@ export class DrizzleResource extends BaseResource {
|
|
|
202
236
|
}
|
|
203
237
|
|
|
204
238
|
override async findOne(id: string): Promise<BaseRecord | null> {
|
|
205
|
-
const rows = (await this.
|
|
239
|
+
const rows = (await this.db()
|
|
206
240
|
.select()
|
|
207
241
|
.from(this.table)
|
|
208
242
|
.where(eq(this.idColumn as never, this.castId(id) as never))
|
|
@@ -214,7 +248,7 @@ export class DrizzleResource extends BaseResource {
|
|
|
214
248
|
override async findMany(ids: Array<string | number>): Promise<BaseRecord[]> {
|
|
215
249
|
if (ids.length === 0) return []
|
|
216
250
|
const cast = ids.map((id) => this.castId(id))
|
|
217
|
-
const rows = (await this.
|
|
251
|
+
const rows = (await this.db()
|
|
218
252
|
.select()
|
|
219
253
|
.from(this.table)
|
|
220
254
|
.where(inArray(this.idColumn as never, cast as never))) as ParamsType[]
|
|
@@ -222,7 +256,7 @@ export class DrizzleResource extends BaseResource {
|
|
|
222
256
|
}
|
|
223
257
|
|
|
224
258
|
override async create(params: ParamsType): Promise<ParamsType> {
|
|
225
|
-
const rows = await this.
|
|
259
|
+
const rows = await this.db()
|
|
226
260
|
.insert(this.table)
|
|
227
261
|
.values(this.writableData(params))
|
|
228
262
|
.returning()
|
|
@@ -230,7 +264,7 @@ export class DrizzleResource extends BaseResource {
|
|
|
230
264
|
}
|
|
231
265
|
|
|
232
266
|
override async update(id: string, params: ParamsType): Promise<ParamsType> {
|
|
233
|
-
const rows = await this.
|
|
267
|
+
const rows = await this.db()
|
|
234
268
|
.update(this.table)
|
|
235
269
|
.set(this.writableData(params))
|
|
236
270
|
.where(eq(this.idColumn as never, this.castId(id) as never))
|
|
@@ -239,11 +273,24 @@ export class DrizzleResource extends BaseResource {
|
|
|
239
273
|
}
|
|
240
274
|
|
|
241
275
|
override async delete(id: string): Promise<void> {
|
|
242
|
-
await this.
|
|
276
|
+
await this.db()
|
|
243
277
|
.delete(this.table)
|
|
244
278
|
.where(eq(this.idColumn as never, this.castId(id) as never))
|
|
245
279
|
}
|
|
246
280
|
|
|
281
|
+
override async deleteMany(filter: Filter): Promise<number> {
|
|
282
|
+
const where = filterToWhere(filter, this.table)
|
|
283
|
+
const builder = this.db().delete(this.table)
|
|
284
|
+
// `returning()` gives an accurate, driver-agnostic deleted-row count on
|
|
285
|
+
// the dialects this adapter targets (Postgres/SQLite), mirroring the
|
|
286
|
+
// `create`/`update` paths above.
|
|
287
|
+
const rows =
|
|
288
|
+
where !== undefined
|
|
289
|
+
? await builder.where(where).returning()
|
|
290
|
+
: await builder.returning()
|
|
291
|
+
return rows.length
|
|
292
|
+
}
|
|
293
|
+
|
|
247
294
|
override supportsTimeSeries(): boolean {
|
|
248
295
|
return true
|
|
249
296
|
}
|
|
@@ -314,7 +361,7 @@ export class DrizzleResource extends BaseResource {
|
|
|
314
361
|
if (query.step !== 'all') select.bucket = bucketSql
|
|
315
362
|
if (groupCol) select.series_key = groupCol
|
|
316
363
|
|
|
317
|
-
let qb = this.
|
|
364
|
+
let qb = this.db().select(select).from(this.table).where(where as unknown)
|
|
318
365
|
const groupKeys: unknown[] = []
|
|
319
366
|
if (query.step !== 'all') groupKeys.push(bucketSql)
|
|
320
367
|
if (groupCol) groupKeys.push(groupCol)
|
|
@@ -327,9 +374,20 @@ export class DrizzleResource extends BaseResource {
|
|
|
327
374
|
const fromIso = isoDate(query.from)
|
|
328
375
|
const seriesMap = new Map<string, Map<string, number>>()
|
|
329
376
|
for (const row of rows) {
|
|
377
|
+
// A bucket whose rows are all NULL aggregates to a NULL value (SUM/AVG/
|
|
378
|
+
// MIN/MAX). The Prisma adapter emits no point for such buckets — skip
|
|
379
|
+
// the row so both adapters agree. COUNT(*) is never NULL.
|
|
380
|
+
if (row.value == null) continue
|
|
330
381
|
const seriesKey = groupCol ? stringifyKey(row.series_key) : '__total__'
|
|
331
|
-
|
|
332
|
-
|
|
382
|
+
let bucketKey: string
|
|
383
|
+
if (query.step === 'all') {
|
|
384
|
+
bucketKey = fromIso
|
|
385
|
+
} else {
|
|
386
|
+
const bucketDate = toDate(row.bucket)
|
|
387
|
+
// isoDate() throws on Invalid Date — drop the row instead of 500ing.
|
|
388
|
+
if (Number.isNaN(bucketDate.getTime())) continue
|
|
389
|
+
bucketKey = isoDate(bucketDate)
|
|
390
|
+
}
|
|
333
391
|
const num = toNumber(row.value)
|
|
334
392
|
let inner = seriesMap.get(seriesKey)
|
|
335
393
|
if (!inner) {
|
|
@@ -373,8 +431,13 @@ export class DrizzleResource extends BaseResource {
|
|
|
373
431
|
}
|
|
374
432
|
|
|
375
433
|
override async transaction<T>(fn: () => Promise<T>): Promise<T> {
|
|
434
|
+
const active = txStorage.getStore()
|
|
435
|
+
// Already inside a transaction on this client — join it.
|
|
436
|
+
if (active && active.base === this.client) return fn()
|
|
376
437
|
if (typeof this.client.transaction !== 'function') return fn()
|
|
377
|
-
return this.client.transaction(
|
|
438
|
+
return this.client.transaction((tx) =>
|
|
439
|
+
txStorage.run({ base: this.client, tx }, fn),
|
|
440
|
+
)
|
|
378
441
|
}
|
|
379
442
|
}
|
|
380
443
|
|
|
@@ -389,26 +452,24 @@ const bucketExpr = (
|
|
|
389
452
|
if (dialect === 'pg') {
|
|
390
453
|
return sql`DATE_TRUNC(${step}, ${dateCol})`
|
|
391
454
|
}
|
|
455
|
+
// Week buckets must land on the ISO Monday as a plain `YYYY-MM-DD` date —
|
|
456
|
+
// the canonical bucket-key format shared with pg DATE_TRUNC and the Prisma
|
|
457
|
+
// adapter's truncateDate(). Week-label formats ('%x-W%v', '%Y-W%W') are not
|
|
458
|
+
// parseable dates and would break the bucket-key mapping below.
|
|
392
459
|
if (dialect === 'mysql') {
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
: step === 'month'
|
|
399
|
-
? '%Y-%m-01'
|
|
400
|
-
: '%Y-01-01'
|
|
460
|
+
if (step === 'week') {
|
|
461
|
+
// WEEKDAY() is 0-based on Monday.
|
|
462
|
+
return sql`DATE(DATE_SUB(${dateCol}, INTERVAL WEEKDAY(${dateCol}) DAY))`
|
|
463
|
+
}
|
|
464
|
+
const fmt = step === 'day' ? '%Y-%m-%d' : step === 'month' ? '%Y-%m-01' : '%Y-01-01'
|
|
401
465
|
return sql`DATE_FORMAT(${dateCol}, ${fmt})`
|
|
402
466
|
}
|
|
403
467
|
// sqlite
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
: step === 'month'
|
|
410
|
-
? '%Y-%m-01'
|
|
411
|
-
: '%Y-01-01'
|
|
468
|
+
if (step === 'week') {
|
|
469
|
+
// %w is 0-based on Sunday; shift back to the Monday of the ISO week.
|
|
470
|
+
return sql`DATE(${dateCol}, '-' || ((CAST(STRFTIME('%w', ${dateCol}) AS INTEGER) + 6) % 7) || ' days')`
|
|
471
|
+
}
|
|
472
|
+
const fmt = step === 'day' ? '%Y-%m-%d' : step === 'month' ? '%Y-%m-01' : '%Y-01-01'
|
|
412
473
|
return sql`STRFTIME(${fmt}, ${dateCol})`
|
|
413
474
|
}
|
|
414
475
|
|
|
@@ -432,96 +493,3 @@ const metricExpr = (
|
|
|
432
493
|
}
|
|
433
494
|
}
|
|
434
495
|
|
|
435
|
-
const isoDate = (d: Date): string => d.toISOString().slice(0, 10)
|
|
436
|
-
|
|
437
|
-
const toDate = (v: unknown): Date => {
|
|
438
|
-
if (v instanceof Date) return v
|
|
439
|
-
if (typeof v === 'string' || typeof v === 'number') return new Date(v)
|
|
440
|
-
return new Date(String(v))
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
const toNumber = (v: unknown): number => {
|
|
444
|
-
if (typeof v === 'number') return v
|
|
445
|
-
if (v == null) return 0
|
|
446
|
-
const n = Number(v)
|
|
447
|
-
return Number.isFinite(n) ? n : 0
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
const stringifyKey = (v: unknown): string => {
|
|
451
|
-
if (v == null) return '__null__'
|
|
452
|
-
if (typeof v === 'string') return v
|
|
453
|
-
return String(v)
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
const sumValues = (m: Map<string, number>): number => {
|
|
457
|
-
let s = 0
|
|
458
|
-
for (const v of m.values()) s += v
|
|
459
|
-
return s
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
const buildDisplaySql = (
|
|
463
|
-
dialect: DrizzleDialect,
|
|
464
|
-
tableName: string,
|
|
465
|
-
query: TimeSeriesQuery,
|
|
466
|
-
filter: Filter,
|
|
467
|
-
): string => {
|
|
468
|
-
const ident = (s: string) => (dialect === 'mysql' ? `\`${s}\`` : `"${s}"`)
|
|
469
|
-
const t = ident(tableName)
|
|
470
|
-
const dateCol = ident(query.dateField)
|
|
471
|
-
const bucket =
|
|
472
|
-
query.step === 'all'
|
|
473
|
-
? `MIN(${dateCol})`
|
|
474
|
-
: dialect === 'pg'
|
|
475
|
-
? `DATE_TRUNC('${query.step}', ${dateCol})`
|
|
476
|
-
: dialect === 'mysql'
|
|
477
|
-
? `DATE_FORMAT(${dateCol}, ${mysqlFmt(query.step)})`
|
|
478
|
-
: `STRFTIME(${sqliteFmt(query.step)}, ${dateCol})`
|
|
479
|
-
const metric =
|
|
480
|
-
query.metric === 'count'
|
|
481
|
-
? 'COUNT(*)'
|
|
482
|
-
: `${query.metric.toUpperCase()}(${ident(query.field as string)})`
|
|
483
|
-
const cols: string[] = []
|
|
484
|
-
if (query.step !== 'all') cols.push(`${bucket} AS bucket`)
|
|
485
|
-
cols.push(`${metric} AS value`)
|
|
486
|
-
if (query.groupBy) cols.push(`${ident(query.groupBy)} AS series_key`)
|
|
487
|
-
|
|
488
|
-
const where: string[] = [
|
|
489
|
-
`${dateCol} >= '${query.from.toISOString()}'`,
|
|
490
|
-
`${dateCol} <= '${query.to.toISOString()}'`,
|
|
491
|
-
]
|
|
492
|
-
filter.reduce<null>((_, el) => {
|
|
493
|
-
where.push(`${ident(el.path)} = '${String(el.value)}'`)
|
|
494
|
-
return null
|
|
495
|
-
}, null)
|
|
496
|
-
|
|
497
|
-
const groupBy: string[] = []
|
|
498
|
-
if (query.step !== 'all') groupBy.push('bucket')
|
|
499
|
-
if (query.groupBy) groupBy.push('series_key')
|
|
500
|
-
|
|
501
|
-
const lines = [
|
|
502
|
-
`SELECT ${cols.join(', ')}`,
|
|
503
|
-
`FROM ${t}`,
|
|
504
|
-
`WHERE ${where.join(' AND ')}`,
|
|
505
|
-
]
|
|
506
|
-
if (groupBy.length) lines.push(`GROUP BY ${groupBy.join(', ')}`)
|
|
507
|
-
if (query.step !== 'all') lines.push('ORDER BY bucket ASC')
|
|
508
|
-
return lines.join('\n')
|
|
509
|
-
}
|
|
510
|
-
|
|
511
|
-
const mysqlFmt = (step: TimeSeriesStep): string =>
|
|
512
|
-
step === 'day'
|
|
513
|
-
? "'%Y-%m-%d'"
|
|
514
|
-
: step === 'week'
|
|
515
|
-
? "'%x-W%v'"
|
|
516
|
-
: step === 'month'
|
|
517
|
-
? "'%Y-%m-01'"
|
|
518
|
-
: "'%Y-01-01'"
|
|
519
|
-
|
|
520
|
-
const sqliteFmt = (step: TimeSeriesStep): string =>
|
|
521
|
-
step === 'day'
|
|
522
|
-
? "'%Y-%m-%d'"
|
|
523
|
-
: step === 'week'
|
|
524
|
-
? "'%Y-W%W'"
|
|
525
|
-
: step === 'month'
|
|
526
|
-
? "'%Y-%m-01'"
|
|
527
|
-
: "'%Y-01-01'"
|
package/src/types.ts
CHANGED
|
@@ -50,8 +50,14 @@ export interface DrizzleUpdateBuilder {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
/** Awaitable delete query that also supports `RETURNING` for a deleted count. */
|
|
54
|
+
export type DrizzleDeleteExecutable = Promise<unknown> & {
|
|
55
|
+
returning(): Promise<Array<Record<string, unknown>>>
|
|
56
|
+
}
|
|
57
|
+
|
|
53
58
|
export interface DrizzleDeleteBuilder {
|
|
54
|
-
where(condition: unknown):
|
|
59
|
+
where(condition: unknown): DrizzleDeleteExecutable
|
|
60
|
+
returning(): Promise<Array<Record<string, unknown>>>
|
|
55
61
|
}
|
|
56
62
|
|
|
57
63
|
export interface DrizzleClientLike {
|