@prisma/adapter-libsql
Advanced tools
Comparing version
import type { Client } from '@libsql/client'; | ||
import type { DriverAdapter } from '@prisma/driver-adapter-utils'; | ||
import { Mutex } from 'async-mutex'; | ||
import type { Query } from '@prisma/driver-adapter-utils'; | ||
import type { Queryable } from '@prisma/driver-adapter-utils'; | ||
import type { Result } from '@prisma/driver-adapter-utils'; | ||
import type { ResultSet } from '@prisma/driver-adapter-utils'; | ||
import type { SqlConnection } from '@prisma/driver-adapter-utils'; | ||
import type { SqlQuery } from '@prisma/driver-adapter-utils'; | ||
import type { SqlQueryable } from '@prisma/driver-adapter-utils'; | ||
import type { SqlResultSet } from '@prisma/driver-adapter-utils'; | ||
import type { Transaction } from '@libsql/client'; | ||
import type { TransactionContext } from '@prisma/driver-adapter-utils'; | ||
declare class LibSqlQueryable<ClientT extends StdClient | TransactionClient> implements Queryable { | ||
declare class LibSqlQueryable<ClientT extends StdClient | TransactionClient> implements SqlQueryable { | ||
protected readonly client: ClientT; | ||
@@ -20,3 +19,3 @@ readonly provider = "sqlite"; | ||
*/ | ||
queryRaw(query: Query): Promise<Result<ResultSet>>; | ||
queryRaw(query: SqlQuery): Promise<SqlResultSet>; | ||
/** | ||
@@ -27,3 +26,3 @@ * Execute a query given as SQL, interpolating the given parameters and | ||
*/ | ||
executeRaw(query: Query): Promise<Result<number>>; | ||
executeRaw(query: SqlQuery): Promise<number>; | ||
/** | ||
@@ -35,2 +34,3 @@ * Run a query against the database, returning the result set. | ||
private performIO; | ||
protected onError(error: any): never; | ||
} | ||
@@ -40,5 +40,7 @@ | ||
export declare class PrismaLibSQL extends LibSqlQueryable<StdClient> implements DriverAdapter { | ||
export declare class PrismaLibSQL extends LibSqlQueryable<StdClient> implements SqlConnection { | ||
constructor(client: StdClient); | ||
transactionContext(): Promise<Result<TransactionContext>>; | ||
executeScript(script: string): Promise<void>; | ||
transactionContext(): Promise<TransactionContext>; | ||
dispose(): Promise<void>; | ||
} | ||
@@ -45,0 +47,0 @@ |
@@ -6,2 +6,3 @@ "use strict"; | ||
var __hasOwnProp = Object.prototype.hasOwnProperty; | ||
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; | ||
var __export = (target, all) => { | ||
@@ -20,2 +21,3 @@ for (var name2 in all) | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); | ||
@@ -146,3 +148,3 @@ // src/index.ts | ||
super(`unexpected value of type ${type}: ${repr}`); | ||
this.name = "UnexpectedTypeError"; | ||
__publicField(this, "name", "UnexpectedTypeError"); | ||
} | ||
@@ -182,5 +184,5 @@ }; | ||
this.client = client; | ||
this.provider = "sqlite"; | ||
this.adapterName = name; | ||
this[_a] = new import_async_mutex.Mutex(); | ||
__publicField(this, "provider", "sqlite"); | ||
__publicField(this, "adapterName", name); | ||
__publicField(this, _a, new import_async_mutex.Mutex()); | ||
} | ||
@@ -193,11 +195,9 @@ /** | ||
debug2(`${tag} %O`, query); | ||
const ioResult = await this.performIO(query); | ||
return ioResult.map(({ columns, rows, columnTypes: declaredColumnTypes }) => { | ||
const columnTypes = getColumnTypes(declaredColumnTypes, rows); | ||
return { | ||
columnNames: columns, | ||
columnTypes, | ||
rows: rows.map((row) => mapRow(row, columnTypes)) | ||
}; | ||
}); | ||
const { columns, rows, columnTypes: declaredColumnTypes } = await this.performIO(query); | ||
const columnTypes = getColumnTypes(declaredColumnTypes, rows); | ||
return { | ||
columnNames: columns, | ||
columnTypes, | ||
rows: rows.map((row) => mapRow(row, columnTypes)) | ||
}; | ||
} | ||
@@ -212,3 +212,3 @@ /** | ||
debug2(`${tag} %O`, query); | ||
return (await this.performIO(query)).map(({ rowsAffected }) => rowsAffected ?? 0); | ||
return (await this.performIO(query)).rowsAffected ?? 0; | ||
} | ||
@@ -224,15 +224,5 @@ /** | ||
const result = await this.client.execute(query); | ||
return (0, import_driver_adapter_utils2.ok)(result); | ||
return result; | ||
} catch (e) { | ||
const error = e; | ||
debug2("Error in performIO: %O", error); | ||
const rawCode = error["rawCode"] ?? e.cause?.["rawCode"]; | ||
if (typeof rawCode === "number") { | ||
return (0, import_driver_adapter_utils2.err)({ | ||
kind: "sqlite", | ||
extendedCode: rawCode, | ||
message: error.message | ||
}); | ||
} | ||
throw error; | ||
this.onError(e); | ||
} finally { | ||
@@ -242,2 +232,14 @@ release(); | ||
} | ||
onError(error) { | ||
debug2("Error in performIO: %O", error); | ||
const rawCode = error["rawCode"] ?? error.cause?.["rawCode"]; | ||
if (typeof rawCode === "number") { | ||
throw new import_driver_adapter_utils2.DriverAdapterError({ | ||
kind: "sqlite", | ||
extendedCode: rawCode, | ||
message: error.message | ||
}); | ||
} | ||
throw error; | ||
} | ||
}; | ||
@@ -257,3 +259,2 @@ var LibSqlTransaction = class extends LibSqlQueryable { | ||
} | ||
return (0, import_driver_adapter_utils2.ok)(void 0); | ||
} | ||
@@ -269,3 +270,2 @@ async rollback() { | ||
} | ||
return (0, import_driver_adapter_utils2.ok)(void 0); | ||
} | ||
@@ -287,3 +287,3 @@ }; | ||
const tx = await this.client.transaction("deferred"); | ||
return (0, import_driver_adapter_utils2.ok)(new LibSqlTransaction(tx, options, this.release)); | ||
return new LibSqlTransaction(tx, options, this.release); | ||
} catch (e) { | ||
@@ -299,6 +299,20 @@ this.release(); | ||
} | ||
async executeScript(script) { | ||
const release = await this[LOCK_TAG].acquire(); | ||
try { | ||
await this.client.executeMultiple(script); | ||
} catch (e) { | ||
this.onError(e); | ||
} finally { | ||
release(); | ||
} | ||
} | ||
async transactionContext() { | ||
const release = await this[LOCK_TAG].acquire(); | ||
return (0, import_driver_adapter_utils2.ok)(new LibSqlTransactionContext(this.client, release)); | ||
return new LibSqlTransactionContext(this.client, release); | ||
} | ||
dispose() { | ||
this.client.close(); | ||
return Promise.resolve(); | ||
} | ||
}; | ||
@@ -305,0 +319,0 @@ // Annotate the CommonJS export names for ESM import in node: |
{ | ||
"name": "@prisma/adapter-libsql", | ||
"version": "6.5.0-integration-fix-e2e-prisma-config-2.9", | ||
"version": "6.5.0-integration-fix-export-index-js.1", | ||
"description": "Prisma's driver adapter for libSQL and Turso", | ||
@@ -35,3 +35,3 @@ "main": "dist/index.js", | ||
"async-mutex": "0.5.0", | ||
"@prisma/driver-adapter-utils": "6.5.0-integration-fix-e2e-prisma-config-2.9" | ||
"@prisma/driver-adapter-utils": "6.5.0-integration-fix-export-index-js.1" | ||
}, | ||
@@ -38,0 +38,0 @@ "devDependencies": { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
36199
2.92%628
5.19%+ Added
+ Added
- Removed
- Removed
Updated