@typesql/pg 0.4.1 → 0.4.3
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/README.md +1 -1
- package/dist/introspect/emit.d.ts.map +1 -1
- package/dist/introspect/emit.js +12 -22
- package/dist/introspect/emit.js.map +1 -1
- package/package.json +2 -2
- package/src/introspect/emit.ts +12 -24
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ await sql.transaction(async (tx) => {
|
|
|
29
29
|
|
|
30
30
|
`createSql` takes a `Pool`, a `Client` or a `PoolClient`. As in `pg`, `int8` (so `count(*)`), `numeric` and `money` come back as strings.
|
|
31
31
|
|
|
32
|
-
[Open an example in the TypeScript Playground](https://www.typescriptlang.org/play/?moduleResolution=100#code/
|
|
32
|
+
[Open an example in the TypeScript Playground](https://www.typescriptlang.org/play/?moduleResolution=100#code/JYWwDg9gTgLgBDAnmApnA3nAwhANnAXzgDMoIQ4AiAASVQGcBHXAegGNoUXJ6YBzKCnqUA3AChQkWBjhtBAQxgoAys0IkyFGnSHNufURPDR4mAAoQ860uSpgD4iQDslUYvLZoAIgCEMYgEgAV3oUKHoALn8AgOAAEyicXAAeSmAXABZKABoZAAt5ei8UdyDcGCiYKCC0AgA+cRiUEHlgXES8VKUADxhKBsCAuOB6MFx5RAB9J3kQFA6Uyh6+3MwnMvGAI1x5hGragZjN+XGnTwXU9bmoYDZ+xoC5FEUUOMnFC6XQIRhZsBgAF45fKFYqlcqVfaEQ4ERo8GCRaKxBLYTppFwADmBmAKRRK8jKFT2NWhDwJMDy0Em8U+6RgWUOARgwBgO0+y3ugzAQW2Izyr3eRKSXW+vD+gOxcHWuC2bOJB0asLEBDEYg4Tl4cEgVgAvFKUAB3OAWPAACkw6qcKDYzIgTmUVXSfCilHhAiEERYLFwEDYJ0pvBY8jAYEohAAlOJ1ZqmPg9U8XqoUr46qbtbhI6ro-BNogAIJBCnQOB62OmwIAA2UAFEADLVrAAFS1ADp4rkwC3mayUB2W9zefR+W9FLkgi3mq1cGI4LO5-OF4u4AAxABKAHkALJaiC8ehauAAKXXAEkAHJwEJhfdBODri-j+Il1vkylQalxGdL7+LgDqAAlq1XasX0LN8P2fAASABGCtskCAB2eDM2zHc92feQDVaHN8zA6AJ26a1CxQU1MzVO1NSvKAMKwlk4DLSsa3rJs4HbOBjlOTxcgTJQR3gNct0vUJwjgACgJAyc2ig2D4ICSh5DieRqBQbo-h2FsOBAHIxHDAiiKURt5AAaxQZdgHCGB1ygRs8jIA1SMcVCOCCFx9z1TDsPo5hywCKs6wbZtXypNjnJcU0ACpwzgPNlClFcN23eF9wAcQ3ABVMw4B8ABNOAgvfeI4J0vS2GIhyswo+B4RPOIaM82MuygeQNQ8W0nFNQpEDOOBTRgboop1OpolQzAnyIdzaPgPqfN888a1XZtz0bdchOvHrJNwXIOOazwooANTzWs0urWLTRg3JIIAJii4DGzS1cz3PZLWLiIqYkoAQPBQZTVPAdTNO0mIAAZZN0lT9JQQyTLMiyrJsuzyseSq0PgCbPOmwYKzmoDFrPZaUf3Dq8IKuJcm7HZ9sO47TvOuArpu6s7oep6Xre5FZLk-8UBlCBAbBwjSoM4zTPM3g4dsiB7MzAJBBgIIoCcFG2zicQCDIjy6LLCsvH8xsQIExLdwRUTAOAvLiYgvUYLgqgEMofmIfKoA) <span data-playground="pg"></span> to hover the types and edit the SQL, with nothing to install.
|
|
33
33
|
|
|
34
34
|
## Generate your schema
|
|
35
35
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../src/introspect/emit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAClB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAChC,CAAC,CACD,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,oBAAoB,KACzB,MAAM,GAAG,SAAS,CAAC,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,CACjB,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,oBAAoB,KAC1B,MAAM,GAAG,SAAS,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../src/introspect/emit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAClB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAChC,CAAC,CACD,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,oBAAoB,KACzB,MAAM,GAAG,SAAS,CAAC,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,CACjB,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,oBAAoB,KAC1B,MAAM,GAAG,SAAS,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC5B;AAsCD,wBAAgB,cAAc,CAC7B,EAAE,EAAE,oBAAoB,EACxB,OAAO,GAAE,eAAoB,GAC3B,MAAM,CA4JR"}
|
package/dist/introspect/emit.js
CHANGED
|
@@ -11,13 +11,10 @@ function doc(lines, indent) {
|
|
|
11
11
|
return `${indent}/** ${text[0]} */\n`;
|
|
12
12
|
return `${indent}/**\n${text.map((l) => `${indent} *${l ? ` ${l}` : ""}`).join("\n")}\n${indent} */\n`;
|
|
13
13
|
}
|
|
14
|
-
const
|
|
15
|
-
?
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
: hasDefault
|
|
19
|
-
? "Generated"
|
|
20
|
-
: "Col";
|
|
14
|
+
const flagsOf = (c) => [
|
|
15
|
+
...(c.nullable ? ["nullable: true"] : []),
|
|
16
|
+
...(c.hasDefault ? ["hasDefault: true"] : []),
|
|
17
|
+
];
|
|
21
18
|
function columnNotes(c) {
|
|
22
19
|
const notes = [];
|
|
23
20
|
if (c.comment)
|
|
@@ -57,10 +54,7 @@ export function generateSource(db, options = {}) {
|
|
|
57
54
|
return ts;
|
|
58
55
|
};
|
|
59
56
|
const jsonDescriptor = (col, ts) => {
|
|
60
|
-
const flags =
|
|
61
|
-
...(col.nullable ? ["nullable: true"] : []),
|
|
62
|
-
...(col.hasDefault ? ["hasDefault: true"] : []),
|
|
63
|
-
];
|
|
57
|
+
const flags = flagsOf(col);
|
|
64
58
|
const flagSource = flags.length > 0 ? `{ ${flags.join("; ")} }` : "{}";
|
|
65
59
|
used.add("Json");
|
|
66
60
|
if (col.type === "json")
|
|
@@ -76,9 +70,12 @@ export function generateSource(db, options = {}) {
|
|
|
76
70
|
if (custom !== undefined)
|
|
77
71
|
descriptor = jsonDescriptor(c, custom);
|
|
78
72
|
else {
|
|
79
|
-
const
|
|
80
|
-
used.add(
|
|
81
|
-
descriptor =
|
|
73
|
+
const flags = flagsOf(c);
|
|
74
|
+
used.add("Col");
|
|
75
|
+
descriptor =
|
|
76
|
+
flags.length > 0
|
|
77
|
+
? `Col<${str(c.type)}, { ${flags.join("; ")} }>`
|
|
78
|
+
: `Col<${str(c.type)}>`;
|
|
82
79
|
}
|
|
83
80
|
}
|
|
84
81
|
return `${comments ? doc(columnNotes(c), `${indent} `) : ""}${indent} ${key(c.name)}: ${descriptor};`;
|
|
@@ -139,14 +136,7 @@ export function generateSource(db, options = {}) {
|
|
|
139
136
|
});
|
|
140
137
|
lines.push(` $types: {\n${entries.join("\n")}\n };`);
|
|
141
138
|
}
|
|
142
|
-
const helpers = [
|
|
143
|
-
"Col",
|
|
144
|
-
"Generated",
|
|
145
|
-
"Json",
|
|
146
|
-
"Nullable",
|
|
147
|
-
"NullableGenerated",
|
|
148
|
-
"View",
|
|
149
|
-
].filter((h) => used.has(h));
|
|
139
|
+
const helpers = ["Col", "Json", "View"].filter((h) => used.has(h));
|
|
150
140
|
const out = [
|
|
151
141
|
`// Generated by \`typesql introspect\` from PostgreSQL ${db.version.split(/[.\s]/)[0]}. Do not edit.`,
|
|
152
142
|
...(helpers.length > 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/introspect/emit.ts"],"names":[],"mappings":"AAuBA,MAAM,KAAK,GAAG,4BAA4B,CAAC;AAC3C,MAAM,GAAG,GAAG,CAAC,IAAY,EAAU,EAAE,CACpC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAChD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAErD,SAAS,GAAG,CAAC,KAAwB,EAAE,MAAc;IACpD,MAAM,IAAI,GAAG,KAAK;SAChB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,MAAM,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7D,OAAO,GAAG,MAAM,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,OAAO,CAAC;AACxG,CAAC;
|
|
1
|
+
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/introspect/emit.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typesql/pg",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.3",
|
|
4
4
|
"description": "node-postgres (pg) adapter for TypeSQL, with the introspection behind `typesql introspect` (@typesql/cli).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"access": "public"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@typesql/core": "0.
|
|
35
|
+
"@typesql/core": "1.0.1"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
38
|
"pg": ">=8"
|
package/src/introspect/emit.ts
CHANGED
|
@@ -35,15 +35,10 @@ function doc(lines: readonly string[], indent: string): string {
|
|
|
35
35
|
return `${indent}/**\n${text.map((l) => `${indent} *${l ? ` ${l}` : ""}`).join("\n")}\n${indent} */\n`;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
? "NullableGenerated"
|
|
43
|
-
: "Nullable"
|
|
44
|
-
: hasDefault
|
|
45
|
-
? "Generated"
|
|
46
|
-
: "Col";
|
|
38
|
+
const flagsOf = (c: IntrospectedColumn): string[] => [
|
|
39
|
+
...(c.nullable ? ["nullable: true"] : []),
|
|
40
|
+
...(c.hasDefault ? ["hasDefault: true"] : []),
|
|
41
|
+
];
|
|
47
42
|
|
|
48
43
|
function columnNotes(c: IntrospectedColumn): string[] {
|
|
49
44
|
const notes: string[] = [];
|
|
@@ -97,10 +92,7 @@ export function generateSource(
|
|
|
97
92
|
};
|
|
98
93
|
|
|
99
94
|
const jsonDescriptor = (col: IntrospectedColumn, ts: string): string => {
|
|
100
|
-
const flags =
|
|
101
|
-
...(col.nullable ? ["nullable: true"] : []),
|
|
102
|
-
...(col.hasDefault ? ["hasDefault: true"] : []),
|
|
103
|
-
];
|
|
95
|
+
const flags = flagsOf(col);
|
|
104
96
|
const flagSource = flags.length > 0 ? `{ ${flags.join("; ")} }` : "{}";
|
|
105
97
|
used.add("Json");
|
|
106
98
|
if (col.type === "json") return `Json<${ts}, ${flagSource}, "json">`;
|
|
@@ -115,9 +107,12 @@ export function generateSource(
|
|
|
115
107
|
const custom = customType(rel, c);
|
|
116
108
|
if (custom !== undefined) descriptor = jsonDescriptor(c, custom);
|
|
117
109
|
else {
|
|
118
|
-
const
|
|
119
|
-
used.add(
|
|
120
|
-
descriptor =
|
|
110
|
+
const flags = flagsOf(c);
|
|
111
|
+
used.add("Col");
|
|
112
|
+
descriptor =
|
|
113
|
+
flags.length > 0
|
|
114
|
+
? `Col<${str(c.type)}, { ${flags.join("; ")} }>`
|
|
115
|
+
: `Col<${str(c.type)}>`;
|
|
121
116
|
}
|
|
122
117
|
}
|
|
123
118
|
return `${comments ? doc(columnNotes(c), `${indent} `) : ""}${indent} ${key(c.name)}: ${descriptor};`;
|
|
@@ -199,14 +194,7 @@ export function generateSource(
|
|
|
199
194
|
lines.push(` $types: {\n${entries.join("\n")}\n };`);
|
|
200
195
|
}
|
|
201
196
|
|
|
202
|
-
const helpers = [
|
|
203
|
-
"Col",
|
|
204
|
-
"Generated",
|
|
205
|
-
"Json",
|
|
206
|
-
"Nullable",
|
|
207
|
-
"NullableGenerated",
|
|
208
|
-
"View",
|
|
209
|
-
].filter((h) => used.has(h));
|
|
197
|
+
const helpers = ["Col", "Json", "View"].filter((h) => used.has(h));
|
|
210
198
|
const out = [
|
|
211
199
|
`// Generated by \`typesql introspect\` from PostgreSQL ${db.version.split(/[.\s]/)[0]}. Do not edit.`,
|
|
212
200
|
...(helpers.length > 0
|