@effect/sql-pg 0.0.0-snapshot-189d4cae80e186661241002ad9d729628096520f
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/Client/package.json +6 -0
- package/LICENSE +21 -0
- package/Migrator/package.json +6 -0
- package/README.md +5 -0
- package/dist/cjs/Client.js +196 -0
- package/dist/cjs/Client.js.map +1 -0
- package/dist/cjs/Migrator.js +125 -0
- package/dist/cjs/Migrator.js.map +1 -0
- package/dist/cjs/index.js +44 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/dts/Client.d.ts +96 -0
- package/dist/dts/Client.d.ts.map +1 -0
- package/dist/dts/Migrator.d.ts +23 -0
- package/dist/dts/Migrator.d.ts.map +1 -0
- package/dist/dts/index.d.ts +28 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/esm/Client.js +156 -0
- package/dist/esm/Client.js.map +1 -0
- package/dist/esm/Migrator.js +77 -0
- package/dist/esm/Migrator.js.map +1 -0
- package/dist/esm/index.js +28 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/package.json +51 -0
- package/src/Client.ts +290 -0
- package/src/Migrator.ts +113 -0
- package/src/index.ts +33 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023-present The Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.makeCompiler = exports.make = exports.layer = exports.PgClient = void 0;
|
|
7
|
+
var Client = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/sql/Client"));
|
|
8
|
+
var _Error = /*#__PURE__*/require("@effect/sql/Error");
|
|
9
|
+
var Statement = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/sql/Statement"));
|
|
10
|
+
var Chunk = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Chunk"));
|
|
11
|
+
var Config = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Config"));
|
|
12
|
+
var Context = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Context"));
|
|
13
|
+
var Duration = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Duration"));
|
|
14
|
+
var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Effect"));
|
|
15
|
+
var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Layer"));
|
|
16
|
+
var Secret = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Secret"));
|
|
17
|
+
var Stream = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Stream"));
|
|
18
|
+
var _postgres = /*#__PURE__*/_interopRequireDefault( /*#__PURE__*/require("postgres"));
|
|
19
|
+
function _interopRequireDefault(obj) {
|
|
20
|
+
return obj && obj.__esModule ? obj : {
|
|
21
|
+
default: obj
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function _getRequireWildcardCache(e) {
|
|
25
|
+
if ("function" != typeof WeakMap) return null;
|
|
26
|
+
var r = new WeakMap(),
|
|
27
|
+
t = new WeakMap();
|
|
28
|
+
return (_getRequireWildcardCache = function (e) {
|
|
29
|
+
return e ? t : r;
|
|
30
|
+
})(e);
|
|
31
|
+
}
|
|
32
|
+
function _interopRequireWildcard(e, r) {
|
|
33
|
+
if (!r && e && e.__esModule) return e;
|
|
34
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return {
|
|
35
|
+
default: e
|
|
36
|
+
};
|
|
37
|
+
var t = _getRequireWildcardCache(r);
|
|
38
|
+
if (t && t.has(e)) return t.get(e);
|
|
39
|
+
var n = {
|
|
40
|
+
__proto__: null
|
|
41
|
+
},
|
|
42
|
+
a = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
43
|
+
for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
|
|
44
|
+
var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
|
|
45
|
+
i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
|
|
46
|
+
}
|
|
47
|
+
return n.default = e, t && t.set(e, n), n;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* @since 1.0.0
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @category tags
|
|
55
|
+
* @since 1.0.0
|
|
56
|
+
*/
|
|
57
|
+
const PgClient = exports.PgClient = /*#__PURE__*/Context.GenericTag("@effect/sql-pg/PgClient");
|
|
58
|
+
const escape = /*#__PURE__*/Statement.defaultEscape("\"");
|
|
59
|
+
/**
|
|
60
|
+
* @category constructors
|
|
61
|
+
* @since 1.0.0
|
|
62
|
+
*/
|
|
63
|
+
const make = options => Effect.gen(function* (_) {
|
|
64
|
+
const compiler = makeCompiler(options.transformQueryNames, options.transformJson);
|
|
65
|
+
const transformRows = Client.defaultTransforms(options.transformResultNames, options.transformJson).array;
|
|
66
|
+
const opts = {
|
|
67
|
+
max: options.maxConnections ?? 10,
|
|
68
|
+
max_lifetime: options.connectionTTL ? Math.round(Duration.toMillis(Duration.decode(options.connectionTTL)) / 1000) : undefined,
|
|
69
|
+
idle_timeout: options.idleTimeout ? Math.round(Duration.toMillis(Duration.decode(options.idleTimeout)) / 1000) : undefined,
|
|
70
|
+
connect_timeout: options.connectTimeout ? Math.round(Duration.toMillis(Duration.decode(options.connectTimeout)) / 1000) : undefined,
|
|
71
|
+
host: options.host,
|
|
72
|
+
port: options.port,
|
|
73
|
+
ssl: options.ssl,
|
|
74
|
+
path: options.path,
|
|
75
|
+
database: options.database,
|
|
76
|
+
username: options.username,
|
|
77
|
+
password: options.password ? Secret.value(options.password) : undefined,
|
|
78
|
+
fetch_types: options.fetchTypes ?? true,
|
|
79
|
+
debug: options.debug
|
|
80
|
+
};
|
|
81
|
+
const client = options.url ? (0, _postgres.default)(Secret.value(options.url), opts) : (0, _postgres.default)(opts);
|
|
82
|
+
yield* _(Effect.addFinalizer(() => Effect.promise(() => client.end())));
|
|
83
|
+
class ConnectionImpl {
|
|
84
|
+
pg;
|
|
85
|
+
constructor(pg) {
|
|
86
|
+
this.pg = pg;
|
|
87
|
+
}
|
|
88
|
+
run(query) {
|
|
89
|
+
return Effect.async(resume => {
|
|
90
|
+
query.then(_ => resume(Effect.succeed(_)), error => resume(new _Error.SqlError({
|
|
91
|
+
error
|
|
92
|
+
})));
|
|
93
|
+
return Effect.sync(() => query.cancel());
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
runTransform(query) {
|
|
97
|
+
return options.transformResultNames ? Effect.map(this.run(query), transformRows) : this.run(query);
|
|
98
|
+
}
|
|
99
|
+
execute(sql, params) {
|
|
100
|
+
return this.runTransform(this.pg.unsafe(sql, params));
|
|
101
|
+
}
|
|
102
|
+
executeWithoutTransform(sql, params) {
|
|
103
|
+
return this.run(this.pg.unsafe(sql, params));
|
|
104
|
+
}
|
|
105
|
+
executeValues(sql, params) {
|
|
106
|
+
return this.run(this.pg.unsafe(sql, params).values());
|
|
107
|
+
}
|
|
108
|
+
executeRaw(sql, params) {
|
|
109
|
+
return this.runTransform(this.pg.unsafe(sql, params));
|
|
110
|
+
}
|
|
111
|
+
executeStream(sql, params) {
|
|
112
|
+
return Stream.mapChunks(Stream.fromAsyncIterable(this.pg.unsafe(sql, params).cursor(16), error => new _Error.SqlError({
|
|
113
|
+
error
|
|
114
|
+
})), Chunk.flatMap(rows => Chunk.unsafeFromArray(options.transformResultNames ? transformRows(rows) : rows)));
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return Object.assign(Client.make({
|
|
118
|
+
acquirer: Effect.succeed(new ConnectionImpl(client)),
|
|
119
|
+
transactionAcquirer: Effect.map(Effect.acquireRelease(Effect.tryPromise({
|
|
120
|
+
try: () => client.reserve(),
|
|
121
|
+
catch: error => new _Error.SqlError({
|
|
122
|
+
error
|
|
123
|
+
})
|
|
124
|
+
}), pg => Effect.sync(() => pg.release())), _ => new ConnectionImpl(_)),
|
|
125
|
+
compiler
|
|
126
|
+
}), {
|
|
127
|
+
config: options,
|
|
128
|
+
json: _ => PgJson(_),
|
|
129
|
+
array: _ => PgArray(_)
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
/**
|
|
133
|
+
* @category constructor
|
|
134
|
+
* @since 1.0.0
|
|
135
|
+
*/
|
|
136
|
+
exports.make = make;
|
|
137
|
+
const layer = config => Layer.scoped(PgClient, Effect.flatMap(Config.unwrap(config), make));
|
|
138
|
+
/**
|
|
139
|
+
* @category constructor
|
|
140
|
+
* @since 1.0.0
|
|
141
|
+
*/
|
|
142
|
+
exports.layer = layer;
|
|
143
|
+
const makeCompiler = (transform, transformJson = true) => {
|
|
144
|
+
const pg = (0, _postgres.default)({
|
|
145
|
+
max: 0
|
|
146
|
+
});
|
|
147
|
+
const transformValue = transformJson && transform ? Client.defaultTransforms(transform).value : undefined;
|
|
148
|
+
return Statement.makeCompiler({
|
|
149
|
+
placeholder: _ => `$${_}`,
|
|
150
|
+
onIdentifier: transform ? _ => escape(transform(_)) : escape,
|
|
151
|
+
onRecordUpdate: (placeholders, valueAlias, valueColumns, values) => [`(values ${placeholders}) AS ${valueAlias}${valueColumns}`, values.flat()],
|
|
152
|
+
onCustom: (type, placeholder) => {
|
|
153
|
+
switch (type.kind) {
|
|
154
|
+
case "PgJson":
|
|
155
|
+
{
|
|
156
|
+
return [placeholder(), [pg.json(transformValue !== undefined ? transformValue(type.i0) : type.i0)]];
|
|
157
|
+
}
|
|
158
|
+
case "PgArray":
|
|
159
|
+
{
|
|
160
|
+
const param = pg.array(type.i0);
|
|
161
|
+
const first = type.i0[0];
|
|
162
|
+
switch (typeof first) {
|
|
163
|
+
case "boolean":
|
|
164
|
+
{
|
|
165
|
+
param.type = 1000;
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
case "number":
|
|
169
|
+
{
|
|
170
|
+
param.type = 1022;
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
default:
|
|
174
|
+
{
|
|
175
|
+
param.type = 1009;
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return [placeholder(), [param]];
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
};
|
|
185
|
+
/**
|
|
186
|
+
* @category custom types
|
|
187
|
+
* @since 1.0.0
|
|
188
|
+
*/
|
|
189
|
+
exports.makeCompiler = makeCompiler;
|
|
190
|
+
const PgJson = /*#__PURE__*/Statement.custom("PgJson");
|
|
191
|
+
/**
|
|
192
|
+
* @category custom types
|
|
193
|
+
* @since 1.0.0
|
|
194
|
+
*/
|
|
195
|
+
const PgArray = /*#__PURE__*/Statement.custom("PgArray");
|
|
196
|
+
//# sourceMappingURL=Client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Client.js","names":["Client","_interopRequireWildcard","require","_Error","Statement","Chunk","Config","Context","Duration","Effect","Layer","Secret","Stream","_postgres","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","PgClient","exports","GenericTag","escape","defaultEscape","make","options","gen","_","compiler","makeCompiler","transformQueryNames","transformJson","transformRows","defaultTransforms","transformResultNames","array","opts","max","maxConnections","max_lifetime","connectionTTL","Math","round","toMillis","decode","undefined","idle_timeout","idleTimeout","connect_timeout","connectTimeout","host","port","ssl","path","database","username","password","value","fetch_types","fetchTypes","debug","client","url","addFinalizer","promise","end","ConnectionImpl","pg","constructor","run","query","async","resume","then","succeed","error","SqlError","sync","cancel","runTransform","map","execute","sql","params","unsafe","executeWithoutTransform","executeValues","values","executeRaw","executeStream","mapChunks","fromAsyncIterable","cursor","flatMap","rows","unsafeFromArray","assign","acquirer","transactionAcquirer","acquireRelease","tryPromise","try","reserve","catch","release","config","json","PgJson","PgArray","layer","scoped","unwrap","transform","transformValue","placeholder","onIdentifier","onRecordUpdate","placeholders","valueAlias","valueColumns","flat","onCustom","type","kind","i0","param","first","custom"],"sources":["../../src/Client.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
run: true,
|
|
8
|
+
layer: true
|
|
9
|
+
};
|
|
10
|
+
exports.run = exports.layer = void 0;
|
|
11
|
+
var Command = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Command"));
|
|
12
|
+
var _FileSystem = /*#__PURE__*/require("@effect/platform/FileSystem");
|
|
13
|
+
var _Path = /*#__PURE__*/require("@effect/platform/Path");
|
|
14
|
+
var Migrator = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/sql/Migrator"));
|
|
15
|
+
Object.keys(Migrator).forEach(function (key) {
|
|
16
|
+
if (key === "default" || key === "__esModule") return;
|
|
17
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
18
|
+
if (key in exports && exports[key] === Migrator[key]) return;
|
|
19
|
+
Object.defineProperty(exports, key, {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () {
|
|
22
|
+
return Migrator[key];
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Effect"));
|
|
27
|
+
var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Layer"));
|
|
28
|
+
var Secret = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Secret"));
|
|
29
|
+
var Client = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Client.js"));
|
|
30
|
+
function _getRequireWildcardCache(e) {
|
|
31
|
+
if ("function" != typeof WeakMap) return null;
|
|
32
|
+
var r = new WeakMap(),
|
|
33
|
+
t = new WeakMap();
|
|
34
|
+
return (_getRequireWildcardCache = function (e) {
|
|
35
|
+
return e ? t : r;
|
|
36
|
+
})(e);
|
|
37
|
+
}
|
|
38
|
+
function _interopRequireWildcard(e, r) {
|
|
39
|
+
if (!r && e && e.__esModule) return e;
|
|
40
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return {
|
|
41
|
+
default: e
|
|
42
|
+
};
|
|
43
|
+
var t = _getRequireWildcardCache(r);
|
|
44
|
+
if (t && t.has(e)) return t.get(e);
|
|
45
|
+
var n = {
|
|
46
|
+
__proto__: null
|
|
47
|
+
},
|
|
48
|
+
a = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
49
|
+
for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
|
|
50
|
+
var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
|
|
51
|
+
i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
|
|
52
|
+
}
|
|
53
|
+
return n.default = e, t && t.set(e, n), n;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* @since 1.0.0
|
|
57
|
+
*/
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @since 1.0.0
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @category constructor
|
|
65
|
+
* @since 1.0.0
|
|
66
|
+
*/
|
|
67
|
+
const run = exports.run = /*#__PURE__*/Migrator.make({
|
|
68
|
+
getClient: Client.PgClient,
|
|
69
|
+
ensureTable(sql, table) {
|
|
70
|
+
return Effect.catchAll(sql`select ${table}::regclass`, () => sql`
|
|
71
|
+
CREATE TABLE ${sql(table)} (
|
|
72
|
+
migration_id integer primary key,
|
|
73
|
+
created_at timestamp with time zone not null default now(),
|
|
74
|
+
name text not null
|
|
75
|
+
)
|
|
76
|
+
`);
|
|
77
|
+
},
|
|
78
|
+
lockTable(sql, table) {
|
|
79
|
+
return sql`
|
|
80
|
+
LOCK TABLE ${sql(table)} IN ACCESS EXCLUSIVE MODE
|
|
81
|
+
`;
|
|
82
|
+
},
|
|
83
|
+
dumpSchema(sql, path, table) {
|
|
84
|
+
const pgDump = args => Effect.gen(function* (_) {
|
|
85
|
+
const dump = yield* _(Command.make("pg_dump", ...args, "--no-owner", "--no-privileges"), Command.env({
|
|
86
|
+
PATH: globalThis.process?.env.PATH,
|
|
87
|
+
PGHOST: sql.config.host,
|
|
88
|
+
PGPORT: sql.config.port?.toString(),
|
|
89
|
+
PGUSER: sql.config.username,
|
|
90
|
+
PGPASSWORD: sql.config.password ? Secret.value(sql.config.password) : undefined,
|
|
91
|
+
PGDATABASE: sql.config.database,
|
|
92
|
+
PGSSLMODE: sql.config.ssl ? "require" : "prefer"
|
|
93
|
+
}), Command.string);
|
|
94
|
+
return dump.replace(/^--.*$/gm, "").replace(/^SET .*$/gm, "").replace(/^SELECT pg_catalog\..*$/gm, "").replace(/\n{2,}/gm, "\n\n").trim();
|
|
95
|
+
}).pipe(Effect.mapError(error => new Migrator.MigrationError({
|
|
96
|
+
reason: "failed",
|
|
97
|
+
message: error.message
|
|
98
|
+
})));
|
|
99
|
+
const pgDumpSchema = pgDump(["--schema-only"]);
|
|
100
|
+
const pgDumpMigrations = pgDump(["--column-inserts", "--data-only", `--table=${table}`]);
|
|
101
|
+
const pgDumpAll = Effect.map(Effect.all([pgDumpSchema, pgDumpMigrations], {
|
|
102
|
+
concurrency: 2
|
|
103
|
+
}), ([schema, migrations]) => schema + "\n\n" + migrations);
|
|
104
|
+
const pgDumpFile = path => Effect.gen(function* (_) {
|
|
105
|
+
const fs = yield* _(_FileSystem.FileSystem);
|
|
106
|
+
const path_ = yield* _(_Path.Path);
|
|
107
|
+
const dump = yield* _(pgDumpAll);
|
|
108
|
+
yield* _(fs.makeDirectory(path_.dirname(path), {
|
|
109
|
+
recursive: true
|
|
110
|
+
}));
|
|
111
|
+
yield* _(fs.writeFileString(path, dump));
|
|
112
|
+
}).pipe(Effect.mapError(error => new Migrator.MigrationError({
|
|
113
|
+
reason: "failed",
|
|
114
|
+
message: error.message
|
|
115
|
+
})));
|
|
116
|
+
return pgDumpFile(path);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
/**
|
|
120
|
+
* @category layers
|
|
121
|
+
* @since 1.0.0
|
|
122
|
+
*/
|
|
123
|
+
const layer = options => Layer.effectDiscard(run(options));
|
|
124
|
+
exports.layer = layer;
|
|
125
|
+
//# sourceMappingURL=Migrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migrator.js","names":["Command","_interopRequireWildcard","require","_FileSystem","_Path","Migrator","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","Effect","Layer","Secret","Client","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","n","__proto__","a","getOwnPropertyDescriptor","u","i","set","run","make","getClient","PgClient","ensureTable","sql","table","catchAll","lockTable","dumpSchema","path","pgDump","args","gen","_","dump","env","PATH","globalThis","process","PGHOST","config","host","PGPORT","port","toString","PGUSER","username","PGPASSWORD","password","value","undefined","PGDATABASE","database","PGSSLMODE","ssl","string","replace","trim","pipe","mapError","error","MigrationError","reason","message","pgDumpSchema","pgDumpMigrations","pgDumpAll","map","all","concurrency","schema","migrations","pgDumpFile","fs","FileSystem","path_","Path","makeDirectory","dirname","recursive","writeFileString","layer","options","effectDiscard"],"sources":["../../src/Migrator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.statement = exports.schema = exports.resolver = exports.migrator = exports.error = exports.client = void 0;
|
|
7
|
+
var _client = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Client.js"));
|
|
8
|
+
exports.client = _client;
|
|
9
|
+
var _error = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/sql/Error"));
|
|
10
|
+
exports.error = _error;
|
|
11
|
+
var _migrator = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Migrator.js"));
|
|
12
|
+
exports.migrator = _migrator;
|
|
13
|
+
var _resolver = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/sql/Resolver"));
|
|
14
|
+
exports.resolver = _resolver;
|
|
15
|
+
var _schema = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/sql/Schema"));
|
|
16
|
+
exports.schema = _schema;
|
|
17
|
+
var _statement = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/sql/Statement"));
|
|
18
|
+
exports.statement = _statement;
|
|
19
|
+
function _getRequireWildcardCache(e) {
|
|
20
|
+
if ("function" != typeof WeakMap) return null;
|
|
21
|
+
var r = new WeakMap(),
|
|
22
|
+
t = new WeakMap();
|
|
23
|
+
return (_getRequireWildcardCache = function (e) {
|
|
24
|
+
return e ? t : r;
|
|
25
|
+
})(e);
|
|
26
|
+
}
|
|
27
|
+
function _interopRequireWildcard(e, r) {
|
|
28
|
+
if (!r && e && e.__esModule) return e;
|
|
29
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return {
|
|
30
|
+
default: e
|
|
31
|
+
};
|
|
32
|
+
var t = _getRequireWildcardCache(r);
|
|
33
|
+
if (t && t.has(e)) return t.get(e);
|
|
34
|
+
var n = {
|
|
35
|
+
__proto__: null
|
|
36
|
+
},
|
|
37
|
+
a = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
38
|
+
for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
|
|
39
|
+
var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
|
|
40
|
+
i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
|
|
41
|
+
}
|
|
42
|
+
return n.default = e, t && t.set(e, n), n;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Client from "@effect/sql/Client";
|
|
5
|
+
import type { Custom, Fragment, Primitive } from "@effect/sql/Statement";
|
|
6
|
+
import * as Statement from "@effect/sql/Statement";
|
|
7
|
+
import * as Config from "effect/Config";
|
|
8
|
+
import type { ConfigError } from "effect/ConfigError";
|
|
9
|
+
import * as Context from "effect/Context";
|
|
10
|
+
import * as Duration from "effect/Duration";
|
|
11
|
+
import * as Effect from "effect/Effect";
|
|
12
|
+
import * as Layer from "effect/Layer";
|
|
13
|
+
import type { Scope } from "effect/Scope";
|
|
14
|
+
import * as Secret from "effect/Secret";
|
|
15
|
+
import postgres from "postgres";
|
|
16
|
+
/**
|
|
17
|
+
* @category models
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
*/
|
|
20
|
+
export interface PgClient extends Client.Client {
|
|
21
|
+
readonly config: PgClientConfig;
|
|
22
|
+
readonly json: (_: unknown) => Fragment;
|
|
23
|
+
readonly array: (_: ReadonlyArray<Primitive>) => Fragment;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @category tags
|
|
27
|
+
* @since 1.0.0
|
|
28
|
+
*/
|
|
29
|
+
export declare const PgClient: Context.Tag<PgClient, PgClient>;
|
|
30
|
+
/**
|
|
31
|
+
* @category constructors
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
*/
|
|
34
|
+
export interface PgClientConfig {
|
|
35
|
+
readonly url?: Secret.Secret | undefined;
|
|
36
|
+
readonly host?: string | undefined;
|
|
37
|
+
readonly port?: number | undefined;
|
|
38
|
+
readonly path?: string | undefined;
|
|
39
|
+
readonly ssl?: boolean | undefined;
|
|
40
|
+
readonly database?: string | undefined;
|
|
41
|
+
readonly username?: string | undefined;
|
|
42
|
+
readonly password?: Secret.Secret | undefined;
|
|
43
|
+
readonly idleTimeout?: Duration.DurationInput | undefined;
|
|
44
|
+
readonly connectTimeout?: Duration.DurationInput | undefined;
|
|
45
|
+
readonly maxConnections?: number | undefined;
|
|
46
|
+
readonly connectionTTL?: Duration.DurationInput | undefined;
|
|
47
|
+
readonly transformResultNames?: ((str: string) => string) | undefined;
|
|
48
|
+
readonly transformQueryNames?: ((str: string) => string) | undefined;
|
|
49
|
+
readonly transformJson?: boolean | undefined;
|
|
50
|
+
readonly fetchTypes?: boolean | undefined;
|
|
51
|
+
readonly debug?: postgres.Options<{}>["debug"] | undefined;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* @category constructors
|
|
55
|
+
* @since 1.0.0
|
|
56
|
+
*/
|
|
57
|
+
export declare const make: (options: PgClientConfig) => Effect.Effect<PgClient, never, Scope>;
|
|
58
|
+
/**
|
|
59
|
+
* @category constructor
|
|
60
|
+
* @since 1.0.0
|
|
61
|
+
*/
|
|
62
|
+
export declare const layer: (config: Config.Config.Wrap<PgClientConfig>) => Layer.Layer<PgClient, ConfigError>;
|
|
63
|
+
/**
|
|
64
|
+
* @category constructor
|
|
65
|
+
* @since 1.0.0
|
|
66
|
+
*/
|
|
67
|
+
export declare const makeCompiler: (transform?: ((_: string) => string) | undefined, transformJson?: boolean) => Statement.Compiler;
|
|
68
|
+
/**
|
|
69
|
+
* @category custom types
|
|
70
|
+
* @since 1.0.0
|
|
71
|
+
*/
|
|
72
|
+
export type PgCustom = PgJson | PgArray;
|
|
73
|
+
/**
|
|
74
|
+
* @category custom types
|
|
75
|
+
* @since 1.0.0
|
|
76
|
+
*/
|
|
77
|
+
interface PgJson extends Custom<"PgJson", unknown> {
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* @category custom types
|
|
81
|
+
* @since 1.0.0
|
|
82
|
+
*/
|
|
83
|
+
declare const PgJson: (i0: unknown, i1: void, i2: void) => Fragment;
|
|
84
|
+
/**
|
|
85
|
+
* @category custom types
|
|
86
|
+
* @since 1.0.0
|
|
87
|
+
*/
|
|
88
|
+
interface PgArray extends Custom<"PgArray", ReadonlyArray<Primitive>> {
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* @category custom types
|
|
92
|
+
* @since 1.0.0
|
|
93
|
+
*/
|
|
94
|
+
declare const PgArray: (i0: readonly Primitive[], i1: void, i2: void) => Fragment;
|
|
95
|
+
export {};
|
|
96
|
+
//# sourceMappingURL=Client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/Client.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAA;AAG5C,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAA;AAElD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B;;;GAGG;AACH,MAAM,WAAW,QAAS,SAAQ,MAAM,CAAC,MAAM;IAC7C,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,QAAQ,CAAA;IACvC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAA;CAC1D;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAA2D,CAAA;AAEhH;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAAA;IAExC,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,SAAS,CAAA;IAClC,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,MAAM,CAAC,MAAM,GAAG,SAAS,CAAA;IAE7C,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,aAAa,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAA;IAE3D,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,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAEzC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;CAC3D;AAMD;;;GAGG;AACH,eAAO,MAAM,IAAI,YACN,cAAc,KACtB,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAoHnC,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,CAClB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KACvC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAEkC,CAAA;AAExE;;;GAGG;AACH,eAAO,MAAM,YAAY,oBACP,MAAM,KAAK,MAAM,2CAEhC,UAAU,QAkDZ,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;AAEvC;;;GAGG;AACH,UAAU,MAAO,SAAQ,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;CAAG;AACrD;;;GAGG;AACH,QAAA,MAAM,MAAM,+CAAqC,CAAA;AAEjD;;;GAGG;AACH,UAAU,OAAQ,SAAQ,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;CAAG;AACxE;;;GAGG;AACH,QAAA,MAAM,OAAO,4DAAuC,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { CommandExecutor } from "@effect/platform/CommandExecutor";
|
|
2
|
+
import { FileSystem } from "@effect/platform/FileSystem";
|
|
3
|
+
import { Path } from "@effect/platform/Path";
|
|
4
|
+
import type { SqlError } from "@effect/sql/Error";
|
|
5
|
+
import * as Migrator from "@effect/sql/Migrator";
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as Layer from "effect/Layer";
|
|
8
|
+
import * as Client from "./Client.js";
|
|
9
|
+
/**
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
export * from "@effect/sql/Migrator";
|
|
13
|
+
/**
|
|
14
|
+
* @category constructor
|
|
15
|
+
* @since 1.0.0
|
|
16
|
+
*/
|
|
17
|
+
export declare const run: <R>(options: Migrator.MigratorOptions<R>) => Effect.Effect<ReadonlyArray<readonly [id: number, name: string]>, SqlError | Migrator.MigrationError, Client.PgClient | FileSystem | Path | CommandExecutor | R>;
|
|
18
|
+
/**
|
|
19
|
+
* @category layers
|
|
20
|
+
* @since 1.0.0
|
|
21
|
+
*/
|
|
22
|
+
export declare const layer: (options: Migrator.MigratorOptions) => Layer.Layer<never, SqlError | Migrator.MigrationError, Client.PgClient | FileSystem | Path | CommandExecutor>;
|
|
23
|
+
//# sourceMappingURL=Migrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migrator.d.ts","sourceRoot":"","sources":["../../src/Migrator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;GAEG;AACH,cAAc,sBAAsB,CAAA;AAEpC;;;GAGG;AACH,eAAO,MAAM,GAAG,EAAE,CAAC,CAAC,EAClB,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,KACjC,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAClD,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAClC,MAAM,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAI,GAAG,eAAe,GAAG,CAAC,CA2EzD,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,YACP,SAAS,eAAe,KAChC,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,cAAc,EAAE,OAAO,QAAQ,GAAG,UAAU,GAAG,IAAI,GAAG,eAAe,CAC5E,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* @since 1.0.0
|
|
6
|
+
*/
|
|
7
|
+
export * as client from "./Client.js";
|
|
8
|
+
/**
|
|
9
|
+
* @since 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
export * as error from "@effect/sql/Error";
|
|
12
|
+
/**
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
*/
|
|
15
|
+
export * as migrator from "./Migrator.js";
|
|
16
|
+
/**
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
*/
|
|
19
|
+
export * as resolver from "@effect/sql/Resolver";
|
|
20
|
+
/**
|
|
21
|
+
* @since 1.0.0
|
|
22
|
+
*/
|
|
23
|
+
export * as schema from "@effect/sql/Schema";
|
|
24
|
+
/**
|
|
25
|
+
* @since 1.0.0
|
|
26
|
+
*/
|
|
27
|
+
export * as statement from "@effect/sql/Statement";
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAA;AAE1C;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAEhD;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAA;AAE5C;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAA"}
|