@effect/sql-pg 0.50.3 → 4.0.0-beta.1

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.
@@ -1,20 +1,16 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import * as Reactivity from "@effect/experimental/Reactivity";
5
- import * as Client from "@effect/sql/SqlClient";
6
- import { SqlError } from "@effect/sql/SqlError";
7
- import type { Custom, Fragment } from "@effect/sql/Statement";
8
- import * as Statement from "@effect/sql/Statement";
9
1
  import * as Config from "effect/Config";
10
- import type * as ConfigError from "effect/ConfigError";
11
- import * as Context from "effect/Context";
12
2
  import * as Duration from "effect/Duration";
13
3
  import * as Effect from "effect/Effect";
14
4
  import * as Layer from "effect/Layer";
15
5
  import * as Redacted from "effect/Redacted";
16
6
  import * as Scope from "effect/Scope";
7
+ import * as ServiceMap from "effect/ServiceMap";
17
8
  import * as Stream from "effect/Stream";
9
+ import * as Reactivity from "effect/unstable/reactivity/Reactivity";
10
+ import * as Client from "effect/unstable/sql/SqlClient";
11
+ import { SqlError } from "effect/unstable/sql/SqlError";
12
+ import type { Custom, Fragment } from "effect/unstable/sql/Statement";
13
+ import * as Statement from "effect/unstable/sql/Statement";
18
14
  import type { Duplex } from "node:stream";
19
15
  import type { ConnectionOptions } from "node:tls";
20
16
  import * as Pg from "pg";
