Files
Ammaar Reshi d6025af146 Initial commit
2025-01-04 14:06:53 +00:00

94 lines
2.3 KiB
JavaScript

import { entityKind } from "../entity.js";
import { TransactionRollbackError } from "../errors.js";
import { sql } from "../sql/index.js";
import { tracer } from "../tracing.js";
import { PgDatabase } from "./db.js";
class PgPreparedQuery {
constructor(query) {
this.query = query;
}
authToken;
getQuery() {
return this.query;
}
mapResult(response, _isFromBatch) {
return response;
}
/** @internal */
setToken(token) {
this.authToken = token;
return this;
}
static [entityKind] = "PgPreparedQuery";
/** @internal */
joinsNotNullableMap;
}
class PgSession {
constructor(dialect) {
this.dialect = dialect;
}
static [entityKind] = "PgSession";
/** @internal */
execute(query, token) {
return tracer.startActiveSpan("drizzle.operation", () => {
const prepared = tracer.startActiveSpan("drizzle.prepareQuery", () => {
return this.prepareQuery(
this.dialect.sqlToQuery(query),
void 0,
void 0,
false
);
});
return prepared.setToken(token).execute(void 0, token);
});
}
all(query) {
return this.prepareQuery(
this.dialect.sqlToQuery(query),
void 0,
void 0,
false
).all();
}
/** @internal */
async count(sql2, token) {
const res = await this.execute(sql2, token);
return Number(
res[0]["count"]
);
}
}
class PgTransaction extends PgDatabase {
constructor(dialect, session, schema, nestedIndex = 0) {
super(dialect, session, schema);
this.schema = schema;
this.nestedIndex = nestedIndex;
}
static [entityKind] = "PgTransaction";
rollback() {
throw new TransactionRollbackError();
}
/** @internal */
getTransactionConfigSQL(config) {
const chunks = [];
if (config.isolationLevel) {
chunks.push(`isolation level ${config.isolationLevel}`);
}
if (config.accessMode) {
chunks.push(config.accessMode);
}
if (typeof config.deferrable === "boolean") {
chunks.push(config.deferrable ? "deferrable" : "not deferrable");
}
return sql.raw(chunks.join(" "));
}
setTransaction(config) {
return this.session.execute(sql`set transaction ${this.getTransactionConfigSQL(config)}`);
}
}
export {
PgPreparedQuery,
PgSession,
PgTransaction
};
//# sourceMappingURL=session.js.map