@prisma/adapter-mariadb 6.17.0-dev.3 → 6.17.0-dev.30

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
@@ -26,6 +26,7 @@ declare class MariaDbQueryable<Connection extends mariadb.Pool | mariadb.Connect
26
26
  queryRaw(query: SqlQuery): Promise<SqlResultSet>;
27
27
  executeRaw(query: SqlQuery): Promise<number>;
28
28
  protected performIO(query: SqlQuery): Promise<ArrayModeResult>;
29
+ protected onError(error: unknown): never;
29
30
  }
30
31
 
31
32
  export declare class PrismaMariaDb implements SqlDriverAdapterFactory {
package/dist/index.d.ts CHANGED
@@ -26,6 +26,7 @@ declare class MariaDbQueryable<Connection extends mariadb.Pool | mariadb.Connect
26
26
  queryRaw(query: SqlQuery): Promise<SqlResultSet>;
27
27
  executeRaw(query: SqlQuery): Promise<number>;
28
28
  protected performIO(query: SqlQuery): Promise<ArrayModeResult>;
29
+ protected onError(error: unknown): never;
29
30
  }
30
31
 
31
32
  export declare class PrismaMariaDb implements SqlDriverAdapterFactory {
package/dist/index.js CHANGED
@@ -84,7 +84,10 @@ function mapColumnType(field) {
84
84
  case "BLOB" /* BLOB */:
85
85
  case "TINY_BLOB" /* TINY_BLOB */:
86
86
  case "MEDIUM_BLOB" /* MEDIUM_BLOB */:
87
- if (field.flags.valueOf() & BINARY_FLAG) {
87
+ case "LONG_BLOB" /* LONG_BLOB */:
88
+ if (field["dataTypeFormat"] === "json") {
89
+ return import_driver_adapter_utils.ColumnTypeEnum.Json;
90
+ } else if (field.flags.valueOf() & BINARY_FLAG) {
88
91
  return import_driver_adapter_utils.ColumnTypeEnum.Bytes;
89
92
  } else {
90
93
  return import_driver_adapter_utils.ColumnTypeEnum.Text;
@@ -333,6 +336,8 @@ var MariaDbQueryable = class {
333
336
  sql,
334
337
  rowsAsArray: true,
335
338
  dateStrings: true,
339
+ // Disable automatic conversion of JSON blobs to objects.
340
+ autoJsonMap: false,
336
341
  // Return JSON strings as strings, not objects.
337
342
  // Available in the driver, but not provided in the typings.
338
343
  jsonStrings: true,
@@ -345,25 +350,28 @@ var MariaDbQueryable = class {
345
350
  return await this.client.query(req, values);
346
351
  } catch (e) {
347
352
  const error = e;
348
- onError(error);
353
+ this.onError(error);
349
354
  }
350
355
  }
356
+ onError(error) {
357
+ debug("Error in performIO: %O", error);
358
+ throw new import_driver_adapter_utils2.DriverAdapterError(convertDriverError(error));
359
+ }
351
360
  };
352
- function onError(error) {
353
- debug("Error in performIO: %O", error);
354
- throw new import_driver_adapter_utils2.DriverAdapterError(convertDriverError(error));
355
- }
356
361
  var MariaDbTransaction = class extends MariaDbQueryable {
357
- constructor(conn, options) {
362
+ constructor(conn, options, cleanup) {
358
363
  super(conn);
359
364
  this.options = options;
365
+ this.cleanup = cleanup;
360
366
  }
361
367
  async commit() {
362
368
  debug(`[js::commit]`);
369
+ this.cleanup?.();
363
370
  await this.client.end();
364
371
  }
365
372
  async rollback() {
366
373
  debug(`[js::rollback]`);
374
+ this.cleanup?.();
367
375
  await this.client.end();
368
376
  }
369
377
  };
@@ -388,13 +396,17 @@ var PrismaMariaDbAdapter = class extends MariaDbQueryable {
388
396
  };
389
397
  const tag = "[js::startTransaction]";
390
398
  debug("%s options: %O", tag, options);
391
- const conn = await this.client.getConnection().catch((error) => onError(error));
392
- conn.on("error", (err) => {
399
+ const conn = await this.client.getConnection().catch((error) => this.onError(error));
400
+ const onError = (err) => {
393
401
  debug(`Error from connection: ${err.message} %O`, err);
394
402
  this.options?.onConnectionError?.(err);
395
- });
403
+ };
404
+ conn.on("error", onError);
405
+ const cleanup = () => {
406
+ conn.removeListener("error", onError);
407
+ };
396
408
  try {
397
- const tx = new MariaDbTransaction(conn, options);
409
+ const tx = new MariaDbTransaction(conn, options, cleanup);
398
410
  if (isolationLevel) {
399
411
  await tx.executeRaw({
400
412
  sql: `SET TRANSACTION ISOLATION LEVEL ${isolationLevel}`,
@@ -406,7 +418,8 @@ var PrismaMariaDbAdapter = class extends MariaDbQueryable {
406
418
  return tx;
407
419
  } catch (error) {
408
420
  await conn.end();
409
- onError(error);
421
+ cleanup();
422
+ this.onError(error);
410
423
  }
411
424
  }
412
425
  async dispose() {
package/dist/index.mjs CHANGED
@@ -48,7 +48,10 @@ function mapColumnType(field) {
48
48
  case "BLOB" /* BLOB */:
49
49
  case "TINY_BLOB" /* TINY_BLOB */:
50
50
  case "MEDIUM_BLOB" /* MEDIUM_BLOB */:
51
- if (field.flags.valueOf() & BINARY_FLAG) {
51
+ case "LONG_BLOB" /* LONG_BLOB */:
52
+ if (field["dataTypeFormat"] === "json") {
53
+ return ColumnTypeEnum.Json;
54
+ } else if (field.flags.valueOf() & BINARY_FLAG) {
52
55
  return ColumnTypeEnum.Bytes;
53
56
  } else {
54
57
  return ColumnTypeEnum.Text;
@@ -297,6 +300,8 @@ var MariaDbQueryable = class {
297
300
  sql,
298
301
  rowsAsArray: true,
299
302
  dateStrings: true,
303
+ // Disable automatic conversion of JSON blobs to objects.
304
+ autoJsonMap: false,
300
305
  // Return JSON strings as strings, not objects.
301
306
  // Available in the driver, but not provided in the typings.
302
307
  jsonStrings: true,
@@ -309,25 +314,28 @@ var MariaDbQueryable = class {
309
314
  return await this.client.query(req, values);
310
315
  } catch (e) {
311
316
  const error = e;
312
- onError(error);
317
+ this.onError(error);
313
318
  }
314
319
  }
320
+ onError(error) {
321
+ debug("Error in performIO: %O", error);
322
+ throw new DriverAdapterError(convertDriverError(error));
323
+ }
315
324
  };
316
- function onError(error) {
317
- debug("Error in performIO: %O", error);
318
- throw new DriverAdapterError(convertDriverError(error));
319
- }
320
325
  var MariaDbTransaction = class extends MariaDbQueryable {
321
- constructor(conn, options) {
326
+ constructor(conn, options, cleanup) {
322
327
  super(conn);
323
328
  this.options = options;
329
+ this.cleanup = cleanup;
324
330
  }
325
331
  async commit() {
326
332
  debug(`[js::commit]`);
333
+ this.cleanup?.();
327
334
  await this.client.end();
328
335
  }
329
336
  async rollback() {
330
337
  debug(`[js::rollback]`);
338
+ this.cleanup?.();
331
339
  await this.client.end();
332
340
  }
333
341
  };
@@ -352,13 +360,17 @@ var PrismaMariaDbAdapter = class extends MariaDbQueryable {
352
360
  };
353
361
  const tag = "[js::startTransaction]";
354
362
  debug("%s options: %O", tag, options);
355
- const conn = await this.client.getConnection().catch((error) => onError(error));
356
- conn.on("error", (err) => {
363
+ const conn = await this.client.getConnection().catch((error) => this.onError(error));
364
+ const onError = (err) => {
357
365
  debug(`Error from connection: ${err.message} %O`, err);
358
366
  this.options?.onConnectionError?.(err);
359
- });
367
+ };
368
+ conn.on("error", onError);
369
+ const cleanup = () => {
370
+ conn.removeListener("error", onError);
371
+ };
360
372
  try {
361
- const tx = new MariaDbTransaction(conn, options);
373
+ const tx = new MariaDbTransaction(conn, options, cleanup);
362
374
  if (isolationLevel) {
363
375
  await tx.executeRaw({
364
376
  sql: `SET TRANSACTION ISOLATION LEVEL ${isolationLevel}`,
@@ -370,7 +382,8 @@ var PrismaMariaDbAdapter = class extends MariaDbQueryable {
370
382
  return tx;
371
383
  } catch (error) {
372
384
  await conn.end();
373
- onError(error);
385
+ cleanup();
386
+ this.onError(error);
374
387
  }
375
388
  }
376
389
  async dispose() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prisma/adapter-mariadb",
3
- "version": "6.17.0-dev.3",
3
+ "version": "6.17.0-dev.30",
4
4
  "description": "Prisma's driver adapter for \"mariadb\"",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -32,7 +32,7 @@
32
32
  "sideEffects": false,
33
33
  "dependencies": {
34
34
  "mariadb": "3.4.5",
35
- "@prisma/driver-adapter-utils": "6.17.0-dev.3"
35
+ "@prisma/driver-adapter-utils": "6.17.0-dev.30"
36
36
  },
37
37
  "scripts": {
38
38
  "dev": "DEV=true tsx helpers/build.ts",