@prairielearn/postgres-tools 1.1.1 → 1.1.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/CHANGELOG.md +16 -0
- package/dist/describe.js +2 -7
- package/dist/describe.js.map +1 -1
- package/package.json +6 -5
- package/src/bin/pg-describe.ts +2 -2
- package/src/bin/pg-diff.ts +2 -2
- package/src/describe.ts +18 -21
- package/src/diff.ts +12 -12
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @prairielearn/postgres-tools
|
|
2
2
|
|
|
3
|
+
## 1.1.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 2b003b4d9: Upgrade all dependencies
|
|
8
|
+
- Updated dependencies [2b003b4d9]
|
|
9
|
+
- @prairielearn/postgres@1.7.2
|
|
10
|
+
|
|
11
|
+
## 1.1.2
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- 8fd47d928: Upgrade all dependencies
|
|
16
|
+
- Updated dependencies [8fd47d928]
|
|
17
|
+
- @prairielearn/postgres@1.7.1
|
|
18
|
+
|
|
3
19
|
## 1.1.1
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
package/dist/describe.js
CHANGED
|
@@ -5,15 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.formatDatabaseDescription = exports.describeDatabase = void 0;
|
|
7
7
|
// @ts-check
|
|
8
|
-
const pg_1 = __importDefault(require("pg"));
|
|
9
8
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const postgres_array_1 = require("postgres-array");
|
|
10
10
|
const postgres_1 = require("@prairielearn/postgres");
|
|
11
11
|
const sql = (0, postgres_1.loadSqlEquiv)(__filename);
|
|
12
|
-
const pgArray = pg_1.default.types.arrayParser;
|
|
13
|
-
function parsePostgresArray(arr) {
|
|
14
|
-
// @ts-expect-error -- Incorrect type definitions in `pg-types`.
|
|
15
|
-
return pgArray.create(arr, String).parse();
|
|
16
|
-
}
|
|
17
12
|
async function describeWithPool(pool, options) {
|
|
18
13
|
const ignoreTables = options?.ignoreTables || [];
|
|
19
14
|
const ignoreEnums = options?.ignoreEnums || [];
|
|
@@ -82,7 +77,7 @@ async function describeWithPool(pool, options) {
|
|
|
82
77
|
return ignoreEnums.indexOf(row.name) === -1;
|
|
83
78
|
});
|
|
84
79
|
rows.forEach((row) => {
|
|
85
|
-
output.enums[row.name] =
|
|
80
|
+
output.enums[row.name] = (0, postgres_array_1.parse)(row.values);
|
|
86
81
|
});
|
|
87
82
|
return output;
|
|
88
83
|
}
|
package/dist/describe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../src/describe.ts"],"names":[],"mappings":";;;;;;AAAA,YAAY;AACZ,
|
|
1
|
+
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../src/describe.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prairielearn/postgres-tools",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.3",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"bin": {
|
|
6
6
|
"pg-describe": "./dist/bin/pg-describe.js",
|
|
@@ -19,18 +19,19 @@
|
|
|
19
19
|
"@prairielearn/tsconfig": "^0.0.0",
|
|
20
20
|
"@types/diff": "^5.0.3",
|
|
21
21
|
"@types/fs-extra": "^11.0.1",
|
|
22
|
-
"@types/lodash": "^4.14.
|
|
23
|
-
"@types/node": "^18.16.
|
|
22
|
+
"@types/lodash": "^4.14.195",
|
|
23
|
+
"@types/node": "^18.16.19",
|
|
24
24
|
"@types/yargs": "^17.0.24",
|
|
25
|
-
"typescript": "^5.
|
|
25
|
+
"typescript": "^5.1.6",
|
|
26
26
|
"typescript-cp": "^0.1.8"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@prairielearn/postgres": "^1.7.
|
|
29
|
+
"@prairielearn/postgres": "^1.7.2",
|
|
30
30
|
"chalk": "^4.1.2",
|
|
31
31
|
"diff": "^5.1.0",
|
|
32
32
|
"fs-extra": "^11.1.1",
|
|
33
33
|
"lodash": "^4.17.21",
|
|
34
|
+
"postgres-array": "^3.0.2",
|
|
34
35
|
"yargs": "^17.7.2"
|
|
35
36
|
}
|
|
36
37
|
}
|
package/src/bin/pg-describe.ts
CHANGED
|
@@ -35,7 +35,7 @@ const args = yargs
|
|
|
35
35
|
.example('$0 postgres', 'Describe the "postgres" database')
|
|
36
36
|
.example(
|
|
37
37
|
'$0 userdb -o db_description --ignore-tables a b --ignore-columns a.col1 a.col2',
|
|
38
|
-
'Describe the "userdb" database; ignore specific tables and columns'
|
|
38
|
+
'Describe the "userdb" database; ignore specific tables and columns',
|
|
39
39
|
)
|
|
40
40
|
.strict();
|
|
41
41
|
|
|
@@ -74,7 +74,7 @@ describeDatabase(argv._[0].toString(), options).then(
|
|
|
74
74
|
(err) => {
|
|
75
75
|
console.error(err);
|
|
76
76
|
process.exit(1);
|
|
77
|
-
}
|
|
77
|
+
},
|
|
78
78
|
);
|
|
79
79
|
|
|
80
80
|
function printDescription(description: DatabaseDescription) {
|
package/src/bin/pg-diff.ts
CHANGED
|
@@ -21,11 +21,11 @@ const args = yargs
|
|
|
21
21
|
.alias('h', 'help')
|
|
22
22
|
.example(
|
|
23
23
|
'$0 --db postgres --dir db_dump',
|
|
24
|
-
'Diffs the database "postgres" with the description in the directory "db_dump"'
|
|
24
|
+
'Diffs the database "postgres" with the description in the directory "db_dump"',
|
|
25
25
|
)
|
|
26
26
|
.example(
|
|
27
27
|
'$0 --db postgres --db old_restore',
|
|
28
|
-
'Diffs the database "postgres" with the database "old_restore"'
|
|
28
|
+
'Diffs the database "postgres" with the database "old_restore"',
|
|
29
29
|
)
|
|
30
30
|
.strict();
|
|
31
31
|
|
package/src/describe.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
// @ts-check
|
|
2
|
-
import pg from 'pg';
|
|
3
2
|
import chalk from 'chalk';
|
|
3
|
+
import { parse as parsePostgresArray } from 'postgres-array';
|
|
4
4
|
import { loadSqlEquiv, PostgresPool } from '@prairielearn/postgres';
|
|
5
5
|
|
|
6
6
|
const sql = loadSqlEquiv(__filename);
|
|
7
|
-
const pgArray = pg.types.arrayParser;
|
|
8
7
|
|
|
9
8
|
interface ColumnDescription {
|
|
10
9
|
name: string;
|
|
@@ -57,14 +56,9 @@ interface DescribeOptions {
|
|
|
57
56
|
ignoreEnums?: string[];
|
|
58
57
|
}
|
|
59
58
|
|
|
60
|
-
function parsePostgresArray(arr: string): string[] {
|
|
61
|
-
// @ts-expect-error -- Incorrect type definitions in `pg-types`.
|
|
62
|
-
return pgArray.create(arr, String).parse();
|
|
63
|
-
}
|
|
64
|
-
|
|
65
59
|
async function describeWithPool(
|
|
66
60
|
pool: PostgresPool,
|
|
67
|
-
options: DescribeOptions
|
|
61
|
+
options: DescribeOptions,
|
|
68
62
|
): Promise<DatabaseDescription> {
|
|
69
63
|
const ignoreTables = options?.ignoreTables || [];
|
|
70
64
|
const ignoreEnums = options?.ignoreEnums || [];
|
|
@@ -86,16 +80,19 @@ async function describeWithPool(
|
|
|
86
80
|
.filter((ignore) => {
|
|
87
81
|
return /^[^\s.]*\.[^\s.]*$/.test(ignore);
|
|
88
82
|
})
|
|
89
|
-
.reduce(
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
83
|
+
.reduce(
|
|
84
|
+
(result, value) => {
|
|
85
|
+
const res = /^(([^\s.]*)\.([^\s.]*))$/.exec(value);
|
|
86
|
+
if (!res) {
|
|
87
|
+
throw new Error(`Invalid ignore column: ${value}`);
|
|
88
|
+
}
|
|
89
|
+
const table = res[2];
|
|
90
|
+
const column = res[3];
|
|
91
|
+
(result[table] || (result[table] = [])).push(column);
|
|
92
|
+
return result;
|
|
93
|
+
},
|
|
94
|
+
{} as Record<string, string[]>,
|
|
95
|
+
);
|
|
99
96
|
}
|
|
100
97
|
|
|
101
98
|
// Get column info for each table
|
|
@@ -116,7 +113,7 @@ async function describeWithPool(
|
|
|
116
113
|
sql.get_foreign_key_constraints_for_table,
|
|
117
114
|
{
|
|
118
115
|
oid: table.oid,
|
|
119
|
-
}
|
|
116
|
+
},
|
|
120
117
|
);
|
|
121
118
|
|
|
122
119
|
const referenceResults = await pool.queryAsync(sql.get_references_for_table, {
|
|
@@ -162,7 +159,7 @@ async function describeWithPool(
|
|
|
162
159
|
*/
|
|
163
160
|
export async function describeDatabase(
|
|
164
161
|
databaseName: string,
|
|
165
|
-
options: DescribeOptions = {}
|
|
162
|
+
options: DescribeOptions = {},
|
|
166
163
|
): Promise<DatabaseDescription> {
|
|
167
164
|
// Connect to the database.
|
|
168
165
|
const pool = new PostgresPool();
|
|
@@ -187,7 +184,7 @@ export async function describeDatabase(
|
|
|
187
184
|
|
|
188
185
|
export function formatDatabaseDescription(
|
|
189
186
|
description: DatabaseDescription,
|
|
190
|
-
options = { coloredOutput: true }
|
|
187
|
+
options = { coloredOutput: true },
|
|
191
188
|
): { tables: Record<string, string>; enums: Record<string, string> } {
|
|
192
189
|
const output = {
|
|
193
190
|
tables: {} as Record<string, string>,
|
package/src/diff.ts
CHANGED
|
@@ -40,7 +40,7 @@ async function diff(db1: DiffTarget, db2: DiffTarget, options: DiffOptions): Pro
|
|
|
40
40
|
result += formatText(`Tables added to ${db2NameBold} (${db2.type})\n`, chalk.underline);
|
|
41
41
|
result += formatText(
|
|
42
42
|
tablesMissingFrom1.map((table) => `+ ${table}`).join('\n') + '\n\n',
|
|
43
|
-
chalk.green
|
|
43
|
+
chalk.green,
|
|
44
44
|
);
|
|
45
45
|
}
|
|
46
46
|
|
|
@@ -48,7 +48,7 @@ async function diff(db1: DiffTarget, db2: DiffTarget, options: DiffOptions): Pro
|
|
|
48
48
|
result += formatText(`Tables missing from ${db2NameBold} (${db2.type})\n`, chalk.underline);
|
|
49
49
|
result += formatText(
|
|
50
50
|
tablesMissingFrom2.map((table) => `- ${table}`).join('\n') + '\n\n',
|
|
51
|
-
chalk.red
|
|
51
|
+
chalk.red,
|
|
52
52
|
);
|
|
53
53
|
}
|
|
54
54
|
|
|
@@ -60,7 +60,7 @@ async function diff(db1: DiffTarget, db2: DiffTarget, options: DiffOptions): Pro
|
|
|
60
60
|
result += formatText(`Enums added to ${db2NameBold} (${db1.type})\n`, chalk.underline);
|
|
61
61
|
result += formatText(
|
|
62
62
|
enumsMissingFrom1.map((enumName) => `+ ${enumName}`).join('\n') + '\n\n',
|
|
63
|
-
chalk.green
|
|
63
|
+
chalk.green,
|
|
64
64
|
);
|
|
65
65
|
}
|
|
66
66
|
|
|
@@ -68,7 +68,7 @@ async function diff(db1: DiffTarget, db2: DiffTarget, options: DiffOptions): Pro
|
|
|
68
68
|
result += formatText(`Enums missing from ${db2NameBold} (${db2.type})\n`, chalk.underline);
|
|
69
69
|
result += formatText(
|
|
70
70
|
enumsMissingFrom2.map((enumName) => `- ${enumName}`).join('\n') + '\n\n',
|
|
71
|
-
chalk.red
|
|
71
|
+
chalk.red,
|
|
72
72
|
);
|
|
73
73
|
}
|
|
74
74
|
|
|
@@ -79,7 +79,7 @@ async function diff(db1: DiffTarget, db2: DiffTarget, options: DiffOptions): Pro
|
|
|
79
79
|
`tables/${table}`,
|
|
80
80
|
`tables/${table}`,
|
|
81
81
|
description1.tables[table],
|
|
82
|
-
description2.tables[table]
|
|
82
|
+
description2.tables[table],
|
|
83
83
|
);
|
|
84
84
|
|
|
85
85
|
if (patch.hunks.length === 0) return;
|
|
@@ -164,14 +164,14 @@ export async function diffDatabases(database1: string, database2: string, option
|
|
|
164
164
|
type: 'database',
|
|
165
165
|
name: database2,
|
|
166
166
|
},
|
|
167
|
-
options
|
|
167
|
+
options,
|
|
168
168
|
);
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
export async function diffDatabaseAndDirectory(
|
|
172
172
|
database: string,
|
|
173
173
|
directory: string,
|
|
174
|
-
options: DiffOptions
|
|
174
|
+
options: DiffOptions,
|
|
175
175
|
) {
|
|
176
176
|
return diff(
|
|
177
177
|
{
|
|
@@ -182,14 +182,14 @@ export async function diffDatabaseAndDirectory(
|
|
|
182
182
|
type: 'directory',
|
|
183
183
|
path: directory,
|
|
184
184
|
},
|
|
185
|
-
options
|
|
185
|
+
options,
|
|
186
186
|
);
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
export async function diffDirectoryAndDatabase(
|
|
190
190
|
directory: string,
|
|
191
191
|
database: string,
|
|
192
|
-
options: DiffOptions
|
|
192
|
+
options: DiffOptions,
|
|
193
193
|
) {
|
|
194
194
|
return diff(
|
|
195
195
|
{
|
|
@@ -200,14 +200,14 @@ export async function diffDirectoryAndDatabase(
|
|
|
200
200
|
type: 'database',
|
|
201
201
|
name: database,
|
|
202
202
|
},
|
|
203
|
-
options
|
|
203
|
+
options,
|
|
204
204
|
);
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
export async function diffDirectories(
|
|
208
208
|
directory1: string,
|
|
209
209
|
directory2: string,
|
|
210
|
-
options: DiffOptions
|
|
210
|
+
options: DiffOptions,
|
|
211
211
|
) {
|
|
212
212
|
return diff(
|
|
213
213
|
{
|
|
@@ -218,6 +218,6 @@ export async function diffDirectories(
|
|
|
218
218
|
type: 'directory',
|
|
219
219
|
path: directory2,
|
|
220
220
|
},
|
|
221
|
-
options
|
|
221
|
+
options,
|
|
222
222
|
);
|
|
223
223
|
}
|