@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 CHANGED
@@ -1,13 +1,18 @@
1
- import * as sql from 'mssql';
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 * as sql from 'mssql';
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 sql2 = __toESM(require("mssql"));
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 sql = __toESM(require("mssql"));
47
+ var import_mssql = __toESM(require("mssql"));
48
48
  function mapColumnType(col) {
49
49
  switch (col.type) {
50
- case sql.VarChar:
51
- case sql.Char:
52
- case sql.NVarChar:
53
- case sql.NChar:
54
- case sql.Text:
55
- case sql.NText:
56
- case sql.Xml:
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 sql.Bit:
58
+ case import_mssql.default.Bit:
59
59
  return import_driver_adapter_utils.ColumnTypeEnum.Boolean;
60
- case sql.TinyInt:
61
- case sql.SmallInt:
62
- case sql.Int:
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 sql.BigInt:
64
+ case import_mssql.default.BigInt:
65
65
  return import_driver_adapter_utils.ColumnTypeEnum.Int64;
66
- case sql.DateTime2:
67
- case sql.SmallDateTime:
68
- case sql.DateTime:
69
- case sql.DateTimeOffset:
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 sql.Real:
71
+ case import_mssql.default.Real:
72
72
  return import_driver_adapter_utils.ColumnTypeEnum.Float;
73
- case sql.Float:
74
- case sql.Money:
75
- case sql.SmallMoney:
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 sql.UniqueIdentifier:
77
+ case import_mssql.default.UniqueIdentifier:
78
78
  return import_driver_adapter_utils.ColumnTypeEnum.Uuid;
79
- case sql.Decimal:
80
- case sql.Numeric:
79
+ case import_mssql.default.Decimal:
80
+ case import_mssql.default.Numeric:
81
81
  return import_driver_adapter_utils.ColumnTypeEnum.Numeric;
82
- case sql.Date:
82
+ case import_mssql.default.Date:
83
83
  return import_driver_adapter_utils.ColumnTypeEnum.Date;
84
- case sql.Time:
84
+ case import_mssql.default.Time:
85
85
  return import_driver_adapter_utils.ColumnTypeEnum.Time;
86
- case sql.VarBinary:
87
- case sql.Binary:
88
- case sql.Image:
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: `${col.type["constructor"].name}`
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 sql.ISOLATION_LEVEL.READ_COMMITTED;
100
+ return import_mssql.default.ISOLATION_LEVEL.READ_COMMITTED;
101
101
  case "READ UNCOMMITTED":
102
- return sql.ISOLATION_LEVEL.READ_UNCOMMITTED;
102
+ return import_mssql.default.ISOLATION_LEVEL.READ_UNCOMMITTED;
103
103
  case "REPEATABLE READ":
104
- return sql.ISOLATION_LEVEL.REPEATABLE_READ;
104
+ return import_mssql.default.ISOLATION_LEVEL.REPEATABLE_READ;
105
105
  case "SERIALIZABLE":
106
- return sql.ISOLATION_LEVEL.SERIALIZABLE;
106
+ return import_mssql.default.ISOLATION_LEVEL.SERIALIZABLE;
107
107
  case "SNAPSHOT":
108
- return sql.ISOLATION_LEVEL.SNAPSHOT;
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?.[0]?.map((col) => col.name) ?? [],
270
- columnTypes: columns?.[0]?.map(mapColumnType) ?? [],
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 sql2.connect(this.config);
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 * as sql2 from "mssql";
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 * as sql from "mssql";
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: `${col.type["constructor"].name}`
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?.[0]?.map((col) => col.name) ?? [],
237
- columnTypes: columns?.[0]?.map(mapColumnType) ?? [],
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.24",
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.24"
36
+ "@prisma/driver-adapter-utils": "6.10.0-dev.27"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@types/mssql": "9.1.7",