@effect/sql-pg 0.50.2 → 4.0.0-beta.0
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.
- package/dist/{dts/PgClient.d.ts → PgClient.d.ts} +35 -13
- package/dist/PgClient.d.ts.map +1 -0
- package/dist/{esm/PgClient.js → PgClient.js} +105 -83
- package/dist/PgClient.js.map +1 -0
- package/dist/PgMigrator.d.ts +23 -0
- package/dist/PgMigrator.d.ts.map +1 -0
- package/dist/PgMigrator.js +74 -0
- package/dist/PgMigrator.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/{esm/index.js → index.js} +4 -0
- package/dist/index.js.map +1 -0
- package/package.json +56 -54
- package/src/PgClient.ts +353 -308
- package/src/PgMigrator.ts +63 -74
- package/src/index.ts +8 -2
- package/PgClient/package.json +0 -6
- package/PgMigrator/package.json +0 -6
- package/dist/cjs/PgClient.js +0 -385
- package/dist/cjs/PgClient.js.map +0 -1
- package/dist/cjs/PgMigrator.js +0 -104
- package/dist/cjs/PgMigrator.js.map +0 -1
- package/dist/cjs/index.js +0 -12
- package/dist/cjs/index.js.map +0 -1
- package/dist/dts/PgClient.d.ts.map +0 -1
- package/dist/dts/PgMigrator.d.ts +0 -28
- package/dist/dts/PgMigrator.d.ts.map +0 -1
- package/dist/dts/index.d.ts +0 -9
- package/dist/dts/index.d.ts.map +0 -1
- package/dist/esm/PgClient.js.map +0 -1
- package/dist/esm/PgMigrator.js +0 -68
- package/dist/esm/PgMigrator.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/package.json +0 -4
- package/index/package.json +0 -6
package/src/PgMigrator.ts
CHANGED
|
@@ -1,28 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
-
import * as
|
|
5
|
-
import type { CommandExecutor } from "@effect/platform/CommandExecutor"
|
|
6
|
-
import { FileSystem } from "@effect/platform/FileSystem"
|
|
7
|
-
import { Path } from "@effect/platform/Path"
|
|
8
|
-
import * as Migrator from "@effect/sql/Migrator"
|
|
9
|
-
import type * as Client from "@effect/sql/SqlClient"
|
|
10
|
-
import type { SqlError } from "@effect/sql/SqlError"
|
|
11
|
-
import * as Effect from "effect/Effect"
|
|
12
|
-
import { pipe } from "effect/Function"
|
|
4
|
+
import type * as Effect from "effect/Effect"
|
|
13
5
|
import * as Layer from "effect/Layer"
|
|
14
|
-
import * as
|
|
15
|
-
import
|
|
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"
|
|
16
9
|
|
|
17
10
|
/**
|
|
18
11
|
* @since 1.0.0
|
|
19
12
|
*/
|
|
20
|
-
export * from "
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* @since 1.0.0
|
|
24
|
-
*/
|
|
25
|
-
export * from "@effect/sql/Migrator/FileSystem"
|
|
13
|
+
export * from "effect/unstable/sql/Migrator"
|
|
26
14
|
|
|
27
15
|
/**
|
|
28
16
|
* @category constructor
|
|
@@ -33,63 +21,64 @@ export const run: <R2 = never>(
|
|
|
33
21
|
) => Effect.Effect<
|
|
34
22
|
ReadonlyArray<readonly [id: number, name: string]>,
|
|
35
23
|
Migrator.MigrationError | SqlError,
|
|
36
|
-
|
|
24
|
+
Client.SqlClient | R2
|
|
37
25
|
> = Migrator.make({
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
26
|
+
// TODO: Wait for Command module
|
|
27
|
+
// dumpSchema(path, table) {
|
|
28
|
+
// const pgDump = (args: Array<string>) =>
|
|
29
|
+
// Effect.gen(function*() {
|
|
30
|
+
// const sql = yield* PgClient
|
|
31
|
+
// const dump = yield* pipe(
|
|
32
|
+
// Command.make("pg_dump", ...args, "--no-owner", "--no-privileges"),
|
|
33
|
+
// Command.env({
|
|
34
|
+
// PATH: (globalThis as any).process?.env.PATH,
|
|
35
|
+
// PGHOST: sql.config.host,
|
|
36
|
+
// PGPORT: sql.config.port?.toString(),
|
|
37
|
+
// PGUSER: sql.config.username,
|
|
38
|
+
// PGPASSWORD: sql.config.password
|
|
39
|
+
// ? Redacted.value(sql.config.password)
|
|
40
|
+
// : undefined,
|
|
41
|
+
// PGDATABASE: sql.config.database,
|
|
42
|
+
// PGSSLMODE: sql.config.ssl ? "require" : "prefer"
|
|
43
|
+
// }),
|
|
44
|
+
// Command.string
|
|
45
|
+
// )
|
|
46
|
+
//
|
|
47
|
+
// return dump.replace(/^--.*$/gm, "")
|
|
48
|
+
// .replace(/^SET .*$/gm, "")
|
|
49
|
+
// .replace(/^SELECT pg_catalog\..*$/gm, "")
|
|
50
|
+
// .replace(/\n{2,}/gm, "\n\n")
|
|
51
|
+
// .trim()
|
|
52
|
+
// }).pipe(
|
|
53
|
+
// Effect.mapError((error) => new Migrator.MigrationError({ kind: "Failed", message: error.message }))
|
|
54
|
+
// )
|
|
55
|
+
//
|
|
56
|
+
// const pgDumpSchema = pgDump(["--schema-only"])
|
|
57
|
+
//
|
|
58
|
+
// const pgDumpMigrations = pgDump([
|
|
59
|
+
// "--column-inserts",
|
|
60
|
+
// "--data-only",
|
|
61
|
+
// `--table=${table}`
|
|
62
|
+
// ])
|
|
63
|
+
//
|
|
64
|
+
// const pgDumpAll = Effect.map(
|
|
65
|
+
// Effect.all([pgDumpSchema, pgDumpMigrations], { concurrency: 2 }),
|
|
66
|
+
// ([schema, migrations]) => schema + "\n\n" + migrations
|
|
67
|
+
// )
|
|
68
|
+
//
|
|
69
|
+
// const pgDumpFile = (path: string) =>
|
|
70
|
+
// Effect.gen(function*() {
|
|
71
|
+
// const fs = yield* FileSystem
|
|
72
|
+
// const path_ = yield* Path
|
|
73
|
+
// const dump = yield* pgDumpAll
|
|
74
|
+
// yield* fs.makeDirectory(path_.dirname(path), { recursive: true })
|
|
75
|
+
// yield* fs.writeFileString(path, dump)
|
|
76
|
+
// }).pipe(
|
|
77
|
+
// Effect.mapError((error) => new Migrator.MigrationError({ kind: "Failed", message: error.message }))
|
|
78
|
+
// )
|
|
79
|
+
//
|
|
80
|
+
// return pgDumpFile(path)
|
|
81
|
+
// }
|
|
93
82
|
})
|
|
94
83
|
|
|
95
84
|
/**
|
|
@@ -101,5 +90,5 @@ export const layer = <R>(
|
|
|
101
90
|
): Layer.Layer<
|
|
102
91
|
never,
|
|
103
92
|
Migrator.MigrationError | SqlError,
|
|
104
|
-
|
|
93
|
+
Client.SqlClient | R
|
|
105
94
|
> => Layer.effectDiscard(run(options))
|
package/src/index.ts
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
// @barrel: Auto-generated exports. Do not edit manually.
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @since 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
export * as PgClient from "./PgClient.ts"
|
|
5
11
|
|
|
6
12
|
/**
|
|
7
13
|
* @since 1.0.0
|
|
8
14
|
*/
|
|
9
|
-
export * as PgMigrator from "./PgMigrator.
|
|
15
|
+
export * as PgMigrator from "./PgMigrator.ts"
|
package/PgClient/package.json
DELETED
package/PgMigrator/package.json
DELETED
package/dist/cjs/PgClient.js
DELETED
|
@@ -1,385 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.makeCompiler = exports.make = exports.layerConfig = exports.layer = exports.TypeId = exports.PgClient = void 0;
|
|
7
|
-
var Reactivity = _interopRequireWildcard(require("@effect/experimental/Reactivity"));
|
|
8
|
-
var Client = _interopRequireWildcard(require("@effect/sql/SqlClient"));
|
|
9
|
-
var _SqlError = require("@effect/sql/SqlError");
|
|
10
|
-
var Statement = _interopRequireWildcard(require("@effect/sql/Statement"));
|
|
11
|
-
var Arr = _interopRequireWildcard(require("effect/Array"));
|
|
12
|
-
var Chunk = _interopRequireWildcard(require("effect/Chunk"));
|
|
13
|
-
var Config = _interopRequireWildcard(require("effect/Config"));
|
|
14
|
-
var Context = _interopRequireWildcard(require("effect/Context"));
|
|
15
|
-
var Duration = _interopRequireWildcard(require("effect/Duration"));
|
|
16
|
-
var Effect = _interopRequireWildcard(require("effect/Effect"));
|
|
17
|
-
var Fiber = _interopRequireWildcard(require("effect/Fiber"));
|
|
18
|
-
var Layer = _interopRequireWildcard(require("effect/Layer"));
|
|
19
|
-
var Number = _interopRequireWildcard(require("effect/Number"));
|
|
20
|
-
var Option = _interopRequireWildcard(require("effect/Option"));
|
|
21
|
-
var RcRef = _interopRequireWildcard(require("effect/RcRef"));
|
|
22
|
-
var Redacted = _interopRequireWildcard(require("effect/Redacted"));
|
|
23
|
-
var Scope = _interopRequireWildcard(require("effect/Scope"));
|
|
24
|
-
var Stream = _interopRequireWildcard(require("effect/Stream"));
|
|
25
|
-
var Pg = _interopRequireWildcard(require("pg"));
|
|
26
|
-
var PgConnString = _interopRequireWildcard(require("pg-connection-string"));
|
|
27
|
-
var _pgCursor = _interopRequireDefault(require("pg-cursor"));
|
|
28
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
29
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
30
|
-
/**
|
|
31
|
-
* @since 1.0.0
|
|
32
|
-
*/
|
|
33
|
-
|
|
34
|
-
const ATTR_DB_SYSTEM_NAME = "db.system.name";
|
|
35
|
-
const ATTR_DB_NAMESPACE = "db.namespace";
|
|
36
|
-
const ATTR_SERVER_ADDRESS = "server.address";
|
|
37
|
-
const ATTR_SERVER_PORT = "server.port";
|
|
38
|
-
/**
|
|
39
|
-
* @category type ids
|
|
40
|
-
* @since 1.0.0
|
|
41
|
-
*/
|
|
42
|
-
const TypeId = exports.TypeId = "~@effect/sql-pg/PgClient";
|
|
43
|
-
/**
|
|
44
|
-
* @category tags
|
|
45
|
-
* @since 1.0.0
|
|
46
|
-
*/
|
|
47
|
-
const PgClient = exports.PgClient = /*#__PURE__*/Context.GenericTag("@effect/sql-pg/PgClient");
|
|
48
|
-
/**
|
|
49
|
-
* @category constructors
|
|
50
|
-
* @since 1.0.0
|
|
51
|
-
*/
|
|
52
|
-
const make = options => Effect.gen(function* () {
|
|
53
|
-
const compiler = makeCompiler(options.transformQueryNames, options.transformJson);
|
|
54
|
-
const transformRows = options.transformResultNames ? Statement.defaultTransforms(options.transformResultNames, options.transformJson).array : undefined;
|
|
55
|
-
const pool = new Pg.Pool({
|
|
56
|
-
connectionString: options.url ? Redacted.value(options.url) : undefined,
|
|
57
|
-
user: options.username,
|
|
58
|
-
host: options.host,
|
|
59
|
-
database: options.database,
|
|
60
|
-
password: options.password ? Redacted.value(options.password) : undefined,
|
|
61
|
-
ssl: options.ssl,
|
|
62
|
-
port: options.port,
|
|
63
|
-
stream: options.stream,
|
|
64
|
-
connectionTimeoutMillis: options.connectTimeout ? Duration.toMillis(options.connectTimeout) : undefined,
|
|
65
|
-
idleTimeoutMillis: options.idleTimeout ? Duration.toMillis(options.idleTimeout) : undefined,
|
|
66
|
-
max: options.maxConnections,
|
|
67
|
-
min: options.minConnections,
|
|
68
|
-
maxLifetimeSeconds: options.connectionTTL ? Duration.toSeconds(options.connectionTTL) : undefined,
|
|
69
|
-
application_name: options.applicationName ?? "@effect/sql-pg",
|
|
70
|
-
types: options.types
|
|
71
|
-
});
|
|
72
|
-
pool.on("error", _err => {});
|
|
73
|
-
yield* Effect.acquireRelease(Effect.tryPromise({
|
|
74
|
-
try: () => pool.query("SELECT 1"),
|
|
75
|
-
catch: cause => new _SqlError.SqlError({
|
|
76
|
-
cause,
|
|
77
|
-
message: "PgClient: Failed to connect"
|
|
78
|
-
})
|
|
79
|
-
}), () => Effect.promise(() => pool.end()).pipe(Effect.interruptible, Effect.timeoutOption(1000))).pipe(Effect.timeoutFail({
|
|
80
|
-
duration: options.connectTimeout ?? Duration.seconds(5),
|
|
81
|
-
onTimeout: () => new _SqlError.SqlError({
|
|
82
|
-
cause: new Error("Connection timed out"),
|
|
83
|
-
message: "PgClient: Connection timed out"
|
|
84
|
-
})
|
|
85
|
-
}));
|
|
86
|
-
class ConnectionImpl {
|
|
87
|
-
pg;
|
|
88
|
-
constructor(pg) {
|
|
89
|
-
this.pg = pg;
|
|
90
|
-
}
|
|
91
|
-
runWithClient(f) {
|
|
92
|
-
if (this.pg !== undefined) {
|
|
93
|
-
return Effect.async(resume => {
|
|
94
|
-
f(this.pg, resume);
|
|
95
|
-
return makeCancel(pool, this.pg);
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
return Effect.async(resume => {
|
|
99
|
-
let done = false;
|
|
100
|
-
let cancel = undefined;
|
|
101
|
-
let client = undefined;
|
|
102
|
-
function onError(cause) {
|
|
103
|
-
cleanup(cause);
|
|
104
|
-
resume(Effect.fail(new _SqlError.SqlError({
|
|
105
|
-
cause,
|
|
106
|
-
message: "Connection error"
|
|
107
|
-
})));
|
|
108
|
-
}
|
|
109
|
-
function cleanup(cause) {
|
|
110
|
-
if (!done) client?.release(cause);
|
|
111
|
-
done = true;
|
|
112
|
-
client?.off("error", onError);
|
|
113
|
-
}
|
|
114
|
-
pool.connect((cause, client_) => {
|
|
115
|
-
if (cause) {
|
|
116
|
-
return resume(Effect.fail(new _SqlError.SqlError({
|
|
117
|
-
cause,
|
|
118
|
-
message: "Failed to acquire connection"
|
|
119
|
-
})));
|
|
120
|
-
} else if (!client_) {
|
|
121
|
-
return resume(Effect.fail(new _SqlError.SqlError({
|
|
122
|
-
message: "Failed to acquire connection",
|
|
123
|
-
cause: new Error("No client returned")
|
|
124
|
-
})));
|
|
125
|
-
} else if (done) {
|
|
126
|
-
client_.release();
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
client = client_;
|
|
130
|
-
client.once("error", onError);
|
|
131
|
-
cancel = makeCancel(pool, client);
|
|
132
|
-
f(client, eff => {
|
|
133
|
-
cleanup();
|
|
134
|
-
resume(eff);
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
return Effect.suspend(() => {
|
|
138
|
-
if (!cancel) {
|
|
139
|
-
cleanup();
|
|
140
|
-
return Effect.void;
|
|
141
|
-
}
|
|
142
|
-
return Effect.ensuring(cancel, Effect.sync(cleanup));
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
run(query, params) {
|
|
147
|
-
return this.runWithClient((client, resume) => {
|
|
148
|
-
client.query(query, params, (err, result) => {
|
|
149
|
-
if (err) {
|
|
150
|
-
resume(Effect.fail(new _SqlError.SqlError({
|
|
151
|
-
cause: err,
|
|
152
|
-
message: "Failed to execute statement"
|
|
153
|
-
})));
|
|
154
|
-
} else {
|
|
155
|
-
// Multi-statement queries return an array of results
|
|
156
|
-
resume(Effect.succeed(Array.isArray(result) ? result.map(r => r.rows ?? []) : result.rows ?? []));
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
execute(sql, params, transformRows) {
|
|
162
|
-
return transformRows ? Effect.map(this.run(sql, params), transformRows) : this.run(sql, params);
|
|
163
|
-
}
|
|
164
|
-
executeRaw(sql, params) {
|
|
165
|
-
return this.runWithClient((client, resume) => {
|
|
166
|
-
client.query(sql, params, (err, result) => {
|
|
167
|
-
if (err) {
|
|
168
|
-
resume(Effect.fail(new _SqlError.SqlError({
|
|
169
|
-
cause: err,
|
|
170
|
-
message: "Failed to execute statement"
|
|
171
|
-
})));
|
|
172
|
-
} else {
|
|
173
|
-
resume(Effect.succeed(result));
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
executeWithoutTransform(sql, params) {
|
|
179
|
-
return this.run(sql, params);
|
|
180
|
-
}
|
|
181
|
-
executeValues(sql, params) {
|
|
182
|
-
return this.runWithClient((client, resume) => {
|
|
183
|
-
client.query({
|
|
184
|
-
text: sql,
|
|
185
|
-
rowMode: "array",
|
|
186
|
-
values: params
|
|
187
|
-
}, (err, result) => {
|
|
188
|
-
if (err) {
|
|
189
|
-
resume(Effect.fail(new _SqlError.SqlError({
|
|
190
|
-
cause: err,
|
|
191
|
-
message: "Failed to execute statement"
|
|
192
|
-
})));
|
|
193
|
-
} else {
|
|
194
|
-
resume(Effect.succeed(result.rows));
|
|
195
|
-
}
|
|
196
|
-
});
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
executeUnprepared(sql, params, transformRows) {
|
|
200
|
-
return this.execute(sql, params, transformRows);
|
|
201
|
-
}
|
|
202
|
-
executeStream(sql, params, transformRows) {
|
|
203
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
204
|
-
const self = this;
|
|
205
|
-
return Effect.gen(function* () {
|
|
206
|
-
const scope = yield* Effect.scope;
|
|
207
|
-
const client = self.pg ?? (yield* reserveRaw);
|
|
208
|
-
yield* Scope.addFinalizer(scope, Effect.promise(() => cursor.close()));
|
|
209
|
-
const cursor = client.query(new _pgCursor.default(sql, params));
|
|
210
|
-
const pull = Effect.async(resume => {
|
|
211
|
-
cursor.read(128, (err, rows) => {
|
|
212
|
-
if (err) {
|
|
213
|
-
resume(Effect.fail(Option.some(new _SqlError.SqlError({
|
|
214
|
-
cause: err,
|
|
215
|
-
message: "Failed to execute statement"
|
|
216
|
-
}))));
|
|
217
|
-
} else if (Arr.isNonEmptyArray(rows)) {
|
|
218
|
-
resume(Effect.succeed(Chunk.unsafeFromArray(transformRows ? transformRows(rows) : rows)));
|
|
219
|
-
} else {
|
|
220
|
-
resume(Effect.fail(Option.none()));
|
|
221
|
-
}
|
|
222
|
-
});
|
|
223
|
-
});
|
|
224
|
-
return Stream.repeatEffectChunkOption(pull);
|
|
225
|
-
}).pipe(Stream.unwrapScoped);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
const reserveRaw = Effect.async(resume => {
|
|
229
|
-
const fiber = Option.getOrThrow(Fiber.getCurrentFiber());
|
|
230
|
-
const scope = Context.unsafeGet(fiber.currentContext, Scope.Scope);
|
|
231
|
-
let cause = undefined;
|
|
232
|
-
function onError(cause_) {
|
|
233
|
-
cause = cause_;
|
|
234
|
-
}
|
|
235
|
-
pool.connect((err, client, release) => {
|
|
236
|
-
if (err) {
|
|
237
|
-
resume(Effect.fail(new _SqlError.SqlError({
|
|
238
|
-
cause: err,
|
|
239
|
-
message: "Failed to acquire connection for transaction"
|
|
240
|
-
})));
|
|
241
|
-
return;
|
|
242
|
-
} else if (!client) {
|
|
243
|
-
resume(Effect.fail(new _SqlError.SqlError({
|
|
244
|
-
message: "Failed to acquire connection for transaction",
|
|
245
|
-
cause: new Error("No client returned")
|
|
246
|
-
})));
|
|
247
|
-
return;
|
|
248
|
-
}
|
|
249
|
-
// Else we know we have client defined, so we can proceed with the connection
|
|
250
|
-
client.on("error", onError);
|
|
251
|
-
resume(Effect.as(Scope.addFinalizer(scope, Effect.sync(() => {
|
|
252
|
-
client.off("error", onError);
|
|
253
|
-
release(cause);
|
|
254
|
-
})), client));
|
|
255
|
-
});
|
|
256
|
-
});
|
|
257
|
-
const reserve = Effect.map(reserveRaw, client => new ConnectionImpl(client));
|
|
258
|
-
const listenClient = yield* RcRef.make({
|
|
259
|
-
acquire: reserveRaw
|
|
260
|
-
});
|
|
261
|
-
let config = options;
|
|
262
|
-
if (pool.options.connectionString) {
|
|
263
|
-
try {
|
|
264
|
-
const parsed = PgConnString.parse(pool.options.connectionString);
|
|
265
|
-
config = {
|
|
266
|
-
...config,
|
|
267
|
-
host: config.host ?? parsed.host ?? undefined,
|
|
268
|
-
port: config.port ?? (parsed.port ? Option.getOrUndefined(Number.parse(parsed.port)) : undefined),
|
|
269
|
-
username: config.username ?? parsed.user ?? undefined,
|
|
270
|
-
password: config.password ?? (parsed.password ? Redacted.make(parsed.password) : undefined),
|
|
271
|
-
database: config.database ?? parsed.database ?? undefined
|
|
272
|
-
};
|
|
273
|
-
} catch {
|
|
274
|
-
//
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
return Object.assign(yield* Client.make({
|
|
278
|
-
acquirer: Effect.succeed(new ConnectionImpl()),
|
|
279
|
-
transactionAcquirer: reserve,
|
|
280
|
-
compiler,
|
|
281
|
-
spanAttributes: [...(options.spanAttributes ? Object.entries(options.spanAttributes) : []), [ATTR_DB_SYSTEM_NAME, "postgresql"], [ATTR_DB_NAMESPACE, options.database ?? options.username ?? "postgres"], [ATTR_SERVER_ADDRESS, options.host ?? "localhost"], [ATTR_SERVER_PORT, options.port ?? 5432]],
|
|
282
|
-
transformRows
|
|
283
|
-
}), {
|
|
284
|
-
[TypeId]: TypeId,
|
|
285
|
-
config,
|
|
286
|
-
json: _ => PgJson(_),
|
|
287
|
-
listen: channel => Stream.asyncPush(Effect.fnUntraced(function* (emit) {
|
|
288
|
-
const client = yield* RcRef.get(listenClient);
|
|
289
|
-
function onNotification(msg) {
|
|
290
|
-
if (msg.channel === channel && msg.payload) {
|
|
291
|
-
emit.single(msg.payload);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
yield* Effect.addFinalizer(() => Effect.promise(() => {
|
|
295
|
-
client.off("notification", onNotification);
|
|
296
|
-
return client.query(`UNLISTEN ${Pg.escapeIdentifier(channel)}`);
|
|
297
|
-
}));
|
|
298
|
-
yield* Effect.tryPromise({
|
|
299
|
-
try: () => client.query(`LISTEN ${Pg.escapeIdentifier(channel)}`),
|
|
300
|
-
catch: cause => new _SqlError.SqlError({
|
|
301
|
-
cause,
|
|
302
|
-
message: "Failed to listen"
|
|
303
|
-
})
|
|
304
|
-
});
|
|
305
|
-
client.on("notification", onNotification);
|
|
306
|
-
})),
|
|
307
|
-
notify: (channel, payload) => Effect.async(resume => {
|
|
308
|
-
pool.query(`NOTIFY ${Pg.escapeIdentifier(channel)}, $1`, [payload], err => {
|
|
309
|
-
if (err) {
|
|
310
|
-
resume(Effect.fail(new _SqlError.SqlError({
|
|
311
|
-
cause: err,
|
|
312
|
-
message: "Failed to notify"
|
|
313
|
-
})));
|
|
314
|
-
} else {
|
|
315
|
-
resume(Effect.void);
|
|
316
|
-
}
|
|
317
|
-
});
|
|
318
|
-
})
|
|
319
|
-
});
|
|
320
|
-
});
|
|
321
|
-
exports.make = make;
|
|
322
|
-
const cancelEffects = /*#__PURE__*/new WeakMap();
|
|
323
|
-
const makeCancel = (pool, client) => {
|
|
324
|
-
if (cancelEffects.has(client)) {
|
|
325
|
-
return cancelEffects.get(client);
|
|
326
|
-
}
|
|
327
|
-
const processId = client.processID;
|
|
328
|
-
const eff = processId !== undefined
|
|
329
|
-
// query cancelation is best-effort, so we don't fail if it doesn't work
|
|
330
|
-
? Effect.async(resume => {
|
|
331
|
-
if (pool.ending) return resume(Effect.void);
|
|
332
|
-
pool.query(`SELECT pg_cancel_backend(${processId})`, () => {
|
|
333
|
-
resume(Effect.void);
|
|
334
|
-
});
|
|
335
|
-
}).pipe(Effect.interruptible, Effect.timeoutOption(5000)) : undefined;
|
|
336
|
-
cancelEffects.set(client, eff);
|
|
337
|
-
return eff;
|
|
338
|
-
};
|
|
339
|
-
/**
|
|
340
|
-
* @category layers
|
|
341
|
-
* @since 1.0.0
|
|
342
|
-
*/
|
|
343
|
-
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));
|
|
344
|
-
/**
|
|
345
|
-
* @category layers
|
|
346
|
-
* @since 1.0.0
|
|
347
|
-
*/
|
|
348
|
-
exports.layerConfig = layerConfig;
|
|
349
|
-
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));
|
|
350
|
-
/**
|
|
351
|
-
* @category constructor
|
|
352
|
-
* @since 1.0.0
|
|
353
|
-
*/
|
|
354
|
-
exports.layer = layer;
|
|
355
|
-
const makeCompiler = (transform, transformJson = true) => {
|
|
356
|
-
const transformValue = transformJson && transform ? Statement.defaultTransforms(transform).value : undefined;
|
|
357
|
-
return Statement.makeCompiler({
|
|
358
|
-
dialect: "pg",
|
|
359
|
-
placeholder(_) {
|
|
360
|
-
return `$${_}`;
|
|
361
|
-
},
|
|
362
|
-
onIdentifier: transform ? function (value, withoutTransform) {
|
|
363
|
-
return withoutTransform ? escape(value) : escape(transform(value));
|
|
364
|
-
} : escape,
|
|
365
|
-
onRecordUpdate(placeholders, valueAlias, valueColumns, values, returning) {
|
|
366
|
-
return [`(values ${placeholders}) AS ${valueAlias}${valueColumns}${returning ? ` RETURNING ${returning[0]}` : ""}`, returning ? values.flat().concat(returning[1]) : values.flat()];
|
|
367
|
-
},
|
|
368
|
-
onCustom(type, placeholder, withoutTransform) {
|
|
369
|
-
switch (type.kind) {
|
|
370
|
-
case "PgJson":
|
|
371
|
-
{
|
|
372
|
-
return [placeholder(undefined), [withoutTransform || transformValue === undefined ? type.i0 : transformValue(type.i0)]];
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
});
|
|
377
|
-
};
|
|
378
|
-
exports.makeCompiler = makeCompiler;
|
|
379
|
-
const escape = /*#__PURE__*/Statement.defaultEscape("\"");
|
|
380
|
-
/**
|
|
381
|
-
* @category custom types
|
|
382
|
-
* @since 1.0.0
|
|
383
|
-
*/
|
|
384
|
-
const PgJson = /*#__PURE__*/Statement.custom("PgJson");
|
|
385
|
-
//# sourceMappingURL=PgClient.js.map
|
package/dist/cjs/PgClient.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PgClient.js","names":["Reactivity","_interopRequireWildcard","require","Client","_SqlError","Statement","Arr","Chunk","Config","Context","Duration","Effect","Fiber","Layer","Number","Option","RcRef","Redacted","Scope","Stream","Pg","PgConnString","_pgCursor","_interopRequireDefault","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ATTR_DB_SYSTEM_NAME","ATTR_DB_NAMESPACE","ATTR_SERVER_ADDRESS","ATTR_SERVER_PORT","TypeId","exports","PgClient","GenericTag","make","options","gen","compiler","makeCompiler","transformQueryNames","transformJson","transformRows","transformResultNames","defaultTransforms","array","undefined","pool","Pool","connectionString","url","value","user","username","host","database","password","ssl","port","stream","connectionTimeoutMillis","connectTimeout","toMillis","idleTimeoutMillis","idleTimeout","max","maxConnections","min","minConnections","maxLifetimeSeconds","connectionTTL","toSeconds","application_name","applicationName","types","on","_err","acquireRelease","tryPromise","try","query","catch","cause","SqlError","message","promise","end","pipe","interruptible","timeoutOption","timeoutFail","duration","seconds","onTimeout","Error","ConnectionImpl","pg","constructor","runWithClient","async","resume","makeCancel","done","cancel","client","onError","cleanup","fail","release","off","connect","client_","once","eff","suspend","void","ensuring","sync","run","params","err","result","succeed","Array","isArray","map","rows","execute","sql","executeRaw","executeWithoutTransform","executeValues","text","rowMode","values","executeUnprepared","executeStream","self","scope","reserveRaw","addFinalizer","cursor","close","Cursor","pull","read","some","isNonEmptyArray","unsafeFromArray","none","repeatEffectChunkOption","unwrapScoped","fiber","getOrThrow","getCurrentFiber","unsafeGet","currentContext","cause_","as","reserve","listenClient","acquire","config","parsed","parse","getOrUndefined","assign","acquirer","transactionAcquirer","spanAttributes","entries","json","_","PgJson","listen","channel","asyncPush","fnUntraced","emit","onNotification","msg","payload","single","escapeIdentifier","notify","cancelEffects","processId","processID","ending","layerConfig","scopedContext","unwrap","flatMap","add","SqlClient","provide","layer","transform","transformValue","dialect","placeholder","onIdentifier","withoutTransform","escape","onRecordUpdate","placeholders","valueAlias","valueColumns","returning","flat","concat","onCustom","type","kind","i0","defaultEscape","custom"],"sources":["../../src/PgClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|