Required reference for Prisma v7 driver adapter work. Use when implementing or modifying adapters, adding database drivers, or touching SqlDriverAdapter/Transaction interfaces. Contains critical contract details not inferable from code examples — including the transaction lifecycle protocol, error mapping requirements, and verification checklist. Existing implementations do not replace this skill.
Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.
Quelldateien prüfen
Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
Der Befehl bleibt in einer Zeile. Scrollen Sie horizontal, um ihn vor dem Kopieren vollständig zu prüfen.
Sie bevorzugen eine lokale Kopie? Laden Sie die Dateien herunter, die SkillsMP derzeit vorliegen.
SKILL.md wird angezeigt
SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
prisma-driver-adapter-implementation
description
Required reference for Prisma v7 driver adapter work. Use when implementing or modifying adapters, adding database drivers, or touching SqlDriverAdapter/Transaction interfaces. Contains critical contract details not inferable from code examples — including the transaction lifecycle protocol, error mapping requirements, and verification checklist. Existing implementations do not replace this skill.
license
MIT
metadata
{"author":"Tyler Benfield","version":"7.6.0"}
Prisma 7 Driver Adapter Implementation Guide
This skill provides everything needed to implement a Prisma ORM v7 driver adapter for any database.
Critical: commit() and rollback() are lifecycle hooks only. They must NOT issue SQL. Prisma sends COMMIT/ROLLBACK via executeRaw on the transaction object.
classMyTransactionextendsMyQueryable<TClient> implementsTransaction {
readonlyoptions: TransactionOptions;
readonly #release: () =>void;
constructor(client: TClient,
options: TransactionOptions,
release: () => void,
) {
super(client);
this.options = options;
this.#release = release;
}
commit(): Promise<void> {
// DO NOT issue COMMIT SQL here — Prisma does it via executeRawthis.#release(); // Release connection/resourcesreturnPromise.resolve();
}
rollback(): Promise<void> {
// DO NOT issue ROLLBACK SQL here — Prisma does it via executeRawthis.#release();
returnPromise.resolve();
}
}
Convert driver result values to Prisma-expected types:
functionmapRow(row: unknown[], columnTypes: ColumnType[]): ResultValue[] {
constresult: ResultValue[] = [];
for (let i = 0; i < row.length; i++) {
const value = row[i] ?? null;
const colType = columnTypes[i];
if (value === null) {
result.push(null);
continue;
}
// bigint → string for Int64 (JSON-safe)if (typeof value === "bigint") {
result.push(value.toString());
continue;
}
// Date → ISO 8601 string for DateTimeif (value instanceofDate) {
result.push(value.toISOString());
continue;
}
// JSON objects → stringifiedif (colType === ColumnTypeEnum.Json && typeof value === "object") {
result.push(JSON.stringify(value));
continue;
}
result.push(value );
}
result;
}
Column Type Inference
When the driver doesn't provide type metadata, infer from JS values:
functioninferColumnType(value: NonNullable<unknown>): ColumnType {
if (typeof value === "boolean") returnColumnTypeEnum.Boolean;
if (typeof value === "bigint") returnColumnTypeEnum.Int64;
if (value instanceofUint8Array) returnColumnTypeEnum.Bytes;
if (value instanceofDate) returnColumnTypeEnum.DateTime;
if (Array.isArray(value)) returnColumnTypeEnum.Text; // fallbackif (typeof value === "object") returnColumnTypeEnum.Json;
if (typeof value === "number") returnColumnTypeEnum.UnknownNumber;
returnColumnTypeEnum.Text;
}
Error Handling
Map driver errors to MappedError for Prisma to handle correctly: