@prisma/adapter-mssql 6.10.0-dev.24 → 6.10.0-dev.27
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/dist/index.d.mts +7 -2
- package/dist/index.d.ts +7 -2
- package/dist/index.js +66 -47
- package/dist/index.mjs +32 -13
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
|
-
import
|
|
1
|
+
import sql from 'mssql';
|
|
2
2
|
import { SqlDriverAdapter } from '@prisma/driver-adapter-utils';
|
|
3
3
|
import { SqlDriverAdapterFactory } from '@prisma/driver-adapter-utils';
|
|
4
4
|
|
|
5
5
|
export declare class PrismaMssql implements SqlDriverAdapterFactory {
|
|
6
6
|
private readonly config;
|
|
7
|
+
private readonly options?;
|
|
7
8
|
readonly provider = "sqlserver";
|
|
8
9
|
readonly adapterName: string;
|
|
9
|
-
constructor(config: sql.config);
|
|
10
|
+
constructor(config: sql.config, options?: PrismaMssqlOptions | undefined);
|
|
10
11
|
connect(): Promise<SqlDriverAdapter>;
|
|
11
12
|
}
|
|
12
13
|
|
|
14
|
+
declare type PrismaMssqlOptions = {
|
|
15
|
+
schema?: string;
|
|
16
|
+
};
|
|
17
|
+
|
|
13
18
|
export { }
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
|
-
import
|
|
1
|
+
import sql from 'mssql';
|
|
2
2
|
import { SqlDriverAdapter } from '@prisma/driver-adapter-utils';
|
|
3
3
|
import { SqlDriverAdapterFactory } from '@prisma/driver-adapter-utils';
|
|
4
4
|
|
|
5
5
|
export declare class PrismaMssql implements SqlDriverAdapterFactory {
|
|
6
6
|
private readonly config;
|
|
7
|
+
private readonly options?;
|
|
7
8
|
readonly provider = "sqlserver";
|
|
8
9
|
readonly adapterName: string;
|
|
9
|
-
constructor(config: sql.config);
|
|
10
|
+
constructor(config: sql.config, options?: PrismaMssqlOptions | undefined);
|
|
10
11
|
connect(): Promise<SqlDriverAdapter>;
|
|
11
12
|
}
|
|
12
13
|
|
|
14
|
+
declare type PrismaMssqlOptions = {
|
|
15
|
+
schema?: string;
|
|
16
|
+
};
|
|
17
|
+
|
|
13
18
|
export { }
|
package/dist/index.js
CHANGED
|
@@ -37,75 +37,75 @@ module.exports = __toCommonJS(index_exports);
|
|
|
37
37
|
// src/mssql.ts
|
|
38
38
|
var import_driver_adapter_utils2 = require("@prisma/driver-adapter-utils");
|
|
39
39
|
var import_async_mutex = require("async-mutex");
|
|
40
|
-
var
|
|
40
|
+
var import_mssql2 = __toESM(require("mssql"));
|
|
41
41
|
|
|
42
42
|
// package.json
|
|
43
43
|
var name = "@prisma/adapter-mssql";
|
|
44
44
|
|
|
45
45
|
// src/conversion.ts
|
|
46
46
|
var import_driver_adapter_utils = require("@prisma/driver-adapter-utils");
|
|
47
|
-
var
|
|
47
|
+
var import_mssql = __toESM(require("mssql"));
|
|
48
48
|
function mapColumnType(col) {
|
|
49
49
|
switch (col.type) {
|
|
50
|
-
case
|
|
51
|
-
case
|
|
52
|
-
case
|
|
53
|
-
case
|
|
54
|
-
case
|
|
55
|
-
case
|
|
56
|
-
case
|
|
50
|
+
case import_mssql.default.VarChar:
|
|
51
|
+
case import_mssql.default.Char:
|
|
52
|
+
case import_mssql.default.NVarChar:
|
|
53
|
+
case import_mssql.default.NChar:
|
|
54
|
+
case import_mssql.default.Text:
|
|
55
|
+
case import_mssql.default.NText:
|
|
56
|
+
case import_mssql.default.Xml:
|
|
57
57
|
return import_driver_adapter_utils.ColumnTypeEnum.Text;
|
|
58
|
-
case
|
|
58
|
+
case import_mssql.default.Bit:
|
|
59
59
|
return import_driver_adapter_utils.ColumnTypeEnum.Boolean;
|
|
60
|
-
case
|
|
61
|
-
case
|
|
62
|
-
case
|
|
60
|
+
case import_mssql.default.TinyInt:
|
|
61
|
+
case import_mssql.default.SmallInt:
|
|
62
|
+
case import_mssql.default.Int:
|
|
63
63
|
return import_driver_adapter_utils.ColumnTypeEnum.Int32;
|
|
64
|
-
case
|
|
64
|
+
case import_mssql.default.BigInt:
|
|
65
65
|
return import_driver_adapter_utils.ColumnTypeEnum.Int64;
|
|
66
|
-
case
|
|
67
|
-
case
|
|
68
|
-
case
|
|
69
|
-
case
|
|
66
|
+
case import_mssql.default.DateTime2:
|
|
67
|
+
case import_mssql.default.SmallDateTime:
|
|
68
|
+
case import_mssql.default.DateTime:
|
|
69
|
+
case import_mssql.default.DateTimeOffset:
|
|
70
70
|
return import_driver_adapter_utils.ColumnTypeEnum.DateTime;
|
|
71
|
-
case
|
|
71
|
+
case import_mssql.default.Real:
|
|
72
72
|
return import_driver_adapter_utils.ColumnTypeEnum.Float;
|
|
73
|
-
case
|
|
74
|
-
case
|
|
75
|
-
case
|
|
73
|
+
case import_mssql.default.Float:
|
|
74
|
+
case import_mssql.default.Money:
|
|
75
|
+
case import_mssql.default.SmallMoney:
|
|
76
76
|
return import_driver_adapter_utils.ColumnTypeEnum.Double;
|
|
77
|
-
case
|
|
77
|
+
case import_mssql.default.UniqueIdentifier:
|
|
78
78
|
return import_driver_adapter_utils.ColumnTypeEnum.Uuid;
|
|
79
|
-
case
|
|
80
|
-
case
|
|
79
|
+
case import_mssql.default.Decimal:
|
|
80
|
+
case import_mssql.default.Numeric:
|
|
81
81
|
return import_driver_adapter_utils.ColumnTypeEnum.Numeric;
|
|
82
|
-
case
|
|
82
|
+
case import_mssql.default.Date:
|
|
83
83
|
return import_driver_adapter_utils.ColumnTypeEnum.Date;
|
|
84
|
-
case
|
|
84
|
+
case import_mssql.default.Time:
|
|
85
85
|
return import_driver_adapter_utils.ColumnTypeEnum.Time;
|
|
86
|
-
case
|
|
87
|
-
case
|
|
88
|
-
case
|
|
86
|
+
case import_mssql.default.VarBinary:
|
|
87
|
+
case import_mssql.default.Binary:
|
|
88
|
+
case import_mssql.default.Image:
|
|
89
89
|
return import_driver_adapter_utils.ColumnTypeEnum.Bytes;
|
|
90
90
|
default:
|
|
91
91
|
throw new import_driver_adapter_utils.DriverAdapterError({
|
|
92
92
|
kind: "UnsupportedNativeDataType",
|
|
93
|
-
type:
|
|
93
|
+
type: col["udt"]?.name ?? "N/A"
|
|
94
94
|
});
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
function mapIsolationLevel(level) {
|
|
98
98
|
switch (level) {
|
|
99
99
|
case "READ COMMITTED":
|
|
100
|
-
return
|
|
100
|
+
return import_mssql.default.ISOLATION_LEVEL.READ_COMMITTED;
|
|
101
101
|
case "READ UNCOMMITTED":
|
|
102
|
-
return
|
|
102
|
+
return import_mssql.default.ISOLATION_LEVEL.READ_UNCOMMITTED;
|
|
103
103
|
case "REPEATABLE READ":
|
|
104
|
-
return
|
|
104
|
+
return import_mssql.default.ISOLATION_LEVEL.REPEATABLE_READ;
|
|
105
105
|
case "SERIALIZABLE":
|
|
106
|
-
return
|
|
106
|
+
return import_mssql.default.ISOLATION_LEVEL.SERIALIZABLE;
|
|
107
107
|
case "SNAPSHOT":
|
|
108
|
-
return
|
|
108
|
+
return import_mssql.default.ISOLATION_LEVEL.SNAPSHOT;
|
|
109
109
|
default:
|
|
110
110
|
throw new import_driver_adapter_utils.DriverAdapterError({
|
|
111
111
|
kind: "InvalidIsolationLevel",
|
|
@@ -125,14 +125,23 @@ function mapArg(arg) {
|
|
|
125
125
|
}
|
|
126
126
|
return arg;
|
|
127
127
|
}
|
|
128
|
-
function mapRow(row) {
|
|
129
|
-
return row.map((value) => {
|
|
128
|
+
function mapRow(row, columns) {
|
|
129
|
+
return row.map((value, i) => {
|
|
130
130
|
if (value instanceof Date) {
|
|
131
|
+
if (columns?.[i]?.type === import_mssql.default.Time) {
|
|
132
|
+
return value.toISOString().split("T").at(1)?.replace("Z", "");
|
|
133
|
+
}
|
|
131
134
|
return value.toISOString();
|
|
132
135
|
}
|
|
133
136
|
if (Buffer.isBuffer(value)) {
|
|
134
137
|
return Array.from(value);
|
|
135
138
|
}
|
|
139
|
+
if (typeof value === "string" && columns?.[i].type === import_mssql.default.UniqueIdentifier) {
|
|
140
|
+
return value.toLowerCase();
|
|
141
|
+
}
|
|
142
|
+
if (typeof value === "boolean" && columns?.[i]?.type === import_mssql.default.Bit) {
|
|
143
|
+
return value ? 1 : 0;
|
|
144
|
+
}
|
|
136
145
|
return value;
|
|
137
146
|
});
|
|
138
147
|
}
|
|
@@ -264,11 +273,12 @@ var MssqlQueryable = class {
|
|
|
264
273
|
async queryRaw(query) {
|
|
265
274
|
const tag = "[js::query_raw]";
|
|
266
275
|
debug(`${tag} %O`, query);
|
|
267
|
-
const { recordset, columns } = await this.performIO(query);
|
|
276
|
+
const { recordset, columns: columnsList } = await this.performIO(query);
|
|
277
|
+
const columns = columnsList?.[0];
|
|
268
278
|
return {
|
|
269
|
-
columnNames: columns?.
|
|
270
|
-
columnTypes: columns?.
|
|
271
|
-
rows: recordset?.map(mapRow) ?? []
|
|
279
|
+
columnNames: columns?.map((col) => col.name) ?? [],
|
|
280
|
+
columnTypes: columns?.map(mapColumnType) ?? [],
|
|
281
|
+
rows: recordset?.map((row) => mapRow(row, columns)) ?? []
|
|
272
282
|
};
|
|
273
283
|
}
|
|
274
284
|
async executeRaw(query) {
|
|
@@ -318,13 +328,20 @@ var MssqlTransaction = class extends MssqlQueryable {
|
|
|
318
328
|
}
|
|
319
329
|
async rollback() {
|
|
320
330
|
debug(`[js::rollback]`);
|
|
321
|
-
await this.transaction.rollback()
|
|
331
|
+
await this.transaction.rollback().catch((e) => {
|
|
332
|
+
if (e.code === "EABORT") {
|
|
333
|
+
debug(`[js::rollback] Transaction already aborted`);
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
throw e;
|
|
337
|
+
});
|
|
322
338
|
}
|
|
323
339
|
};
|
|
324
340
|
var PrismaMssqlAdapter = class extends MssqlQueryable {
|
|
325
|
-
constructor(pool) {
|
|
341
|
+
constructor(pool, options) {
|
|
326
342
|
super(pool);
|
|
327
343
|
this.pool = pool;
|
|
344
|
+
this.options = options;
|
|
328
345
|
}
|
|
329
346
|
executeScript(_script) {
|
|
330
347
|
throw new Error("Method not implemented.");
|
|
@@ -345,6 +362,7 @@ var PrismaMssqlAdapter = class extends MssqlQueryable {
|
|
|
345
362
|
}
|
|
346
363
|
getConnectionInfo() {
|
|
347
364
|
return {
|
|
365
|
+
schemaName: this.options?.schema,
|
|
348
366
|
supportsRelationJoins: false
|
|
349
367
|
};
|
|
350
368
|
}
|
|
@@ -353,14 +371,15 @@ var PrismaMssqlAdapter = class extends MssqlQueryable {
|
|
|
353
371
|
}
|
|
354
372
|
};
|
|
355
373
|
var PrismaMssqlAdapterFactory = class {
|
|
356
|
-
constructor(config) {
|
|
374
|
+
constructor(config, options) {
|
|
357
375
|
this.config = config;
|
|
376
|
+
this.options = options;
|
|
358
377
|
}
|
|
359
378
|
provider = "sqlserver";
|
|
360
379
|
adapterName = name;
|
|
361
380
|
async connect() {
|
|
362
|
-
const pool = await
|
|
363
|
-
return new PrismaMssqlAdapter(pool);
|
|
381
|
+
const pool = await import_mssql2.default.connect(this.config);
|
|
382
|
+
return new PrismaMssqlAdapter(pool, this.options);
|
|
364
383
|
}
|
|
365
384
|
};
|
|
366
385
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/index.mjs
CHANGED
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
DriverAdapterError as DriverAdapterError2
|
|
5
5
|
} from "@prisma/driver-adapter-utils";
|
|
6
6
|
import { Mutex } from "async-mutex";
|
|
7
|
-
import
|
|
7
|
+
import sql2 from "mssql";
|
|
8
8
|
|
|
9
9
|
// package.json
|
|
10
10
|
var name = "@prisma/adapter-mssql";
|
|
11
11
|
|
|
12
12
|
// src/conversion.ts
|
|
13
13
|
import { ColumnTypeEnum, DriverAdapterError } from "@prisma/driver-adapter-utils";
|
|
14
|
-
import
|
|
14
|
+
import sql from "mssql";
|
|
15
15
|
function mapColumnType(col) {
|
|
16
16
|
switch (col.type) {
|
|
17
17
|
case sql.VarChar:
|
|
@@ -57,7 +57,7 @@ function mapColumnType(col) {
|
|
|
57
57
|
default:
|
|
58
58
|
throw new DriverAdapterError({
|
|
59
59
|
kind: "UnsupportedNativeDataType",
|
|
60
|
-
type:
|
|
60
|
+
type: col["udt"]?.name ?? "N/A"
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
63
|
}
|
|
@@ -92,14 +92,23 @@ function mapArg(arg) {
|
|
|
92
92
|
}
|
|
93
93
|
return arg;
|
|
94
94
|
}
|
|
95
|
-
function mapRow(row) {
|
|
96
|
-
return row.map((value) => {
|
|
95
|
+
function mapRow(row, columns) {
|
|
96
|
+
return row.map((value, i) => {
|
|
97
97
|
if (value instanceof Date) {
|
|
98
|
+
if (columns?.[i]?.type === sql.Time) {
|
|
99
|
+
return value.toISOString().split("T").at(1)?.replace("Z", "");
|
|
100
|
+
}
|
|
98
101
|
return value.toISOString();
|
|
99
102
|
}
|
|
100
103
|
if (Buffer.isBuffer(value)) {
|
|
101
104
|
return Array.from(value);
|
|
102
105
|
}
|
|
106
|
+
if (typeof value === "string" && columns?.[i].type === sql.UniqueIdentifier) {
|
|
107
|
+
return value.toLowerCase();
|
|
108
|
+
}
|
|
109
|
+
if (typeof value === "boolean" && columns?.[i]?.type === sql.Bit) {
|
|
110
|
+
return value ? 1 : 0;
|
|
111
|
+
}
|
|
103
112
|
return value;
|
|
104
113
|
});
|
|
105
114
|
}
|
|
@@ -231,11 +240,12 @@ var MssqlQueryable = class {
|
|
|
231
240
|
async queryRaw(query) {
|
|
232
241
|
const tag = "[js::query_raw]";
|
|
233
242
|
debug(`${tag} %O`, query);
|
|
234
|
-
const { recordset, columns } = await this.performIO(query);
|
|
243
|
+
const { recordset, columns: columnsList } = await this.performIO(query);
|
|
244
|
+
const columns = columnsList?.[0];
|
|
235
245
|
return {
|
|
236
|
-
columnNames: columns?.
|
|
237
|
-
columnTypes: columns?.
|
|
238
|
-
rows: recordset?.map(mapRow) ?? []
|
|
246
|
+
columnNames: columns?.map((col) => col.name) ?? [],
|
|
247
|
+
columnTypes: columns?.map(mapColumnType) ?? [],
|
|
248
|
+
rows: recordset?.map((row) => mapRow(row, columns)) ?? []
|
|
239
249
|
};
|
|
240
250
|
}
|
|
241
251
|
async executeRaw(query) {
|
|
@@ -285,13 +295,20 @@ var MssqlTransaction = class extends MssqlQueryable {
|
|
|
285
295
|
}
|
|
286
296
|
async rollback() {
|
|
287
297
|
debug(`[js::rollback]`);
|
|
288
|
-
await this.transaction.rollback()
|
|
298
|
+
await this.transaction.rollback().catch((e) => {
|
|
299
|
+
if (e.code === "EABORT") {
|
|
300
|
+
debug(`[js::rollback] Transaction already aborted`);
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
throw e;
|
|
304
|
+
});
|
|
289
305
|
}
|
|
290
306
|
};
|
|
291
307
|
var PrismaMssqlAdapter = class extends MssqlQueryable {
|
|
292
|
-
constructor(pool) {
|
|
308
|
+
constructor(pool, options) {
|
|
293
309
|
super(pool);
|
|
294
310
|
this.pool = pool;
|
|
311
|
+
this.options = options;
|
|
295
312
|
}
|
|
296
313
|
executeScript(_script) {
|
|
297
314
|
throw new Error("Method not implemented.");
|
|
@@ -312,6 +329,7 @@ var PrismaMssqlAdapter = class extends MssqlQueryable {
|
|
|
312
329
|
}
|
|
313
330
|
getConnectionInfo() {
|
|
314
331
|
return {
|
|
332
|
+
schemaName: this.options?.schema,
|
|
315
333
|
supportsRelationJoins: false
|
|
316
334
|
};
|
|
317
335
|
}
|
|
@@ -320,14 +338,15 @@ var PrismaMssqlAdapter = class extends MssqlQueryable {
|
|
|
320
338
|
}
|
|
321
339
|
};
|
|
322
340
|
var PrismaMssqlAdapterFactory = class {
|
|
323
|
-
constructor(config) {
|
|
341
|
+
constructor(config, options) {
|
|
324
342
|
this.config = config;
|
|
343
|
+
this.options = options;
|
|
325
344
|
}
|
|
326
345
|
provider = "sqlserver";
|
|
327
346
|
adapterName = name;
|
|
328
347
|
async connect() {
|
|
329
348
|
const pool = await sql2.connect(this.config);
|
|
330
|
-
return new PrismaMssqlAdapter(pool);
|
|
349
|
+
return new PrismaMssqlAdapter(pool, this.options);
|
|
331
350
|
}
|
|
332
351
|
};
|
|
333
352
|
export {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma/adapter-mssql",
|
|
3
|
-
"version": "6.10.0-dev.
|
|
3
|
+
"version": "6.10.0-dev.27",
|
|
4
4
|
"description": "Prisma's driver adapter for \"mssql\"",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"mssql": "^11.0.1",
|
|
35
35
|
"async-mutex": "0.5.0",
|
|
36
|
-
"@prisma/driver-adapter-utils": "6.10.0-dev.
|
|
36
|
+
"@prisma/driver-adapter-utils": "6.10.0-dev.27"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/mssql": "9.1.7",
|