@@ -43,7 +39,7 @@ export interface PgClient extends Client.SqlClient {
43
39
  * @category tags
44
40
  * @since 1.0.0
45
41
  */
46
- export declare const PgClient: Context.Tag<PgClient, PgClient>;
42
+ export declare const PgClient: ServiceMap.Service<PgClient, PgClient>;
47
43
  /**
48
44
  * @category constructors
49
45
  * @since 1.0.0
@@ -79,7 +75,7 @@ export declare const make: (options: PgClientConfig) => Effect.Effect<PgClient,
79
75
  * @category constructors
80
76
  * @since 1.0.0
81
77
  */
82
- export interface PgClientFromPoolOptions {
78
+ export declare const fromPool: (options: {
83
79
  readonly acquire: Effect.Effect<Pg.Pool, SqlError, Scope.Scope>;
84
80
  readonly applicationName?: string | undefined;
85
81
  readonly spanAttributes?: Record<string, unknown> | undefined;
@@ -87,21 +83,12 @@ export interface PgClientFromPoolOptions {
87
83
  readonly transformQueryNames?: ((str: string) => string) | undefined;
88
84
  readonly transformJson?: boolean | undefined;
89
85
  readonly types?: Pg.CustomTypesConfig | undefined;
90
- }
91
- /**
92
- * Create a `PgClient` from an existing `pg` pool.
93
- *
94
- * You control the pool lifecycle via `acquire` (typically `Effect.acquireRelease`).
95
- *
96
- * @category constructors
97
- * @since 1.0.0
98
- */
99
- export declare const fromPool: (options: PgClientFromPoolOptions) => Effect.Effect<PgClient, SqlError, Scope.Scope | Reactivity.Reactivity>;
86
+ }) => Effect.Effect<PgClient, SqlError, Scope.Scope | Reactivity.Reactivity>;
100
87
  /**
101
88
  * @category layers
102
89
  * @since 1.0.0
103
90
  */
104
- export declare const layerConfig: (config: Config.Config.Wrap<PgClientConfig>) => Layer.Layer<PgClient | Client.SqlClient, ConfigError.ConfigError | SqlError>;
91
+ export declare const layerConfig: (config: Config.Wrap<PgClientConfig>) => Layer.Layer<PgClient | Client.SqlClient, Config.ConfigError | SqlError>;
105
92
  /**
106
93
  * @category layers
107
94
  * @since 1.0.0
@@ -111,7 +98,15 @@ export declare const layer: (config: PgClientConfig) => Layer.Layer<PgClient | C
111
98
  * @category layers
112
99
  * @since 1.0.0
113
100
  */
114
- export declare const layerFromPool: (options: PgClientFromPoolOptions) => Layer.Layer<PgClient | Client.SqlClient, SqlError>;
101
+ export declare const layerFromPool: (options: {
102
+ readonly acquire: Effect.Effect<Pg.Pool, SqlError, Scope.Scope>;
103
+ readonly applicationName?: string | undefined;
104
+ readonly spanAttributes?: Record<string, unknown> | undefined;
105
+ readonly transformResultNames?: ((str: string) => string) | undefined;
106
+ readonly transformQueryNames?: ((str: string) => string) | undefined;
107
+ readonly transformJson?: boolean | undefined;
108
+ readonly types?: Pg.CustomTypesConfig | undefined;
109
+ }) => Layer.Layer<PgClient | Client.SqlClient, SqlError>;
115
110
  /**
116
111
  * @category constructor
117
112
  * @since 1.0.0
@@ -132,6 +127,6 @@ interface PgJson extends Custom<"PgJson", unknown> {
132
127
  * @category custom types
133
128
  * @since 1.0.0
134
129
  */
135
- declare const PgJson: (i0: unknown, i1: void, i2: void) => Fragment;
130
+ declare const PgJson: (paramA: unknown, paramB: void, paramC: void) => PgJson;
136
131
  export {};
137
132
  //# sourceMappingURL=PgClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PgClient.d.ts","sourceRoot":"","sources":["../src/PgClient.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAIrC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,uCAAuC,CAAA;AACnE,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AASxB;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,MAAmC,CAAA;AAExD;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,0BAA0B,CAAA;AAE/C;;;GAGG;AACH,MAAM,WAAW,QAAS,SAAQ,MAAM,CAAC,SAAS;IAChD,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,QAAQ,CAAA;IACvC,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACrE,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;CACrF;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,wCAA0D,CAAA;AAE/E;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAA;IAE5C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,iBAAiB,GAAG,SAAS,CAAA;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAA;IAEjD,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAA;IAE5C,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAA;IACzD,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAA;IAE5D,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAA;IAE3D,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IAE7D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;IACrE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;IACpE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,iBAAiB,GAAG,SAAS,CAAA;CAClD;AAED;;;GAGG;AACH,eAAO,MAAM,IAAI,GACf,SAAS,cAAc,KACtB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,CAsDpE,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,QAAQ;sBAEC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC;+BAEpC,MAAM,GAAG,SAAS;8BACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;oCAE7B,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS;mCACtC,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS;6BAC3C,OAAO,GAAG,SAAS;qBAC3B,EAAE,CAAC,iBAAiB,GAAG,SAAS;4EAkRnD,CAAA;AAwBF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,CACxB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAChC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,GAAG,QAAQ,CAYlC,CAAA;AAEzC;;;GAGG;AACH,eAAO,MAAM,KAAK,GAChB,QAAQ,cAAc,KACrB,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,QAAQ,CAMX,CAAA;AAEzC;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAE/D,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IAE7D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;IACrE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;IACpE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,iBAAiB,GAAG,SAAS,CAAA;CAClD,KAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,QAAQ,CAMZ,CAAA;AAEzC;;;GAGG;AACH,eAAO,MAAM,YAAY,GACvB,YAAY,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EACjC,uBAAoB,KACnB,SAAS,CAAC,QAsCZ,CAAA;AAID;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAA;AAE7B;;;GAGG;AACH,UAAU,MAAO,SAAQ,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;CAAG;AACrD;;;GAGG;AACH,QAAA,MAAM,MAAM,yDAAqC,CAAA"}
@@ -1,24 +1,25 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import * as Reactivity from "@effect/experimental/Reactivity";
5
- import * as Client from "@effect/sql/SqlClient";
6
- import { SqlError } from "@effect/sql/SqlError";
7
- import * as Statement from "@effect/sql/Statement";
8
4
  import * as Arr from "effect/Array";
9
- import * as Chunk from "effect/Chunk";
5
+ import * as Cause from "effect/Cause";
6
+ import * as Channel from "effect/Channel";
10
7
  import * as Config from "effect/Config";
11
- import * as Context from "effect/Context";
12
8
  import * as Duration from "effect/Duration";
13
9
  import * as Effect from "effect/Effect";
14
10
  import * as Fiber from "effect/Fiber";
15
11
  import * as Layer from "effect/Layer";
16
12
  import * as Number from "effect/Number";
17
- import * as Option from "effect/Option";
13
+ import * as Queue from "effect/Queue";
18
14
  import * as RcRef from "effect/RcRef";
19
15
  import * as Redacted from "effect/Redacted";
20
16
  import * as Scope from "effect/Scope";
17
+ import * as ServiceMap from "effect/ServiceMap";
21
18
  import * as Stream from "effect/Stream";
19
+ import * as Reactivity from "effect/unstable/reactivity/Reactivity";
20
+ import * as Client from "effect/unstable/sql/SqlClient";
21
+ import { SqlError } from "effect/unstable/sql/SqlError";
22
+ import * as Statement from "effect/unstable/sql/Statement";
22
23
  import * as Pg from "pg";
23
24
  import * as PgConnString from "pg-connection-string";
24
25
  import Cursor from "pg-cursor";
@@ -35,10 +36,58 @@ export const TypeId = "~@effect/sql-pg/PgClient";
35
36
  * @category tags
36
37
  * @since 1.0.0
37
38
  */
38
- export const PgClient = /*#__PURE__*/Context.GenericTag("@effect/sql-pg/PgClient");
39
- const makeClient = (pool, config, options) => Effect.gen(function* () {
39
+ export const PgClient = /*#__PURE__*/ServiceMap.Service("@effect/sql-pg/PgClient");
40
+ /**
41
+ * @category constructors
42
+ * @since 1.0.0
43
+ */
44
+ export const make = options => fromPool({
45
+ ...options,
46
+ acquire: Effect.gen(function* () {
47
+ const pool = new Pg.Pool({
48
+ connectionString: options.url ? Redacted.value(options.url) : undefined,
49
+ user: options.username,
50
+ host: options.host,
51
+ database: options.database,
52
+ password: options.password ? Redacted.value(options.password) : undefined,
53
+ ssl: options.ssl,
54
+ port: options.port,
55
+ ...(options.stream ? {
56
+ stream: options.stream
57
+ } : {}),
58
+ connectionTimeoutMillis: options.connectTimeout ? Duration.toMillis(Duration.fromDurationInputUnsafe(options.connectTimeout)) : undefined,
59
+ idleTimeoutMillis: options.idleTimeout ? Duration.toMillis(Duration.fromDurationInputUnsafe(options.idleTimeout)) : undefined,
60
+ max: options.maxConnections,
61
+ min: options.minConnections,
62
+ maxLifetimeSeconds: options.connectionTTL ? Duration.toSeconds(Duration.fromDurationInputUnsafe(options.connectionTTL)) : undefined,
63
+ application_name: options.applicationName ?? "@effect/sql-pg",
64
+ types: options.types
65
+ });
66
+ pool.on("error", _err => {});
67
+ yield* Effect.acquireRelease(Effect.tryPromise({
68
+ try: () => pool.query("SELECT 1"),
69
+ catch: cause => new SqlError({
70
+ cause,
71
+ message: "PgClient: Failed to connect"
72
+ })
73
+ }), () => Effect.promise(() => pool.end()).pipe(Effect.timeoutOption(1000))).pipe(Effect.timeoutOrElse({
74
+ duration: options.connectTimeout ?? Duration.seconds(5),
75
+ onTimeout: () => Effect.fail(new SqlError({
76
+ cause: new Error("Connection timed out"),
77
+ message: "PgClient: Connection timed out"
78
+ }))
79
+ }));
80
+ return pool;
81
+ })
82
+ });
83
+ /**
84
+ * @category constructors
85
+ * @since 1.0.0
86
+ */
87
+ export const fromPool = /*#__PURE__*/Effect.fnUntraced(function* (options) {
40
88
  const compiler = makeCompiler(options.transformQueryNames, options.transformJson);
41
89
  const transformRows = options.transformResultNames ? Statement.defaultTransforms(options.transformResultNames, options.transformJson).array : undefined;
90
+ const pool = yield* options.acquire;
42
91
  class ConnectionImpl {
43
92
  pg;
44
93
  constructor(pg) {
@@ -46,12 +95,12 @@ const makeClient = (pool, config, options) => Effect.gen(function* () {
46
95
  }
47
96
  runWithClient(f) {
48
97
  if (this.pg !== undefined) {
49
- return Effect.async(resume => {
98
+ return Effect.callback(resume => {
50
99
  f(this.pg, resume);
51
100
  return makeCancel(pool, this.pg);
52
101
  });
53
102
  }
54
- return Effect.async(resume => {
103
+ return Effect.callback(resume => {
55
104
  let done = false;
56
105
  let cancel = undefined;
57
106
  let client = undefined;
@@ -156,64 +205,83 @@ const makeClient = (pool, config, options) => Effect.gen(function* () {
156
205
  return this.execute(sql, params, transformRows);
157
206
  }
158
207
  executeStream(sql, params, transformRows) {
159
- // eslint-disable-next-line @typescript-eslint/no-this-alias
208
+ // oxlint-disable-next-line @typescript-eslint/no-this-alias
160
209
  const self = this;
161
- return Effect.gen(function* () {
162
- const scope = yield* Effect.scope;
163
- const client = self.pg ?? (yield* reserveRaw);
210
+ return Stream.fromChannel(Channel.fromTransform(Effect.fnUntraced(function* (_, scope) {
211
+ const client = self.pg ?? (yield* Scope.provide(reserveRaw, scope));
164
212
  yield* Scope.addFinalizer(scope, Effect.promise(() => cursor.close()));
165
213
  const cursor = client.query(new Cursor(sql, params));
166
- const pull = Effect.async(resume => {
214
+ // @effect-diagnostics-next-line returnEffectInGen:off
215
+ return Effect.callback(resume => {
167
216
  cursor.read(128, (err, rows) => {
168
217
  if (err) {
169
- resume(Effect.fail(Option.some(new SqlError({
218
+ resume(Effect.fail(new SqlError({
170
219
  cause: err,
171
220
  message: "Failed to execute statement"
172
- }))));
173
- } else if (Arr.isNonEmptyArray(rows)) {
174
- resume(Effect.succeed(Chunk.unsafeFromArray(transformRows ? transformRows(rows) : rows)));
221
+ })));
222
+ } else if (Arr.isArrayNonEmpty(rows)) {
223
+ resume(Effect.succeed(transformRows ? transformRows(rows) : rows));
175
224
  } else {
176
- resume(Effect.fail(Option.none()));
225
+ resume(Cause.done());
177
226
  }
178
227
  });
179
228
  });
180
- return Stream.repeatEffectChunkOption(pull);
181
- }).pipe(Stream.unwrapScoped);
229
+ })));
182
230
  }
183
231
  }
184
- const reserveRaw = Effect.async(resume => {
185
- const fiber = Option.getOrThrow(Fiber.getCurrentFiber());
186
- const scope = Context.unsafeGet(fiber.currentContext, Scope.Scope);
232
+ const reserveRaw = Effect.callback(resume => {
233
+ const fiber = Fiber.getCurrent();
234
+ const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope);
187
235
  let cause = undefined;
188
- function onError(cause_) {
189
- cause = cause_;
190
- }
191
236
  pool.connect((err, client, release) => {
192
237
  if (err) {
193
238
  resume(Effect.fail(new SqlError({
194
239
  cause: err,
195
240
  message: "Failed to acquire connection for transaction"
196
241
  })));
197
- return;
198
- } else if (!client) {
199
- resume(Effect.fail(new SqlError({
200
- message: "Failed to acquire connection for transaction",
201
- cause: new Error("No client returned")
202
- })));
203
- return;
242
+ } else {
243
+ resume(Effect.as(Scope.addFinalizer(scope, Effect.sync(() => {
244
+ client.off("error", onError);
245
+ release(cause);
246
+ })), client));
247
+ }
248
+ function onError(cause_) {
249
+ cause = cause_;
204
250
  }
205
- // Else we know we have client defined, so we can proceed with the connection
206
251
  client.on("error", onError);
207
- resume(Effect.as(Scope.addFinalizer(scope, Effect.sync(() => {
208
- client.off("error", onError);
209
- release(cause);
210
- })), client));
211
252
  });
212
253
  });
213
254
  const reserve = Effect.map(reserveRaw, client => new ConnectionImpl(client));
214
255
  const listenClient = yield* RcRef.make({
215
256
  acquire: reserveRaw
216
257
  });
258
+ let config = {
259
+ url: pool.options.connectionString ? Redacted.make(pool.options.connectionString) : undefined,
260
+ host: pool.options.host,
261
+ port: pool.options.port,
262
+ database: pool.options.database,
263
+ username: pool.options.user,
264
+ password: typeof pool.options.password === "string" ? Redacted.make(pool.options.password) : undefined,
265
+ ssl: pool.options.ssl,
266
+ applicationName: pool.options.application_name,
267
+ types: pool.options.types
268
+ };
269
+ if (pool.options.connectionString) {
270
+ // @effect-diagnostics-next-line tryCatchInEffectGen:off
271
+ try {
272
+ const parsed = PgConnString.parse(pool.options.connectionString);
273
+ config = {
274
+ ...config,
275
+ host: config.host ?? parsed.host ?? undefined,
276
+ port: config.port ?? (parsed.port ? Number.parse(parsed.port) : undefined),
277
+ username: config.username ?? parsed.user ?? undefined,
278
+ password: config.password ?? (parsed.password ? Redacted.make(parsed.password) : undefined),
279
+ database: config.database ?? parsed.database ?? undefined
280
+ };
281
+ } catch {
282
+ //
283
+ }
284
+ }
217
285
  return Object.assign(yield* Client.make({
218
286
  acquirer: Effect.succeed(new ConnectionImpl()),
219
287
  transactionAcquirer: reserve,
@@ -223,12 +291,12 @@ const makeClient = (pool, config, options) => Effect.gen(function* () {
223
291
  }), {
224
292
  [TypeId]: TypeId,
225
293
  config,
226
- json: _ => PgJson(_),
227
- listen: channel => Stream.asyncPush(Effect.fnUntraced(function* (emit) {
294
+ json: _ => Statement.fragment([PgJson(_)]),
295
+ listen: channel => Stream.callback(Effect.fnUntraced(function* (queue) {
228
296
  const client = yield* RcRef.get(listenClient);
229
297
  function onNotification(msg) {
230
298
  if (msg.channel === channel && msg.payload) {
231
- emit.single(msg.payload);
299
+ Queue.offerUnsafe(queue, msg.payload);
232
300
  }
233
301
  }
234
302
  yield* Effect.addFinalizer(() => Effect.promise(() => {
@@ -244,7 +312,7 @@ const makeClient = (pool, config, options) => Effect.gen(function* () {
244
312
  });
245
313
  client.on("notification", onNotification);
246
314
  })),
247
- notify: (channel, payload) => Effect.async(resume => {
315
+ notify: (channel, payload) => Effect.callback(resume => {
248
316
  pool.query(`NOTIFY ${Pg.escapeIdentifier(channel)}, $1`, [payload], err => {
249
317
  if (err) {
250
318
  resume(Effect.fail(new SqlError({
@@ -258,100 +326,6 @@ const makeClient = (pool, config, options) => Effect.gen(function* () {
258
326
  })
259
327
  });
260
328
  });
261
- /**
262
- * @category constructors
263
- * @since 1.0.0
264
- */
265
- export const make = options => Effect.gen(function* () {
266
- const pool = new Pg.Pool({
267
- connectionString: options.url ? Redacted.value(options.url) : undefined,
268
- user: options.username,
269
- host: options.host,
270
- database: options.database,
271
- password: options.password ? Redacted.value(options.password) : undefined,
272
- ssl: options.ssl,
273
- port: options.port,
274
- ...(options.stream ? {
275
- stream: options.stream
276
- } : {}),
277
- connectionTimeoutMillis: options.connectTimeout ? Duration.toMillis(options.connectTimeout) : undefined,
278
- idleTimeoutMillis: options.idleTimeout ? Duration.toMillis(options.idleTimeout) : undefined,
279
- max: options.maxConnections,
280
- min: options.minConnections,
281
- maxLifetimeSeconds: options.connectionTTL ? Duration.toSeconds(options.connectionTTL) : undefined,
282
- application_name: options.applicationName ?? "@effect/sql-pg",
283
- types: options.types
284
- });
285
- pool.on("error", _err => {});
286
- yield* Effect.acquireRelease(Effect.tryPromise({
287
- try: () => pool.query("SELECT 1"),
288
- catch: cause => new SqlError({
289
- cause,
290
- message: "PgClient: Failed to connect"
291
- })
292
- }), () => Effect.promise(() => pool.end()).pipe(Effect.interruptible, Effect.timeoutOption(1000))).pipe(Effect.timeoutFail({
293
- duration: options.connectTimeout ?? Duration.seconds(5),
294
- onTimeout: () => new SqlError({
295
- cause: new Error("Connection timed out"),
296
- message: "PgClient: Connection timed out"
297
- })
298
- }));
299
- let config = options;
300
- if (pool.options.connectionString) {
301
- try {
302
- const parsed = PgConnString.parse(pool.options.connectionString);
303
- config = {
304
- ...config,
305
- host: config.host ?? parsed.host ?? undefined,
306
- port: config.port ?? (parsed.port ? Option.getOrUndefined(Number.parse(parsed.port)) : undefined),
307
- username: config.username ?? parsed.user ?? undefined,
308
- password: config.password ?? (parsed.password ? Redacted.make(parsed.password) : undefined),
309
- database: config.database ?? parsed.database ?? undefined
310
- };
311
- } catch {
312
- //
313
- }
314
- }
315
- return yield* makeClient(pool, config, options);
316
- });
317
- /**
318
- * Create a `PgClient` from an existing `pg` pool.
319
- *
320
- * You control the pool lifecycle via `acquire` (typically `Effect.acquireRelease`).
321
- *
322
- * @category constructors
323
- * @since 1.0.0
324
- */
325
- export const fromPool = /*#__PURE__*/Effect.fnUntraced(function* (options) {
326
- const pool = yield* options.acquire;
327
- let config = {
328
- url: pool.options.connectionString ? Redacted.make(pool.options.connectionString) : undefined,
329
- host: pool.options.host,
330
- port: pool.options.port,
331
- database: pool.options.database,
332
- username: pool.options.user,
333
- password: typeof pool.options.password === "string" ? Redacted.make(pool.options.password) : undefined,
334
- ssl: pool.options.ssl,
335
- applicationName: pool.options.application_name,
336
- types: pool.options.types
337
- };
338
- if (pool.options.connectionString) {
339
- try {
340
- const parsed = PgConnString.parse(pool.options.connectionString);
341
- config = {
342
- ...config,
343
- host: config.host ?? parsed.host ?? undefined,
344
- port: config.port ?? (parsed.port ? Option.getOrUndefined(Number.parse(parsed.port)) : undefined),
345
- username: config.username ?? parsed.user ?? undefined,
346
- password: config.password ?? (parsed.password ? Redacted.make(parsed.password) : undefined),
347
- database: config.database ?? parsed.database ?? undefined
348
- };
349
- } catch {
350
- //
351
- }
352
- }
353
- return yield* makeClient(pool, config, options);
354
- });
355
329
  const cancelEffects = /*#__PURE__*/new WeakMap();
356
330
  const makeCancel = (pool, client) => {
357
331
  if (cancelEffects.has(client)) {
@@ -360,7 +334,7 @@ const makeCancel = (pool, client) => {
360
334
  const processId = client.processID;
361
335
  const eff = processId !== undefined
362
336
  // query cancelation is best-effort, so we don't fail if it doesn't work
363
- ? Effect.async(resume => {
337
+ ? Effect.callback(resume => {
364
338
  if (pool.ending) return resume(Effect.void);
365
339
  pool.query(`SELECT pg_cancel_backend(${processId})`, () => {
366
340
  resume(Effect.void);
@@ -373,17 +347,17 @@ const makeCancel = (pool, client) => {
373
347
  * @category layers
374
348
  * @since 1.0.0
375
349
  */
376
- export const layerConfig = config => Layer.scopedContext(Config.unwrap(config).pipe(Effect.flatMap(make), Effect.map(client => Context.make(PgClient, client).pipe(Context.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
350
+ 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));
377
351
  /**
378
352
  * @category layers
379
353
  * @since 1.0.0
380
354
  */
381
- export const layer = config => Layer.scopedContext(Effect.map(make(config), client => Context.make(PgClient, client).pipe(Context.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
355
+ 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));
382
356
  /**
383
357
  * @category layers
384
358
  * @since 1.0.0
385
359
  */
386
- export const layerFromPool = options => Layer.scopedContext(Effect.map(fromPool(options), client => Context.make(PgClient, client).pipe(Context.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
360
+ 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));
387
361
  /**
388
362
  * @category constructor
389
363
  * @since 1.0.0
@@ -405,7 +379,7 @@ export const makeCompiler = (transform, transformJson = true) => {
405
379
  switch (type.kind) {
406
380
  case "PgJson":
407
381
  {
408
- return [placeholder(undefined), [withoutTransform || transformValue === undefined ? type.i0 : transformValue(type.i0)]];
382
+ return [placeholder(undefined), [withoutTransform || transformValue === undefined ? type.paramA : transformValue(type.paramA)]];
409
383
  }
410
384
  }
411
385
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PgClient.js","names":["Arr","Cause","Channel","Config","Duration","Effect","Fiber","Layer","Number","Queue","RcRef","Redacted","Scope","ServiceMap","Stream","Reactivity","Client","SqlError","Statement","Pg","PgConnString","Cursor","ATTR_DB_SYSTEM_NAME","ATTR_DB_NAMESPACE","ATTR_SERVER_ADDRESS","ATTR_SERVER_PORT","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","fromDurationInputUnsafe","idleTimeoutMillis","idleTimeout","max","maxConnections","min","minConnections","maxLifetimeSeconds","connectionTTL","toSeconds","application_name","applicationName","types","on","_err","acquireRelease","tryPromise","try","query","catch","cause","message","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","listenClient","config","parsed","parse","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":[]}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type * as Effect from "effect/Effect";
5
+ import * as Layer from "effect/Layer";
6
+ import * as Migrator from "effect/unstable/sql/Migrator";
7
+ import type * as Client from "effect/unstable/sql/SqlClient";
8
+ import type { SqlError } from "effect/unstable/sql/SqlError";
9
+ /**
10
+ * @since 1.0.0
11
+ */
12
+ export * from "effect/unstable/sql/Migrator";
13
+ /**
14
+ * @category constructor
15
+ * @since 1.0.0
16
+ */
17
+ export declare const run: <R2 = never>(options: Migrator.MigratorOptions<R2>) => Effect.Effect<ReadonlyArray<readonly [id: number, name: string]>, Migrator.MigrationError | SqlError, Client.SqlClient | R2>;
18
+ /**
19
+ * @category layers
20
+ * @since 1.0.0
21
+ */
22
+ export declare const layer: <R>(options: Migrator.MigratorOptions<R>) => Layer.Layer<never, Migrator.MigrationError | SqlError, Client.SqlClient | R>;
23
+ //# sourceMappingURL=PgMigrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PgMigrator.d.ts","sourceRoot":"","sources":["../src/PgMigrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAA;AACxD,OAAO,KAAK,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAE5D;;GAEG;AACH,cAAc,8BAA8B,CAAA;AAE5C;;;GAGG;AACH,eAAO,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,EAC3B,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,KAClC,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAClD,QAAQ,CAAC,cAAc,GAAG,QAAQ,EAClC,MAAM,CAAC,SAAS,GAAG,EAAE,CA0DrB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EACrB,SAAS,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,KACnC,KAAK,CAAC,KAAK,CACZ,KAAK,EACL,QAAQ,CAAC,cAAc,GAAG,QAAQ,EAClC,MAAM,CAAC,SAAS,GAAG,CAAC,CACgB,CAAA"}
@@ -0,0 +1,74 @@
1
+ import * as Layer from "effect/Layer";
2
+ import * as Migrator from "effect/unstable/sql/Migrator";
3
+ /**
4
+ * @since 1.0.0
5
+ */
6
+ export * from "effect/unstable/sql/Migrator";
7
+ /**
8
+ * @category constructor
9
+ * @since 1.0.0
10
+ */
11
+ export const run = /*#__PURE__*/Migrator.make({
12
+ // TODO: Wait for Command module
13
+ // dumpSchema(path, table) {
14
+ // const pgDump = (args: Array<string>) =>
15
+ // Effect.gen(function*() {
16
+ // const sql = yield* PgClient
17
+ // const dump = yield* pipe(
18
+ // Command.make("pg_dump", ...args, "--no-owner", "--no-privileges"),
19
+ // Command.env({
20
+ // PATH: (globalThis as any).process?.env.PATH,
21
+ // PGHOST: sql.config.host,
22
+ // PGPORT: sql.config.port?.toString(),
23
+ // PGUSER: sql.config.username,
24
+ // PGPASSWORD: sql.config.password
25
+ // ? Redacted.value(sql.config.password)
26
+ // : undefined,
27
+ // PGDATABASE: sql.config.database,
28
+ // PGSSLMODE: sql.config.ssl ? "require" : "prefer"
29
+ // }),
30
+ // Command.string
31
+ // )
32
+ //
33
+ // return dump.replace(/^--.*$/gm, "")
34
+ // .replace(/^SET .*$/gm, "")
35
+ // .replace(/^SELECT pg_catalog\..*$/gm, "")
36
+ // .replace(/\n{2,}/gm, "\n\n")
37
+ // .trim()
38
+ // }).pipe(
39
+ // Effect.mapError((error) => new Migrator.MigrationError({ kind: "Failed", message: error.message }))
40
+ // )
41
+ //
42
+ // const pgDumpSchema = pgDump(["--schema-only"])
43
+ //
44
+ // const pgDumpMigrations = pgDump([
45
+ // "--column-inserts",
46
+ // "--data-only",
47
+ // `--table=${table}`
48
+ // ])
49
+ //
50
+ // const pgDumpAll = Effect.map(
51
+ // Effect.all([pgDumpSchema, pgDumpMigrations], { concurrency: 2 }),
52
+ // ([schema, migrations]) => schema + "\n\n" + migrations
53
+ // )
54
+ //
55
+ // const pgDumpFile = (path: string) =>
56
+ // Effect.gen(function*() {
57
+ // const fs = yield* FileSystem
58
+ // const path_ = yield* Path
59
+ // const dump = yield* pgDumpAll
60
+ // yield* fs.makeDirectory(path_.dirname(path), { recursive: true })
61
+ // yield* fs.writeFileString(path, dump)
62
+ // }).pipe(
63
+ // Effect.mapError((error) => new Migrator.MigrationError({ kind: "Failed", message: error.message }))
64
+ // )
65
+ //
66
+ // return pgDumpFile(path)
67
+ // }
68
+ });
69
+ /**
70
+ * @category layers
71
+ * @since 1.0.0
72
+ */
73
+ export const layer = options => Layer.effectDiscard(run(options));
74
+ //# sourceMappingURL=PgMigrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PgMigrator.js","names":["Layer","Migrator","run","make","layer","options","effectDiscard"],"sources":["../src/PgMigrator.ts"],"sourcesContent":[null],"mappings":"AAIA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,QAAQ,MAAM,8BAA8B;AAIxD;;;AAGA,cAAc,8BAA8B;AAE5C;;;;AAIA,OAAO,MAAMC,GAAG,gBAMZD,QAAQ,CAACE,IAAI,CAAC;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAA,CACD,CAAC;AAEF;;;;AAIA,OAAO,MAAMC,KAAK,GAChBC,OAAoC,IAKjCL,KAAK,CAACM,aAAa,CAACJ,GAAG,CAACG,OAAO,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ /**
5
+ * @since 1.0.0
6
+ */
7
+ export * as PgClient from "./PgClient.ts";
8
+ /**
9
+ * @since 1.0.0
10
+ */
11
+ export * as PgMigrator from "./PgMigrator.ts";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA"}