@effect/sql-pg
Advanced tools
+57
-17
@@ -11,2 +11,3 @@ import * as Config from "effect/Config"; | ||
| import * as Client from "effect/unstable/sql/SqlClient"; | ||
| import type * as SqlConnection from "effect/unstable/sql/SqlConnection"; | ||
| import { SqlError } from "effect/unstable/sql/SqlError"; | ||
@@ -57,8 +58,4 @@ import type { Custom, Fragment } from "effect/unstable/sql/Statement"; | ||
| readonly password?: Redacted.Redacted | undefined; | ||
| readonly connectTimeout?: Duration.Input | undefined; | ||
| readonly stream?: (() => Duplex) | undefined; | ||
| readonly idleTimeout?: Duration.Input | undefined; | ||
| readonly connectTimeout?: Duration.Input | undefined; | ||
| readonly maxConnections?: number | undefined; | ||
| readonly minConnections?: number | undefined; | ||
| readonly connectionTTL?: Duration.Input | undefined; | ||
| readonly applicationName?: string | undefined; | ||
@@ -75,3 +72,8 @@ readonly spanAttributes?: Record<string, unknown> | undefined; | ||
| */ | ||
| export declare const make: (options: PgClientConfig) => Effect.Effect<PgClient, SqlError, Scope.Scope | Reactivity.Reactivity>; | ||
| export interface PgPoolConfig extends PgClientConfig { | ||
| readonly idleTimeout?: Duration.Input | undefined; | ||
| readonly maxConnections?: number | undefined; | ||
| readonly minConnections?: number | undefined; | ||
| readonly connectionTTL?: Duration.Input | undefined; | ||
| } | ||
| /** | ||
@@ -81,2 +83,17 @@ * @category constructors | ||
| */ | ||
| export declare const make: (options: PgPoolConfig) => Effect.Effect<PgClient, SqlError, Scope.Scope | Reactivity.Reactivity>; | ||
| /** | ||
| * @category constructors | ||
| * @since 1.0.0 | ||
| */ | ||
| export declare const makeClient: (options: PgClientConfig & { | ||
| /** | ||
| * Whether to acquire a separate client for each sql.stream / sql.listen | ||
| */ | ||
| readonly acquireForStream?: boolean | undefined; | ||
| }) => Effect.Effect<PgClient, SqlError, Scope.Scope | Reactivity.Reactivity>; | ||
| /** | ||
| * @category constructors | ||
| * @since 1.0.0 | ||
| */ | ||
| export declare const fromPool: (options: { | ||
@@ -92,6 +109,37 @@ readonly acquire: Effect.Effect<Pg.Pool, SqlError, Scope.Scope>; | ||
| /** | ||
| * @category constructors | ||
| * @since 1.0.0 | ||
| */ | ||
| export declare const fromClient: (options: { | ||
| readonly acquire: Effect.Effect<Pg.Client, SqlError, Scope.Scope>; | ||
| /** | ||
| * Whether to acquire a separate client for each sql.stream / sql.listen. | ||
| */ | ||
| readonly acquireForStream: boolean; | ||
| readonly applicationName?: string | undefined; | ||
| readonly spanAttributes?: Record<string, unknown> | undefined; | ||
| readonly transformResultNames?: ((str: string) => string) | undefined; | ||
| readonly transformQueryNames?: ((str: string) => string) | undefined; | ||
| readonly transformJson?: boolean | undefined; | ||
| readonly types?: Pg.CustomTypesConfig | undefined; | ||
| }) => Effect.Effect<PgClient, SqlError, Scope.Scope | Reactivity.Reactivity>; | ||
| /** | ||
| * @category constructors | ||
| * @since 1.0.0 | ||
| */ | ||
| export declare const makeWith: (options: { | ||
| readonly acquirer: SqlConnection.Acquirer; | ||
| readonly transactionAcquirer: SqlConnection.Acquirer; | ||
| readonly listenAcquirer: Effect.Effect<Pg.ClientBase, SqlError, Scope.Scope>; | ||
| readonly config: PgClientConfig; | ||
| readonly spanAttributes?: Record<string, unknown> | undefined; | ||
| readonly transformResultNames?: ((str: string) => string) | undefined; | ||
| readonly transformQueryNames?: ((str: string) => string) | undefined; | ||
| readonly transformJson?: boolean | undefined; | ||
| }) => Effect.Effect<PgClient, SqlError, Scope.Scope | Reactivity.Reactivity>; | ||
| /** | ||
| * @category layers | ||
| * @since 1.0.0 | ||
| */ | ||
| export declare const layerConfig: (config: Config.Wrap<PgClientConfig>) => Layer.Layer<PgClient | Client.SqlClient, Config.ConfigError | SqlError>; | ||
| export declare const layerFrom: <E, R>(acquire: Effect.Effect<PgClient, E, R>) => Layer.Layer<PgClient | Client.SqlClient, E, Exclude<R, Scope.Scope | Reactivity.Reactivity>>; | ||
| /** | ||
@@ -101,3 +149,3 @@ * @category layers | ||
| */ | ||
| export declare const layer: (config: PgClientConfig) => Layer.Layer<PgClient | Client.SqlClient, SqlError>; | ||
| export declare const layerConfig: (config: Config.Wrap<PgPoolConfig>) => Layer.Layer<PgClient | Client.SqlClient, Config.ConfigError | SqlError>; | ||
| /** | ||
@@ -107,11 +155,3 @@ * @category layers | ||
| */ | ||
| export declare const layerFromPool: (options: { | ||
| readonly acquire: Effect.Effect<Pg.Pool, SqlError, Scope.Scope>; | ||
| readonly applicationName?: string | undefined; | ||
| readonly spanAttributes?: Record<string, unknown> | undefined; | ||
| readonly transformResultNames?: ((str: string) => string) | undefined; | ||
| readonly transformQueryNames?: ((str: string) => string) | undefined; | ||
| readonly transformJson?: boolean | undefined; | ||
| readonly types?: Pg.CustomTypesConfig | undefined; | ||
| }) => Layer.Layer<PgClient | Client.SqlClient, SqlError>; | ||
| export declare const layer: (config: PgPoolConfig) => Layer.Layer<PgClient | Client.SqlClient, SqlError>; | ||
| /** | ||
@@ -118,0 +158,0 @@ * @category constructor |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"PgClient.d.ts","sourceRoot":"","sources":["../src/PgClient.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"PgClient.d.ts","sourceRoot":"","sources":["../src/PgClient.ts"],"names":[],"mappings":"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"} |
+291
-198
@@ -18,2 +18,3 @@ /** | ||
| import * as Scope from "effect/Scope"; | ||
| import * as Semaphore from "effect/Semaphore"; | ||
| import * as ServiceMap from "effect/ServiceMap"; | ||
@@ -28,51 +29,2 @@ import * as Stream from "effect/Stream"; | ||
| import Cursor from "pg-cursor"; | ||
| const ATTR_DB_SYSTEM_NAME = "db.system.name"; | ||
| const ATTR_DB_NAMESPACE = "db.namespace"; | ||
| const ATTR_SERVER_ADDRESS = "server.address"; | ||
| const ATTR_SERVER_PORT = "server.port"; | ||
| const pgCodeFromCause = cause => { | ||
| if (typeof cause !== "object" || cause === null || !("code" in cause)) { | ||
| return undefined; | ||
| } | ||
| const code = cause.code; | ||
| return typeof code === "string" ? code : undefined; | ||
| }; | ||
| const classifyError = (cause, message, operation) => { | ||
| const props = { | ||
| cause, | ||
| message, | ||
| operation | ||
| }; | ||
| const code = pgCodeFromCause(cause); | ||
| if (code !== undefined) { | ||
| if (code.startsWith("08")) { | ||
| return new ConnectionError(props); | ||
| } | ||
| if (code.startsWith("28")) { | ||
| return new AuthenticationError(props); | ||
| } | ||
| if (code === "42501") { | ||
| return new AuthorizationError(props); | ||
| } | ||
| if (code.startsWith("42")) { | ||
| return new SqlSyntaxError(props); | ||
| } | ||
| if (code.startsWith("23")) { | ||
| return new ConstraintError(props); | ||
| } | ||
| if (code === "40P01") { | ||
| return new DeadlockError(props); | ||
| } | ||
| if (code === "40001") { | ||
| return new SerializationError(props); | ||
| } | ||
| if (code === "55P03") { | ||
| return new LockTimeoutError(props); | ||
| } | ||
| if (code === "57014") { | ||
| return new StatementTimeoutError(props); | ||
| } | ||
| } | ||
| return new UnknownError(props); | ||
| }; | ||
| /** | ||
@@ -137,144 +89,100 @@ * @category type ids | ||
| */ | ||
| export const makeClient = options => fromClient({ | ||
| ...options, | ||
| acquire: Effect.gen(function* () { | ||
| const client = new Pg.Client({ | ||
| connectionString: options.url ? Redacted.value(options.url) : undefined, | ||
| user: options.username, | ||
| host: options.host, | ||
| database: options.database, | ||
| password: options.password ? Redacted.value(options.password) : undefined, | ||
| ssl: options.ssl, | ||
| port: options.port, | ||
| ...(options.stream ? { | ||
| stream: options.stream | ||
| } : {}), | ||
| application_name: options.applicationName ?? "@effect/sql-pg", | ||
| types: options.types | ||
| }); | ||
| yield* Effect.acquireRelease(Effect.tryPromise({ | ||
| try: () => client.query("SELECT 1"), | ||
| catch: cause => new SqlError({ | ||
| reason: classifyError(cause, "PgClient: Failed to connect", "connect") | ||
| }) | ||
| }), () => Effect.promise(() => client.end()).pipe(Effect.timeoutOption(1000))).pipe(Effect.timeoutOrElse({ | ||
| duration: options.connectTimeout ?? Duration.seconds(5), | ||
| onTimeout: () => Effect.fail(new SqlError({ | ||
| reason: new ConnectionError({ | ||
| cause: new Error("Connection timed out"), | ||
| message: "PgClient: Connection timed out", | ||
| operation: "connect" | ||
| }) | ||
| })) | ||
| })); | ||
| return client; | ||
| }), | ||
| acquireForStream: options.acquireForStream ?? false | ||
| }); | ||
| /** | ||
| * @category constructors | ||
| * @since 1.0.0 | ||
| */ | ||
| export const fromPool = /*#__PURE__*/Effect.fnUntraced(function* (options) { | ||
| const compiler = makeCompiler(options.transformQueryNames, options.transformJson); | ||
| const transformRows = options.transformResultNames ? Statement.defaultTransforms(options.transformResultNames, options.transformJson).array : undefined; | ||
| const pool = yield* options.acquire; | ||
| class ConnectionImpl { | ||
| pg; | ||
| constructor(pg) { | ||
| this.pg = pg; | ||
| const makeConection = client => new ConnectionImpl(function runWithClient(f) { | ||
| if (client !== undefined) { | ||
| return Effect.callback(resume => { | ||
| f(client, resume); | ||
| return makeCancel(pool, client); | ||
| }); | ||
| } | ||
| runWithClient(f) { | ||
| if (this.pg !== undefined) { | ||
| return Effect.callback(resume => { | ||
| f(this.pg, resume); | ||
| return makeCancel(pool, this.pg); | ||
| }); | ||
| return Effect.callback(resume => { | ||
| let done = false; | ||
| let cancel = undefined; | ||
| let client = undefined; | ||
| function onError(cause) { | ||
| cleanup(cause); | ||
| resume(Effect.fail(new SqlError({ | ||
| reason: classifyError(cause, "Connection error", "acquireConnection") | ||
| }))); | ||
| } | ||
| return Effect.callback(resume => { | ||
| let done = false; | ||
| let cancel = undefined; | ||
| let client = undefined; | ||
| function onError(cause) { | ||
| cleanup(cause); | ||
| resume(Effect.fail(new SqlError({ | ||
| reason: classifyError(cause, "Connection error", "acquireConnection") | ||
| function cleanup(cause) { | ||
| if (!done) client?.release(cause); | ||
| done = true; | ||
| client?.off("error", onError); | ||
| } | ||
| pool.connect((cause, client_) => { | ||
| if (cause) { | ||
| return resume(Effect.fail(new SqlError({ | ||
| reason: classifyError(cause, "Failed to acquire connection", "acquireConnection") | ||
| }))); | ||
| } else if (!client_) { | ||
| return resume(Effect.fail(new SqlError({ | ||
| reason: new ConnectionError({ | ||
| message: "Failed to acquire connection", | ||
| cause: new Error("No client returned"), | ||
| operation: "acquireConnection" | ||
| }) | ||
| }))); | ||
| } else if (done) { | ||
| client_.release(); | ||
| return; | ||
| } | ||
| function cleanup(cause) { | ||
| if (!done) client?.release(cause); | ||
| done = true; | ||
| client?.off("error", onError); | ||
| } | ||
| pool.connect((cause, client_) => { | ||
| if (cause) { | ||
| return resume(Effect.fail(new SqlError({ | ||
| reason: classifyError(cause, "Failed to acquire connection", "acquireConnection") | ||
| }))); | ||
| } else if (!client_) { | ||
| return resume(Effect.fail(new SqlError({ | ||
| reason: new ConnectionError({ | ||
| message: "Failed to acquire connection", | ||
| cause: new Error("No client returned"), | ||
| operation: "acquireConnection" | ||
| }) | ||
| }))); | ||
| } else if (done) { | ||
| client_.release(); | ||
| return; | ||
| } | ||
| client = client_; | ||
| client.once("error", onError); | ||
| cancel = makeCancel(pool, client); | ||
| f(client, eff => { | ||
| cleanup(); | ||
| resume(eff); | ||
| }); | ||
| client = client_; | ||
| client.once("error", onError); | ||
| cancel = makeCancel(pool, client); | ||
| f(client, eff => { | ||
| cleanup(); | ||
| resume(eff); | ||
| }); | ||
| return Effect.suspend(() => { | ||
| if (!cancel) { | ||
| cleanup(); | ||
| return Effect.void; | ||
| } | ||
| return Effect.ensuring(cancel, Effect.sync(cleanup)); | ||
| }); | ||
| }); | ||
| } | ||
| run(query, params) { | ||
| return this.runWithClient((client, resume) => { | ||
| client.query(query, params, (err, result) => { | ||
| if (err) { | ||
| resume(Effect.fail(new SqlError({ | ||
| reason: classifyError(err, "Failed to execute statement", "execute") | ||
| }))); | ||
| } else { | ||
| // Multi-statement queries return an array of results | ||
| resume(Effect.succeed(Array.isArray(result) ? result.map(r => r.rows ?? []) : result.rows ?? [])); | ||
| } | ||
| }); | ||
| return Effect.suspend(() => { | ||
| if (!cancel) { | ||
| cleanup(); | ||
| return Effect.void; | ||
| } | ||
| return Effect.ensuring(cancel, Effect.sync(cleanup)); | ||
| }); | ||
| } | ||
| execute(sql, params, transformRows) { | ||
| return transformRows ? Effect.map(this.run(sql, params), transformRows) : this.run(sql, params); | ||
| } | ||
| executeRaw(sql, params) { | ||
| return this.runWithClient((client, resume) => { | ||
| client.query(sql, params, (err, result) => { | ||
| if (err) { | ||
| resume(Effect.fail(new SqlError({ | ||
| reason: classifyError(err, "Failed to execute statement", "execute") | ||
| }))); | ||
| } else { | ||
| resume(Effect.succeed(result)); | ||
| } | ||
| }); | ||
| }); | ||
| } | ||
| executeWithoutTransform(sql, params) { | ||
| return this.run(sql, params); | ||
| } | ||
| executeValues(sql, params) { | ||
| return this.runWithClient((client, resume) => { | ||
| client.query({ | ||
| text: sql, | ||
| rowMode: "array", | ||
| values: params | ||
| }, (err, result) => { | ||
| if (err) { | ||
| resume(Effect.fail(new SqlError({ | ||
| reason: classifyError(err, "Failed to execute statement", "execute") | ||
| }))); | ||
| } else { | ||
| resume(Effect.succeed(result.rows)); | ||
| } | ||
| }); | ||
| }); | ||
| } | ||
| executeUnprepared(sql, params, transformRows) { | ||
| return this.execute(sql, params, transformRows); | ||
| } | ||
| executeStream(sql, params, transformRows) { | ||
| // oxlint-disable-next-line @typescript-eslint/no-this-alias | ||
| const self = this; | ||
| return Stream.fromChannel(Channel.fromTransform(Effect.fnUntraced(function* (_, scope) { | ||
| const client = self.pg ?? (yield* Scope.provide(reserveRaw, scope)); | ||
| yield* Scope.addFinalizer(scope, Effect.promise(() => cursor.close())); | ||
| const cursor = client.query(new Cursor(sql, params)); | ||
| // @effect-diagnostics-next-line returnEffectInGen:off | ||
| return Effect.callback(resume => { | ||
| cursor.read(128, (err, rows) => { | ||
| if (err) { | ||
| resume(Effect.fail(new SqlError({ | ||
| reason: classifyError(err, "Failed to execute statement", "stream") | ||
| }))); | ||
| } else if (Arr.isArrayNonEmpty(rows)) { | ||
| resume(Effect.succeed(transformRows ? transformRows(rows) : rows)); | ||
| } else { | ||
| resume(Cause.done()); | ||
| } | ||
| }); | ||
| }); | ||
| }))); | ||
| } | ||
| } | ||
| }); | ||
| }, client ? Effect.succeed(client) : reserveRaw); | ||
| const reserveRaw = Effect.callback(resume => { | ||
@@ -301,5 +209,5 @@ const fiber = Fiber.getCurrent(); | ||
| }); | ||
| const reserve = Effect.map(reserveRaw, client => new ConnectionImpl(client)); | ||
| const reserve = Effect.map(reserveRaw, makeConection); | ||
| const onListenClientError = _ => {}; | ||
| const listenClient = yield* RcRef.make({ | ||
| const listenAcquirer = yield* RcRef.make({ | ||
| acquire: Effect.acquireRelease(Effect.tryPromise({ | ||
@@ -347,5 +255,67 @@ try: async () => { | ||
| } | ||
| return yield* makeWith({ | ||
| acquirer: Effect.succeed(makeConection()), | ||
| transactionAcquirer: reserve, | ||
| listenAcquirer: RcRef.get(listenAcquirer), | ||
| config, | ||
| spanAttributes: options.spanAttributes, | ||
| transformResultNames: options.transformResultNames, | ||
| transformQueryNames: options.transformQueryNames, | ||
| transformJson: options.transformJson | ||
| }); | ||
| }); | ||
| /** | ||
| * @category constructors | ||
| * @since 1.0.0 | ||
| */ | ||
| export const fromClient = /*#__PURE__*/Effect.fnUntraced(function* (options) { | ||
| function onError() {} | ||
| const acquireWithErrorHandler = options.acquire.pipe(Effect.tap(client => { | ||
| client.on("error", onError); | ||
| return Effect.addFinalizer(() => { | ||
| client.off("error", onError); | ||
| return Effect.void; | ||
| }); | ||
| })); | ||
| const client = yield* acquireWithErrorHandler; | ||
| const semaphore = Semaphore.makeUnsafe(1); | ||
| let streamClient = options.acquireForStream ? acquireWithErrorHandler : Effect.acquireRelease(Effect.as(semaphore.take(1), client), () => semaphore.release(1)); | ||
| const makeConection = client => new ConnectionImpl(function runWithClient(f) { | ||
| return Effect.callback(resume => { | ||
| f(client, resume); | ||
| }); | ||
| }, streamClient); | ||
| const connection = makeConection(client); | ||
| const acquirer = semaphore.withPermit(Effect.succeed(connection)); | ||
| const config = { | ||
| ...options, | ||
| host: client.host, | ||
| port: client.port, | ||
| database: client.database, | ||
| username: client.user, | ||
| password: typeof client.password === "string" ? Redacted.make(client.password) : undefined, | ||
| ssl: client.ssl | ||
| }; | ||
| return yield* makeWith({ | ||
| acquirer, | ||
| transactionAcquirer: acquirer, | ||
| listenAcquirer: streamClient, | ||
| config, | ||
| spanAttributes: options.spanAttributes, | ||
| transformResultNames: options.transformResultNames, | ||
| transformQueryNames: options.transformQueryNames, | ||
| transformJson: options.transformJson | ||
| }); | ||
| }); | ||
| /** | ||
| * @category constructors | ||
| * @since 1.0.0 | ||
| */ | ||
| export const makeWith = /*#__PURE__*/Effect.fnUntraced(function* (options) { | ||
| const compiler = makeCompiler(options.transformQueryNames, options.transformJson); | ||
| const transformRows = options.transformResultNames ? Statement.defaultTransforms(options.transformResultNames, options.transformJson).array : undefined; | ||
| const config = options.config; | ||
| return Object.assign(yield* Client.make({ | ||
| acquirer: Effect.succeed(new ConnectionImpl()), | ||
| transactionAcquirer: reserve, | ||
| acquirer: options.acquirer, | ||
| transactionAcquirer: options.transactionAcquirer, | ||
| compiler, | ||
@@ -356,6 +326,6 @@ spanAttributes: [...(options.spanAttributes ? Object.entries(options.spanAttributes) : []), [ATTR_DB_SYSTEM_NAME, "postgresql"], [ATTR_DB_NAMESPACE, config.database ?? config.username ?? "postgres"], [ATTR_SERVER_ADDRESS, config.host ?? "localhost"], [ATTR_SERVER_PORT, config.port ?? 5432]], | ||
| [TypeId]: TypeId, | ||
| config, | ||
| config: options.config, | ||
| json: _ => Statement.fragment([PgJson(_)]), | ||
| listen: channel => Stream.callback(Effect.fnUntraced(function* (queue) { | ||
| const client = yield* RcRef.get(listenClient); | ||
| const client = yield* options.listenAcquirer; | ||
| function onNotification(msg) { | ||
@@ -378,15 +348,89 @@ if (msg.channel === channel && msg.payload) { | ||
| })), | ||
| notify: (channel, payload) => Effect.callback(resume => { | ||
| pool.query("SELECT pg_notify($1, $2)", [channel, payload], err => { | ||
| notify: (channel, payload) => Effect.asVoid(Effect.scoped(Effect.flatMap(options.acquirer, conn => conn.executeRaw(`SELECT pg_notify($1, $2)`, [channel, payload])))) | ||
| }); | ||
| }); | ||
| class ConnectionImpl { | ||
| constructor(runWithClient, reserve) { | ||
| this.runWithClient = runWithClient; | ||
| this.reserve = reserve; | ||
| } | ||
| runWithClient; | ||
| reserve; | ||
| run(query, params) { | ||
| return this.runWithClient((client, resume) => { | ||
| client.query(query, params, (err, result) => { | ||
| if (err) { | ||
| resume(Effect.fail(new SqlError({ | ||
| reason: classifyError(err, "Failed to notify", "notify") | ||
| reason: classifyError(err, "Failed to execute statement", "execute") | ||
| }))); | ||
| } else { | ||
| resume(Effect.void); | ||
| // Multi-statement queries return an array of results | ||
| resume(Effect.succeed(Array.isArray(result) ? result.map(r => r.rows ?? []) : result.rows ?? [])); | ||
| } | ||
| }); | ||
| }) | ||
| }); | ||
| }); | ||
| }); | ||
| } | ||
| execute(sql, params, transformRows) { | ||
| return transformRows ? Effect.map(this.run(sql, params), transformRows) : this.run(sql, params); | ||
| } | ||
| executeRaw(sql, params) { | ||
| return this.runWithClient((client, resume) => { | ||
| client.query(sql, params, (err, result) => { | ||
| if (err) { | ||
| resume(Effect.fail(new SqlError({ | ||
| reason: classifyError(err, "Failed to execute statement", "execute") | ||
| }))); | ||
| } else { | ||
| resume(Effect.succeed(result)); | ||
| } | ||
| }); | ||
| }); | ||
| } | ||
| executeWithoutTransform(sql, params) { | ||
| return this.run(sql, params); | ||
| } | ||
| executeValues(sql, params) { | ||
| return this.runWithClient((client, resume) => { | ||
| client.query({ | ||
| text: sql, | ||
| rowMode: "array", | ||
| values: params | ||
| }, (err, result) => { | ||
| if (err) { | ||
| resume(Effect.fail(new SqlError({ | ||
| reason: classifyError(err, "Failed to execute statement", "execute") | ||
| }))); | ||
| } else { | ||
| resume(Effect.succeed(result.rows)); | ||
| } | ||
| }); | ||
| }); | ||
| } | ||
| executeUnprepared(sql, params, transformRows) { | ||
| return this.execute(sql, params, transformRows); | ||
| } | ||
| executeStream(sql, params, transformRows) { | ||
| // oxlint-disable-next-line @typescript-eslint/no-this-alias | ||
| const self = this; | ||
| return Stream.fromChannel(Channel.fromTransform(Effect.fnUntraced(function* (_, scope) { | ||
| const client = yield* Scope.provide(self.reserve, scope); | ||
| yield* Scope.addFinalizer(scope, Effect.promise(() => cursor.close())); | ||
| const cursor = client.query(new Cursor(sql, params)); | ||
| // @effect-diagnostics-next-line returnEffectInGen:off | ||
| return Effect.callback(resume => { | ||
| cursor.read(128, (err, rows) => { | ||
| if (err) { | ||
| resume(Effect.fail(new SqlError({ | ||
| reason: classifyError(err, "Failed to execute statement", "stream") | ||
| }))); | ||
| } else if (Arr.isArrayNonEmpty(rows)) { | ||
| resume(Effect.succeed(transformRows ? transformRows(rows) : rows)); | ||
| } else { | ||
| resume(Cause.done()); | ||
| } | ||
| }); | ||
| }); | ||
| }))); | ||
| } | ||
| } | ||
| const cancelEffects = /*#__PURE__*/new WeakMap(); | ||
@@ -413,3 +457,3 @@ const makeCancel = (pool, client) => { | ||
| */ | ||
| export const layerConfig = config => Layer.effectServices(Config.unwrap(config).asEffect().pipe(Effect.flatMap(make), Effect.map(client => ServiceMap.make(PgClient, client).pipe(ServiceMap.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer)); | ||
| export const layerFrom = acquire => Layer.effectServices(Effect.map(acquire, client => ServiceMap.make(PgClient, client).pipe(ServiceMap.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer)); | ||
| /** | ||
@@ -419,3 +463,3 @@ * @category layers | ||
| */ | ||
| export const layer = config => Layer.effectServices(Effect.map(make(config), client => ServiceMap.make(PgClient, client).pipe(ServiceMap.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer)); | ||
| export const layerConfig = config => layerFrom(Effect.flatMap(Config.unwrap(config).asEffect(), make)); | ||
| /** | ||
@@ -425,3 +469,3 @@ * @category layers | ||
| */ | ||
| export const layerFromPool = options => Layer.effectServices(Effect.map(fromPool(options), client => ServiceMap.make(PgClient, client).pipe(ServiceMap.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer)); | ||
| export const layer = config => layerFrom(make(config)); | ||
| /** | ||
@@ -460,2 +504,51 @@ * @category constructor | ||
| const PgJson = /*#__PURE__*/Statement.custom("PgJson"); | ||
| const ATTR_DB_SYSTEM_NAME = "db.system.name"; | ||
| const ATTR_DB_NAMESPACE = "db.namespace"; | ||
| const ATTR_SERVER_ADDRESS = "server.address"; | ||
| const ATTR_SERVER_PORT = "server.port"; | ||
| const pgCodeFromCause = cause => { | ||
| if (typeof cause !== "object" || cause === null || !("code" in cause)) { | ||
| return undefined; | ||
| } | ||
| const code = cause.code; | ||
| return typeof code === "string" ? code : undefined; | ||
| }; | ||
| const classifyError = (cause, message, operation) => { | ||
| const props = { | ||
| cause, | ||
| message, | ||
| operation | ||
| }; | ||
| const code = pgCodeFromCause(cause); | ||
| if (code !== undefined) { | ||
| if (code.startsWith("08")) { | ||
| return new ConnectionError(props); | ||
| } | ||
| if (code.startsWith("28")) { | ||
| return new AuthenticationError(props); | ||
| } | ||
| if (code === "42501") { | ||
| return new AuthorizationError(props); | ||
| } | ||
| if (code.startsWith("42")) { | ||
| return new SqlSyntaxError(props); | ||
| } | ||
| if (code.startsWith("23")) { | ||
| return new ConstraintError(props); | ||
| } | ||
| if (code === "40P01") { | ||
| return new DeadlockError(props); | ||
| } | ||
| if (code === "40001") { | ||
| return new SerializationError(props); | ||
| } | ||
| if (code === "55P03") { | ||
| return new LockTimeoutError(props); | ||
| } | ||
| if (code === "57014") { | ||
| return new StatementTimeoutError(props); | ||
| } | ||
| } | ||
| return new UnknownError(props); | ||
| }; | ||
| //# sourceMappingURL=PgClient.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"PgClient.js","names":["Arr","Cause","Channel","Config","Duration","Effect","Fiber","Layer","Number","Option","Queue","RcRef","Redacted","Scope","ServiceMap","Stream","Reactivity","Client","AuthenticationError","AuthorizationError","ConnectionError","ConstraintError","DeadlockError","LockTimeoutError","SerializationError","SqlError","SqlSyntaxError","StatementTimeoutError","UnknownError","Statement","Pg","PgConnString","Cursor","ATTR_DB_SYSTEM_NAME","ATTR_DB_NAMESPACE","ATTR_SERVER_ADDRESS","ATTR_SERVER_PORT","pgCodeFromCause","cause","undefined","code","classifyError","message","operation","props","startsWith","TypeId","PgClient","Service","make","options","fromPool","acquire","gen","pool","Pool","connectionString","url","value","user","username","host","database","password","ssl","port","stream","connectionTimeoutMillis","connectTimeout","toMillis","fromInputUnsafe","idleTimeoutMillis","idleTimeout","max","maxConnections","min","minConnections","maxLifetimeSeconds","connectionTTL","toSeconds","application_name","applicationName","types","on","_err","acquireRelease","tryPromise","try","query","catch","reason","promise","end","pipe","timeoutOption","timeoutOrElse","duration","seconds","onTimeout","fail","Error","fnUntraced","compiler","makeCompiler","transformQueryNames","transformJson","transformRows","transformResultNames","defaultTransforms","array","ConnectionImpl","pg","constructor","runWithClient","f","callback","resume","makeCancel","done","cancel","client","onError","cleanup","release","off","connect","client_","once","eff","suspend","void","ensuring","sync","run","params","err","result","succeed","Array","isArray","map","r","rows","execute","sql","executeRaw","executeWithoutTransform","executeValues","text","rowMode","values","executeUnprepared","executeStream","self","fromChannel","fromTransform","_","scope","provide","reserveRaw","addFinalizer","cursor","close","read","isArrayNonEmpty","fiber","getCurrent","getUnsafe","services","as","cause_","reserve","onListenClientError","listenClient","config","parsed","parse","getOrUndefined","Object","assign","acquirer","transactionAcquirer","spanAttributes","entries","json","fragment","PgJson","listen","channel","queue","get","onNotification","msg","payload","offerUnsafe","escapeIdentifier","notify","cancelEffects","WeakMap","has","processId","processID","ending","interruptible","set","layerConfig","effectServices","unwrap","asEffect","flatMap","add","SqlClient","layer","layerFromPool","transform","transformValue","dialect","placeholder","onIdentifier","withoutTransform","escape","onRecordUpdate","placeholders","valueAlias","valueColumns","returning","flat","concat","onCustom","type","kind","paramA","defaultEscape","custom"],"sources":["../src/PgClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]} | ||
| {"version":3,"file":"PgClient.js","names":["Arr","Cause","Channel","Config","Duration","Effect","Fiber","Layer","Number","Option","Queue","RcRef","Redacted","Scope","Semaphore","ServiceMap","Stream","Reactivity","Client","AuthenticationError","AuthorizationError","ConnectionError","ConstraintError","DeadlockError","LockTimeoutError","SerializationError","SqlError","SqlSyntaxError","StatementTimeoutError","UnknownError","Statement","Pg","PgConnString","Cursor","TypeId","PgClient","Service","make","options","fromPool","acquire","gen","pool","Pool","connectionString","url","value","undefined","user","username","host","database","password","ssl","port","stream","connectionTimeoutMillis","connectTimeout","toMillis","fromInputUnsafe","idleTimeoutMillis","idleTimeout","max","maxConnections","min","minConnections","maxLifetimeSeconds","connectionTTL","toSeconds","application_name","applicationName","types","on","_err","acquireRelease","tryPromise","try","query","catch","cause","reason","classifyError","promise","end","pipe","timeoutOption","timeoutOrElse","duration","seconds","onTimeout","fail","Error","message","operation","makeClient","fromClient","client","acquireForStream","fnUntraced","makeConection","ConnectionImpl","runWithClient","f","callback","resume","makeCancel","done","cancel","onError","cleanup","release","off","connect","client_","once","eff","suspend","void","ensuring","sync","succeed","reserveRaw","fiber","getCurrent","scope","getUnsafe","services","err","as","addFinalizer","cause_","reserve","map","onListenClientError","_","listenAcquirer","config","parsed","parse","getOrUndefined","makeWith","acquirer","transactionAcquirer","get","spanAttributes","transformResultNames","transformQueryNames","transformJson","acquireWithErrorHandler","tap","semaphore","makeUnsafe","streamClient","take","connection","withPermit","compiler","makeCompiler","transformRows","defaultTransforms","array","Object","assign","entries","ATTR_DB_SYSTEM_NAME","ATTR_DB_NAMESPACE","ATTR_SERVER_ADDRESS","ATTR_SERVER_PORT","json","fragment","PgJson","listen","channel","queue","onNotification","msg","payload","offerUnsafe","escapeIdentifier","notify","asVoid","scoped","flatMap","conn","executeRaw","constructor","run","params","result","Array","isArray","r","rows","execute","sql","executeWithoutTransform","executeValues","text","rowMode","values","executeUnprepared","executeStream","self","fromChannel","fromTransform","provide","cursor","close","read","isArrayNonEmpty","cancelEffects","WeakMap","has","processId","processID","ending","interruptible","set","layerFrom","effectServices","add","SqlClient","layer","layerConfig","unwrap","asEffect","transform","transformValue","dialect","placeholder","onIdentifier","withoutTransform","escape","onRecordUpdate","placeholders","valueAlias","valueColumns","returning","flat","concat","onCustom","type","kind","paramA","defaultEscape","custom","pgCodeFromCause","code","props","startsWith"],"sources":["../src/PgClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]} |
+3
-3
| { | ||
| "name": "@effect/sql-pg", | ||
| "version": "4.0.0-beta.38", | ||
| "version": "4.0.0-beta.39", | ||
| "type": "module", | ||
@@ -49,6 +49,6 @@ "license": "MIT", | ||
| "@types/pg-cursor": "^2.7.2", | ||
| "effect": "^4.0.0-beta.38" | ||
| "effect": "^4.0.0-beta.39" | ||
| }, | ||
| "peerDependencies": { | ||
| "effect": "^4.0.0-beta.38" | ||
| "effect": "^4.0.0-beta.39" | ||
| }, | ||
@@ -55,0 +55,0 @@ "dependencies": { |
+444
-285
@@ -18,2 +18,3 @@ /** | ||
| import * as Scope from "effect/Scope" | ||
| import * as Semaphore from "effect/Semaphore" | ||
| import * as ServiceMap from "effect/ServiceMap" | ||
@@ -24,2 +25,3 @@ import * as Stream from "effect/Stream" | ||
| import type { Connection } from "effect/unstable/sql/SqlConnection" | ||
| import type * as SqlConnection from "effect/unstable/sql/SqlConnection" | ||
| import { | ||
@@ -46,54 +48,2 @@ AuthenticationError, | ||
| const ATTR_DB_SYSTEM_NAME = "db.system.name" | ||
| const ATTR_DB_NAMESPACE = "db.namespace" | ||
| const ATTR_SERVER_ADDRESS = "server.address" | ||
| const ATTR_SERVER_PORT = "server.port" | ||
| const pgCodeFromCause = (cause: unknown): string | undefined => { | ||
| if (typeof cause !== "object" || cause === null || !("code" in cause)) { | ||
| return undefined | ||
| } | ||
| const code = cause.code | ||
| return typeof code === "string" ? code : undefined | ||
| } | ||
| const classifyError = ( | ||
| cause: unknown, | ||
| message: string, | ||
| operation: string | ||
| ) => { | ||
| const props = { cause, message, operation } | ||
| const code = pgCodeFromCause(cause) | ||
| if (code !== undefined) { | ||
| if (code.startsWith("08")) { | ||
| return new ConnectionError(props) | ||
| } | ||
| if (code.startsWith("28")) { | ||
| return new AuthenticationError(props) | ||
| } | ||
| if (code === "42501") { | ||
| return new AuthorizationError(props) | ||
| } | ||
| if (code.startsWith("42")) { | ||
| return new SqlSyntaxError(props) | ||
| } | ||
| if (code.startsWith("23")) { | ||
| return new ConstraintError(props) | ||
| } | ||
| if (code === "40P01") { | ||
| return new DeadlockError(props) | ||
| } | ||
| if (code === "40001") { | ||
| return new SerializationError(props) | ||
| } | ||
| if (code === "55P03") { | ||
| return new LockTimeoutError(props) | ||
| } | ||
| if (code === "57014") { | ||
| return new StatementTimeoutError(props) | ||
| } | ||
| } | ||
| return new UnknownError(props) | ||
| } | ||
| /** | ||
@@ -144,10 +94,5 @@ * @category type ids | ||
| readonly stream?: (() => Duplex) | undefined | ||
| readonly idleTimeout?: Duration.Input | undefined | ||
| readonly connectTimeout?: Duration.Input | undefined | ||
| readonly maxConnections?: number | undefined | ||
| readonly minConnections?: number | undefined | ||
| readonly connectionTTL?: Duration.Input | undefined | ||
| readonly stream?: (() => Duplex) | undefined | ||
@@ -167,5 +112,15 @@ readonly applicationName?: string | undefined | ||
| */ | ||
| export const make = ( | ||
| options: PgClientConfig | ||
| ): Effect.Effect<PgClient, SqlError, Scope.Scope | Reactivity.Reactivity> => | ||
| export interface PgPoolConfig extends PgClientConfig { | ||
| readonly idleTimeout?: Duration.Input | undefined | ||
| readonly maxConnections?: number | undefined | ||
| readonly minConnections?: number | undefined | ||
| readonly connectionTTL?: Duration.Input | undefined | ||
| } | ||
| /** | ||
| * @category constructors | ||
| * @since 1.0.0 | ||
| */ | ||
| export const make = (options: PgPoolConfig): Effect.Effect<PgClient, SqlError, Scope.Scope | Reactivity.Reactivity> => | ||
| fromPool({ | ||
@@ -233,2 +188,59 @@ ...options, | ||
| */ | ||
| export const makeClient = ( | ||
| options: PgClientConfig & { | ||
| /** | ||
| * Whether to acquire a separate client for each sql.stream / sql.listen | ||
| */ | ||
| readonly acquireForStream?: boolean | undefined | ||
| } | ||
| ): Effect.Effect<PgClient, SqlError, Scope.Scope | Reactivity.Reactivity> => | ||
| fromClient({ | ||
| ...options, | ||
| acquire: Effect.gen(function*() { | ||
| const client = new Pg.Client({ | ||
| connectionString: options.url ? Redacted.value(options.url) : undefined, | ||
| user: options.username, | ||
| host: options.host, | ||
| database: options.database, | ||
| password: options.password ? Redacted.value(options.password) : undefined, | ||
| ssl: options.ssl, | ||
| port: options.port, | ||
| ...(options.stream ? { stream: options.stream } : {}), | ||
| application_name: options.applicationName ?? "@effect/sql-pg", | ||
| types: options.types | ||
| }) | ||
| yield* Effect.acquireRelease( | ||
| Effect.tryPromise({ | ||
| try: () => client.query("SELECT 1"), | ||
| catch: (cause) => new SqlError({ reason: classifyError(cause, "PgClient: Failed to connect", "connect") }) | ||
| }), | ||
| () => | ||
| Effect.promise(() => client.end()).pipe( | ||
| Effect.timeoutOption(1000) | ||
| ) | ||
| ).pipe( | ||
| Effect.timeoutOrElse({ | ||
| duration: options.connectTimeout ?? Duration.seconds(5), | ||
| onTimeout: () => | ||
| Effect.fail( | ||
| new SqlError({ | ||
| reason: new ConnectionError({ | ||
| cause: new Error("Connection timed out"), | ||
| message: "PgClient: Connection timed out", | ||
| operation: "connect" | ||
| }) | ||
| }) | ||
| ) | ||
| }) | ||
| ) | ||
| return client | ||
| }), | ||
| acquireForStream: options.acquireForStream ?? false | ||
| }) | ||
| /** | ||
| * @category constructors | ||
| * @since 1.0.0 | ||
| */ | ||
| export const fromPool = Effect.fnUntraced(function*( | ||
@@ -247,181 +259,70 @@ options: { | ||
| ): Effect.fn.Return<PgClient, SqlError, Scope.Scope | Reactivity.Reactivity> { | ||
| const compiler = makeCompiler( | ||
| options.transformQueryNames, | ||
| options.transformJson | ||
| ) | ||
| const transformRows = options.transformResultNames ? | ||
| Statement.defaultTransforms( | ||
| options.transformResultNames, | ||
| options.transformJson | ||
| ).array : | ||
| undefined | ||
| const pool = yield* options.acquire | ||
| class ConnectionImpl implements Connection { | ||
| readonly pg: Pg.PoolClient | undefined | ||
| constructor(pg?: Pg.PoolClient) { | ||
| this.pg = pg | ||
| } | ||
| private runWithClient<A>(f: (client: Pg.PoolClient, resume: (_: Effect.Effect<A, SqlError>) => void) => void) { | ||
| if (this.pg !== undefined) { | ||
| const makeConection = (client?: Pg.PoolClient) => | ||
| new ConnectionImpl( | ||
| function runWithClient<A>(f: (client: Pg.ClientBase, resume: (_: Effect.Effect<A, SqlError>) => void) => void) { | ||
| if (client !== undefined) { | ||
| return Effect.callback<A, SqlError>((resume) => { | ||
| f(client!, resume) | ||
| return makeCancel(pool, client!) | ||
| }) | ||
| } | ||
| return Effect.callback<A, SqlError>((resume) => { | ||
| f(this.pg!, resume) | ||
| return makeCancel(pool, this.pg!) | ||
| }) | ||
| } | ||
| return Effect.callback<A, SqlError>((resume) => { | ||
| let done = false | ||
| let cancel: Effect.Effect<void> | undefined = undefined | ||
| let client: Pg.PoolClient | undefined = undefined | ||
| function onError(cause: Error) { | ||
| cleanup(cause) | ||
| resume(Effect.fail(new SqlError({ reason: classifyError(cause, "Connection error", "acquireConnection") }))) | ||
| } | ||
| function cleanup(cause?: Error) { | ||
| if (!done) client?.release(cause) | ||
| done = true | ||
| client?.off("error", onError) | ||
| } | ||
| pool.connect((cause, client_) => { | ||
| if (cause) { | ||
| return resume( | ||
| Effect.fail( | ||
| new SqlError({ | ||
| reason: classifyError(cause, "Failed to acquire connection", "acquireConnection") | ||
| }) | ||
| let done = false | ||
| let cancel: Effect.Effect<void> | undefined = undefined | ||
| let client: Pg.PoolClient | undefined = undefined | ||
| function onError(cause: Error) { | ||
| cleanup(cause) | ||
| resume(Effect.fail(new SqlError({ reason: classifyError(cause, "Connection error", "acquireConnection") }))) | ||
| } | ||
| function cleanup(cause?: Error) { | ||
| if (!done) client?.release(cause) | ||
| done = true | ||
| client?.off("error", onError) | ||
| } | ||
| pool.connect((cause, client_) => { | ||
| if (cause) { | ||
| return resume( | ||
| Effect.fail( | ||
| new SqlError({ | ||
| reason: classifyError(cause, "Failed to acquire connection", "acquireConnection") | ||
| }) | ||
| ) | ||
| ) | ||
| ) | ||
| } else if (!client_) { | ||
| return resume( | ||
| Effect.fail( | ||
| new SqlError({ | ||
| reason: new ConnectionError({ | ||
| message: "Failed to acquire connection", | ||
| cause: new Error("No client returned"), | ||
| operation: "acquireConnection" | ||
| } else if (!client_) { | ||
| return resume( | ||
| Effect.fail( | ||
| new SqlError({ | ||
| reason: new ConnectionError({ | ||
| message: "Failed to acquire connection", | ||
| cause: new Error("No client returned"), | ||
| operation: "acquireConnection" | ||
| }) | ||
| }) | ||
| }) | ||
| ) | ||
| ) | ||
| ) | ||
| } else if (done) { | ||
| client_.release() | ||
| return | ||
| } | ||
| client = client_ | ||
| client.once("error", onError) | ||
| cancel = makeCancel(pool, client) | ||
| f(client, (eff) => { | ||
| cleanup() | ||
| resume(eff) | ||
| } else if (done) { | ||
| client_.release() | ||
| return | ||
| } | ||
| client = client_ | ||
| client.once("error", onError) | ||
| cancel = makeCancel(pool, client) | ||
| f(client, (eff) => { | ||
| cleanup() | ||
| resume(eff) | ||
| }) | ||
| }) | ||
| }) | ||
| return Effect.suspend(() => { | ||
| if (!cancel) { | ||
| cleanup() | ||
| return Effect.void | ||
| } | ||
| return Effect.ensuring(cancel, Effect.sync(cleanup)) | ||
| }) | ||
| }) | ||
| } | ||
| private run(query: string, params: ReadonlyArray<unknown>) { | ||
| return this.runWithClient<ReadonlyArray<any>>((client, resume) => { | ||
| client.query(query, params as any, (err, result) => { | ||
| if (err) { | ||
| resume( | ||
| Effect.fail(new SqlError({ reason: classifyError(err, "Failed to execute statement", "execute") })) | ||
| ) | ||
| } else { | ||
| // Multi-statement queries return an array of results | ||
| resume(Effect.succeed( | ||
| Array.isArray(result) | ||
| ? result.map((r) => r.rows ?? []) | ||
| : result.rows ?? [] | ||
| )) | ||
| } | ||
| }) | ||
| }) | ||
| } | ||
| execute( | ||
| sql: string, | ||
| params: ReadonlyArray<unknown>, | ||
| transformRows: (<A extends object>(row: ReadonlyArray<A>) => ReadonlyArray<A>) | undefined | ||
| ) { | ||
| return transformRows | ||
| ? Effect.map(this.run(sql, params), transformRows) | ||
| : this.run(sql, params) | ||
| } | ||
| executeRaw(sql: string, params: ReadonlyArray<unknown>) { | ||
| return this.runWithClient<Pg.Result>((client, resume) => { | ||
| client.query(sql, params as any, (err, result) => { | ||
| if (err) { | ||
| resume( | ||
| Effect.fail(new SqlError({ reason: classifyError(err, "Failed to execute statement", "execute") })) | ||
| ) | ||
| } else { | ||
| resume(Effect.succeed(result)) | ||
| } | ||
| }) | ||
| }) | ||
| } | ||
| executeWithoutTransform(sql: string, params: ReadonlyArray<unknown>) { | ||
| return this.run(sql, params) | ||
| } | ||
| executeValues(sql: string, params: ReadonlyArray<unknown>) { | ||
| return this.runWithClient<ReadonlyArray<any>>((client, resume) => { | ||
| client.query( | ||
| { | ||
| text: sql, | ||
| rowMode: "array", | ||
| values: params as Array<string> | ||
| }, | ||
| (err, result) => { | ||
| if (err) { | ||
| resume( | ||
| Effect.fail(new SqlError({ reason: classifyError(err, "Failed to execute statement", "execute") })) | ||
| ) | ||
| } else { | ||
| resume(Effect.succeed(result.rows)) | ||
| return Effect.suspend(() => { | ||
| if (!cancel) { | ||
| cleanup() | ||
| return Effect.void | ||
| } | ||
| } | ||
| ) | ||
| }) | ||
| } | ||
| executeUnprepared( | ||
| sql: string, | ||
| params: ReadonlyArray<unknown>, | ||
| transformRows: (<A extends object>(row: ReadonlyArray<A>) => ReadonlyArray<A>) | undefined | ||
| ) { | ||
| return this.execute(sql, params, transformRows) | ||
| } | ||
| executeStream( | ||
| sql: string, | ||
| params: ReadonlyArray<unknown>, | ||
| transformRows: (<A extends object>(row: ReadonlyArray<A>) => ReadonlyArray<A>) | undefined | ||
| ) { | ||
| // oxlint-disable-next-line @typescript-eslint/no-this-alias | ||
| const self = this | ||
| return Stream.fromChannel(Channel.fromTransform(Effect.fnUntraced(function*(_, scope) { | ||
| const client = self.pg ?? (yield* Scope.provide(reserveRaw, scope)) | ||
| yield* Scope.addFinalizer(scope, Effect.promise(() => cursor.close())) | ||
| const cursor = client.query(new Cursor(sql, params as any)) | ||
| // @effect-diagnostics-next-line returnEffectInGen:off | ||
| return Effect.callback<Arr.NonEmptyReadonlyArray<any>, SqlError | Cause.Done>((resume) => { | ||
| cursor.read(128, (err, rows) => { | ||
| if (err) { | ||
| resume(Effect.fail(new SqlError({ reason: classifyError(err, "Failed to execute statement", "stream") }))) | ||
| } else if (Arr.isArrayNonEmpty(rows)) { | ||
| resume(Effect.succeed(transformRows ? transformRows(rows) as any : rows)) | ||
| } else { | ||
| resume(Cause.done()) | ||
| } | ||
| return Effect.ensuring(cancel, Effect.sync(cleanup)) | ||
| }) | ||
| }) | ||
| }))) | ||
| } | ||
| } | ||
| }, | ||
| client ? Effect.succeed(client) : reserveRaw | ||
| ) | ||
@@ -463,3 +364,3 @@ const reserveRaw = Effect.callback<Pg.PoolClient, SqlError, Scope.Scope>((resume) => { | ||
| }) | ||
| const reserve = Effect.map(reserveRaw, (client) => new ConnectionImpl(client)) | ||
| const reserve = Effect.map(reserveRaw, makeConection) | ||
@@ -469,3 +370,3 @@ const onListenClientError = (_: Error) => { | ||
| const listenClient = yield* RcRef.make({ | ||
| const listenAcquirer = yield* RcRef.make({ | ||
| acquire: Effect.acquireRelease( | ||
@@ -522,6 +423,123 @@ Effect.tryPromise({ | ||
| return yield* makeWith({ | ||
| acquirer: Effect.succeed(makeConection()), | ||
| transactionAcquirer: reserve, | ||
| listenAcquirer: RcRef.get(listenAcquirer), | ||
| config, | ||
| spanAttributes: options.spanAttributes, | ||
| transformResultNames: options.transformResultNames, | ||
| transformQueryNames: options.transformQueryNames, | ||
| transformJson: options.transformJson | ||
| }) | ||
| }) | ||
| /** | ||
| * @category constructors | ||
| * @since 1.0.0 | ||
| */ | ||
| export const fromClient = Effect.fnUntraced(function*( | ||
| options: { | ||
| readonly acquire: Effect.Effect<Pg.Client, SqlError, Scope.Scope> | ||
| /** | ||
| * Whether to acquire a separate client for each sql.stream / sql.listen. | ||
| */ | ||
| readonly acquireForStream: boolean | ||
| readonly applicationName?: string | undefined | ||
| readonly spanAttributes?: Record<string, unknown> | undefined | ||
| readonly transformResultNames?: ((str: string) => string) | undefined | ||
| readonly transformQueryNames?: ((str: string) => string) | undefined | ||
| readonly transformJson?: boolean | undefined | ||
| readonly types?: Pg.CustomTypesConfig | undefined | ||
| } | ||
| ): Effect.fn.Return<PgClient, SqlError, Scope.Scope | Reactivity.Reactivity> { | ||
| function onError() {} | ||
| const acquireWithErrorHandler = options.acquire.pipe( | ||
| Effect.tap((client) => { | ||
| client.on("error", onError) | ||
| return Effect.addFinalizer(() => { | ||
| client.off("error", onError) | ||
| return Effect.void | ||
| }) | ||
| }) | ||
| ) | ||
| const client = yield* acquireWithErrorHandler | ||
| const semaphore = Semaphore.makeUnsafe(1) | ||
| let streamClient = options.acquireForStream ? acquireWithErrorHandler : Effect.acquireRelease( | ||
| Effect.as(semaphore.take(1), client), | ||
| () => semaphore.release(1) | ||
| ) | ||
| const makeConection = (client: Pg.Client) => | ||
| new ConnectionImpl( | ||
| function runWithClient<A>(f: (client: Pg.ClientBase, resume: (_: Effect.Effect<A, SqlError>) => void) => void) { | ||
| return Effect.callback<A, SqlError>((resume) => { | ||
| f(client, resume) | ||
| }) | ||
| }, | ||
| streamClient | ||
| ) | ||
| const connection = makeConection(client) | ||
| const acquirer = semaphore.withPermit(Effect.succeed(connection)) | ||
| const config: PgClientConfig = { | ||
| ...options, | ||
| host: client.host, | ||
| port: client.port, | ||
| database: client.database, | ||
| username: client.user, | ||
| password: typeof client.password === "string" ? Redacted.make(client.password) : undefined, | ||
| ssl: client.ssl | ||
| } | ||
| return yield* makeWith({ | ||
| acquirer, | ||
| transactionAcquirer: acquirer, | ||
| listenAcquirer: streamClient, | ||
| config, | ||
| spanAttributes: options.spanAttributes, | ||
| transformResultNames: options.transformResultNames, | ||
| transformQueryNames: options.transformQueryNames, | ||
| transformJson: options.transformJson | ||
| }) | ||
| }) | ||
| /** | ||
| * @category constructors | ||
| * @since 1.0.0 | ||
| */ | ||
| export const makeWith = Effect.fnUntraced(function*( | ||
| options: { | ||
| readonly acquirer: SqlConnection.Acquirer | ||
| readonly transactionAcquirer: SqlConnection.Acquirer | ||
| readonly listenAcquirer: Effect.Effect<Pg.ClientBase, SqlError, Scope.Scope> | ||
| readonly config: PgClientConfig | ||
| readonly spanAttributes?: Record<string, unknown> | undefined | ||
| readonly transformResultNames?: ((str: string) => string) | undefined | ||
| readonly transformQueryNames?: ((str: string) => string) | undefined | ||
| readonly transformJson?: boolean | undefined | ||
| } | ||
| ): Effect.fn.Return<PgClient, SqlError, Scope.Scope | Reactivity.Reactivity> { | ||
| const compiler = makeCompiler( | ||
| options.transformQueryNames, | ||
| options.transformJson | ||
| ) | ||
| const transformRows = options.transformResultNames ? | ||
| Statement.defaultTransforms( | ||
| options.transformResultNames, | ||
| options.transformJson | ||
| ).array : | ||
| undefined | ||
| const config = options.config | ||
| return Object.assign( | ||
| yield* Client.make({ | ||
| acquirer: Effect.succeed(new ConnectionImpl()), | ||
| transactionAcquirer: reserve, | ||
| acquirer: options.acquirer, | ||
| transactionAcquirer: options.transactionAcquirer, | ||
| compiler, | ||
@@ -539,7 +557,7 @@ spanAttributes: [ | ||
| [TypeId]: TypeId as TypeId, | ||
| config, | ||
| config: options.config, | ||
| json: (_: unknown) => Statement.fragment([PgJson(_)]), | ||
| listen: (channel: string) => | ||
| Stream.callback<string, SqlError>(Effect.fnUntraced(function*(queue) { | ||
| const client = yield* RcRef.get(listenClient) | ||
| const client = yield* options.listenAcquirer | ||
| function onNotification(msg: Pg.Notification) { | ||
@@ -563,11 +581,6 @@ if (msg.channel === channel && msg.payload) { | ||
| notify: (channel: string, payload: string) => | ||
| Effect.callback<void, SqlError>((resume) => { | ||
| pool.query("SELECT pg_notify($1, $2)", [channel, payload], (err) => { | ||
| if (err) { | ||
| resume(Effect.fail(new SqlError({ reason: classifyError(err, "Failed to notify", "notify") }))) | ||
| } else { | ||
| resume(Effect.void) | ||
| } | ||
| }) | ||
| }) | ||
| Effect.asVoid(Effect.scoped(Effect.flatMap( | ||
| options.acquirer, | ||
| (conn) => conn.executeRaw(`SELECT pg_notify($1, $2)`, [channel, payload]) | ||
| ))) | ||
| } | ||
@@ -577,2 +590,116 @@ ) | ||
| class ConnectionImpl implements Connection { | ||
| constructor( | ||
| runWithClient: <A>( | ||
| f: (client: Pg.ClientBase, resume: (_: Effect.Effect<A, SqlError>) => void) => void | ||
| ) => Effect.Effect<A, SqlError>, | ||
| reserve: Effect.Effect<Pg.ClientBase, SqlError, Scope.Scope> | ||
| ) { | ||
| this.runWithClient = runWithClient | ||
| this.reserve = reserve | ||
| } | ||
| private readonly runWithClient: <A>( | ||
| f: (client: Pg.ClientBase, resume: (_: Effect.Effect<A, SqlError>) => void) => void | ||
| ) => Effect.Effect<A, SqlError> | ||
| private readonly reserve: Effect.Effect<Pg.ClientBase, SqlError, Scope.Scope> | ||
| private run(query: string, params: ReadonlyArray<unknown>) { | ||
| return this.runWithClient<ReadonlyArray<any>>((client, resume) => { | ||
| client.query(query, params as any, (err, result) => { | ||
| if (err) { | ||
| resume( | ||
| Effect.fail(new SqlError({ reason: classifyError(err, "Failed to execute statement", "execute") })) | ||
| ) | ||
| } else { | ||
| // Multi-statement queries return an array of results | ||
| resume(Effect.succeed( | ||
| Array.isArray(result) | ||
| ? result.map((r) => r.rows ?? []) | ||
| : result.rows ?? [] | ||
| )) | ||
| } | ||
| }) | ||
| }) | ||
| } | ||
| execute( | ||
| sql: string, | ||
| params: ReadonlyArray<unknown>, | ||
| transformRows: (<A extends object>(row: ReadonlyArray<A>) => ReadonlyArray<A>) | undefined | ||
| ) { | ||
| return transformRows | ||
| ? Effect.map(this.run(sql, params), transformRows) | ||
| : this.run(sql, params) | ||
| } | ||
| executeRaw(sql: string, params: ReadonlyArray<unknown>) { | ||
| return this.runWithClient<Pg.Result>((client, resume) => { | ||
| client.query(sql, params as any, (err, result) => { | ||
| if (err) { | ||
| resume( | ||
| Effect.fail(new SqlError({ reason: classifyError(err, "Failed to execute statement", "execute") })) | ||
| ) | ||
| } else { | ||
| resume(Effect.succeed(result)) | ||
| } | ||
| }) | ||
| }) | ||
| } | ||
| executeWithoutTransform(sql: string, params: ReadonlyArray<unknown>) { | ||
| return this.run(sql, params) | ||
| } | ||
| executeValues(sql: string, params: ReadonlyArray<unknown>) { | ||
| return this.runWithClient<ReadonlyArray<any>>((client, resume) => { | ||
| client.query( | ||
| { | ||
| text: sql, | ||
| rowMode: "array", | ||
| values: params as Array<string> | ||
| }, | ||
| (err, result) => { | ||
| if (err) { | ||
| resume( | ||
| Effect.fail(new SqlError({ reason: classifyError(err, "Failed to execute statement", "execute") })) | ||
| ) | ||
| } else { | ||
| resume(Effect.succeed(result.rows)) | ||
| } | ||
| } | ||
| ) | ||
| }) | ||
| } | ||
| executeUnprepared( | ||
| sql: string, | ||
| params: ReadonlyArray<unknown>, | ||
| transformRows: (<A extends object>(row: ReadonlyArray<A>) => ReadonlyArray<A>) | undefined | ||
| ) { | ||
| return this.execute(sql, params, transformRows) | ||
| } | ||
| executeStream( | ||
| sql: string, | ||
| params: ReadonlyArray<unknown>, | ||
| transformRows: (<A extends object>(row: ReadonlyArray<A>) => ReadonlyArray<A>) | undefined | ||
| ) { | ||
| // oxlint-disable-next-line @typescript-eslint/no-this-alias | ||
| const self = this | ||
| return Stream.fromChannel(Channel.fromTransform(Effect.fnUntraced(function*(_, scope) { | ||
| const client = yield* Scope.provide(self.reserve, scope) | ||
| yield* Scope.addFinalizer(scope, Effect.promise(() => cursor.close())) | ||
| const cursor = client.query(new Cursor(sql, params as any)) | ||
| // @effect-diagnostics-next-line returnEffectInGen:off | ||
| return Effect.callback<Arr.NonEmptyReadonlyArray<any>, SqlError | Cause.Done>((resume) => { | ||
| cursor.read(128, (err, rows) => { | ||
| if (err) { | ||
| resume(Effect.fail(new SqlError({ reason: classifyError(err, "Failed to execute statement", "stream") }))) | ||
| } else if (Arr.isArrayNonEmpty(rows)) { | ||
| resume(Effect.succeed(transformRows ? transformRows(rows) as any : rows)) | ||
| } else { | ||
| resume(Cause.done()) | ||
| } | ||
| }) | ||
| }) | ||
| }))) | ||
| } | ||
| } | ||
| const cancelEffects = new WeakMap<Pg.PoolClient, Effect.Effect<void> | undefined>() | ||
@@ -604,17 +731,11 @@ const makeCancel = (pool: Pg.Pool, client: Pg.PoolClient) => { | ||
| */ | ||
| export const layerConfig: ( | ||
| config: Config.Wrap<PgClientConfig> | ||
| ) => Layer.Layer<PgClient | Client.SqlClient, Config.ConfigError | SqlError> = ( | ||
| config: Config.Wrap<PgClientConfig> | ||
| ): Layer.Layer<PgClient | Client.SqlClient, Config.ConfigError | SqlError> => | ||
| export const layerFrom = <E, R>( | ||
| acquire: Effect.Effect<PgClient, E, R> | ||
| ): Layer.Layer<PgClient | Client.SqlClient, E, Exclude<R, Scope.Scope | Reactivity.Reactivity>> => | ||
| Layer.effectServices( | ||
| Config.unwrap(config).asEffect().pipe( | ||
| Effect.flatMap(make), | ||
| Effect.map((client) => | ||
| ServiceMap.make(PgClient, client).pipe( | ||
| ServiceMap.add(Client.SqlClient, client) | ||
| ) | ||
| ) | ||
| ) | ||
| ).pipe(Layer.provide(Reactivity.layer)) | ||
| Effect.map(acquire, (client) => | ||
| ServiceMap.make(PgClient, client).pipe( | ||
| ServiceMap.add(Client.SqlClient, client) | ||
| )) | ||
| ).pipe(Layer.provide(Reactivity.layer)) as any | ||
@@ -625,11 +746,11 @@ /** | ||
| */ | ||
| export const layer = ( | ||
| config: PgClientConfig | ||
| ): Layer.Layer<PgClient | Client.SqlClient, SqlError> => | ||
| Layer.effectServices( | ||
| Effect.map(make(config), (client) => | ||
| ServiceMap.make(PgClient, client).pipe( | ||
| ServiceMap.add(Client.SqlClient, client) | ||
| )) | ||
| ).pipe(Layer.provide(Reactivity.layer)) | ||
| export const layerConfig: ( | ||
| config: Config.Wrap<PgPoolConfig> | ||
| ) => Layer.Layer<PgClient | Client.SqlClient, Config.ConfigError | SqlError> = ( | ||
| config: Config.Wrap<PgPoolConfig> | ||
| ): Layer.Layer<PgClient | Client.SqlClient, Config.ConfigError | SqlError> => | ||
| layerFrom(Effect.flatMap( | ||
| Config.unwrap(config).asEffect(), | ||
| make | ||
| )) | ||
@@ -640,20 +761,6 @@ /** | ||
| */ | ||
| export const layerFromPool = (options: { | ||
| readonly acquire: Effect.Effect<Pg.Pool, SqlError, Scope.Scope> | ||
| export const layer = ( | ||
| config: PgPoolConfig | ||
| ): Layer.Layer<PgClient | Client.SqlClient, SqlError> => layerFrom(make(config)) | ||
| readonly applicationName?: string | undefined | ||
| readonly spanAttributes?: Record<string, unknown> | undefined | ||
| readonly transformResultNames?: ((str: string) => string) | undefined | ||
| readonly transformQueryNames?: ((str: string) => string) | undefined | ||
| readonly transformJson?: boolean | undefined | ||
| readonly types?: Pg.CustomTypesConfig | undefined | ||
| }): Layer.Layer<PgClient | Client.SqlClient, SqlError> => | ||
| Layer.effectServices( | ||
| Effect.map(fromPool(options), (client) => | ||
| ServiceMap.make(PgClient, client).pipe( | ||
| ServiceMap.add(Client.SqlClient, client) | ||
| )) | ||
| ).pipe(Layer.provide(Reactivity.layer)) | ||
| /** | ||
@@ -724,1 +831,53 @@ * @category constructor | ||
| const PgJson = Statement.custom<PgJson>("PgJson") | ||
| const ATTR_DB_SYSTEM_NAME = "db.system.name" | ||
| const ATTR_DB_NAMESPACE = "db.namespace" | ||
| const ATTR_SERVER_ADDRESS = "server.address" | ||
| const ATTR_SERVER_PORT = "server.port" | ||
| const pgCodeFromCause = (cause: unknown): string | undefined => { | ||
| if (typeof cause !== "object" || cause === null || !("code" in cause)) { | ||
| return undefined | ||
| } | ||
| const code = cause.code | ||
| return typeof code === "string" ? code : undefined | ||
| } | ||
| const classifyError = ( | ||
| cause: unknown, | ||
| message: string, | ||
| operation: string | ||
| ) => { | ||
| const props = { cause, message, operation } | ||
| const code = pgCodeFromCause(cause) | ||
| if (code !== undefined) { | ||
| if (code.startsWith("08")) { | ||
| return new ConnectionError(props) | ||
| } | ||
| if (code.startsWith("28")) { | ||
| return new AuthenticationError(props) | ||
| } | ||
| if (code === "42501") { | ||
| return new AuthorizationError(props) | ||
| } | ||
| if (code.startsWith("42")) { | ||
| return new SqlSyntaxError(props) | ||
| } | ||
| if (code.startsWith("23")) { | ||
| return new ConstraintError(props) | ||
| } | ||
| if (code === "40P01") { | ||
| return new DeadlockError(props) | ||
| } | ||
| if (code === "40001") { | ||
| return new SerializationError(props) | ||
| } | ||
| if (code === "55P03") { | ||
| return new LockTimeoutError(props) | ||
| } | ||
| if (code === "57014") { | ||
| return new StatementTimeoutError(props) | ||
| } | ||
| } | ||
| return new UnknownError(props) | ||
| } |
97732
15.84%1751
18.87%