pg-dump-parser 1.2.0 → 1.3.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/README.md +22 -22
- package/dist/parsePgDump.test.js +79 -2
- package/dist/parsePgDump.test.js.map +1 -1
- package/dist/scopeSchemaObject.d.ts.map +1 -1
- package/dist/scopeSchemaObject.js +35 -4
- package/dist/scopeSchemaObject.js.map +1 -1
- package/package.json +1 -1
- package/src/parsePgDump.test.ts +86 -4
- package/src/scopeSchemaObject.ts +49 -2
package/README.md
CHANGED
|
@@ -28,31 +28,31 @@ The output is an array of objects, each representing a schema object in the dump
|
|
|
28
28
|
```json
|
|
29
29
|
[
|
|
30
30
|
{
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
31
|
+
"header": {
|
|
32
|
+
"Name": "bar",
|
|
33
|
+
"Owner": "postgres",
|
|
34
|
+
"Schema": "public",
|
|
35
|
+
"Type": "TABLE"
|
|
36
|
+
},
|
|
37
|
+
"sql": "CREATE TABLE public.bar (\n id integer NOT NULL,\n uid text NOT NULL,\n foo_id integer\n);"
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
"header": {
|
|
41
|
+
"Name": "bar",
|
|
42
|
+
"Owner": "postgres",
|
|
43
|
+
"Schema": "public",
|
|
44
|
+
"Type": "TABLE"
|
|
45
|
+
},
|
|
46
|
+
"sql": "ALTER TABLE public.bar OWNER TO postgres;"
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
"header": {
|
|
50
|
+
"Name": "bar_id_seq",
|
|
51
|
+
"Owner": "postgres",
|
|
52
|
+
"Schema": "public",
|
|
53
|
+
"Type": "SEQUENCE"
|
|
54
|
+
},
|
|
55
|
+
"sql": "ALTER TABLE public.bar ALTER COLUMN id ADD GENERATED ALWAYS AS IDENTITY (\n SEQUENCE NAME public.bar_id_seq\n START WITH 1\n INCREMENT BY 1\n NO MINVALUE\n NO MAXVALUE\n CACHE 1\n);"
|
|
56
56
|
}
|
|
57
57
|
]
|
|
58
58
|
```
|
|
@@ -92,7 +92,7 @@ const schemaObjectScope = groupSchemaObjects(schemaObjects);
|
|
|
92
92
|
}
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
> [!
|
|
95
|
+
> [!WARNING]
|
|
96
96
|
> The implementation behind `groupSchemaObjects` is _super_ scrappy. It relies on a lot of pattern matching. Use at your own risk.
|
|
97
97
|
|
|
98
98
|
## Alternatives
|
package/dist/parsePgDump.test.js
CHANGED
|
@@ -90,6 +90,13 @@ $$;
|
|
|
90
90
|
|
|
91
91
|
ALTER FUNCTION public.add_two_numbers(a integer, b integer) OWNER TO postgres;
|
|
92
92
|
|
|
93
|
+
--
|
|
94
|
+
-- Name: FUNCTION add_two_numbers(a integer, b integer); Type: COMMENT; Schema: public; Owner: postgres
|
|
95
|
+
--
|
|
96
|
+
|
|
97
|
+
COMMENT ON FUNCTION public.add_two_numbers(a integer, b integer) IS 'Function comment x';
|
|
98
|
+
|
|
99
|
+
|
|
93
100
|
--
|
|
94
101
|
-- Name: notify_foo_insert(); Type: FUNCTION; Schema: public; Owner: postgres
|
|
95
102
|
--
|
|
@@ -121,6 +128,13 @@ $$;
|
|
|
121
128
|
|
|
122
129
|
ALTER PROCEDURE public.say_hello(IN name_param character varying) OWNER TO postgres;
|
|
123
130
|
|
|
131
|
+
--
|
|
132
|
+
-- Name: PROCEDURE say_hello(IN name_param character varying); Type: COMMENT; Schema: public; Owner: postgres
|
|
133
|
+
--
|
|
134
|
+
|
|
135
|
+
COMMENT ON PROCEDURE public.say_hello(IN name_param character varying) IS 'Procedure comment x';
|
|
136
|
+
|
|
137
|
+
|
|
124
138
|
--
|
|
125
139
|
-- Name: my_sum(integer); Type: AGGREGATE; Schema: public; Owner: postgres
|
|
126
140
|
--
|
|
@@ -133,6 +147,13 @@ CREATE AGGREGATE public.my_sum(integer) (
|
|
|
133
147
|
|
|
134
148
|
ALTER AGGREGATE public.my_sum(integer) OWNER TO postgres;
|
|
135
149
|
|
|
150
|
+
--
|
|
151
|
+
-- Name: AGGREGATE my_sum(integer); Type: COMMENT; Schema: public; Owner: postgres
|
|
152
|
+
--
|
|
153
|
+
|
|
154
|
+
COMMENT ON AGGREGATE public.my_sum(integer) IS 'Aggregate comment x';
|
|
155
|
+
|
|
156
|
+
|
|
136
157
|
SET default_tablespace = '';
|
|
137
158
|
|
|
138
159
|
SET default_table_access_method = heap;
|
|
@@ -348,14 +369,16 @@ GRANT SELECT(name) ON TABLE public.foo TO postgres;
|
|
|
348
369
|
-- PostgreSQL database dump complete
|
|
349
370
|
--
|
|
350
371
|
`;
|
|
351
|
-
const omit = (object, keys) =>
|
|
372
|
+
const omit = (object, keys) =>
|
|
373
|
+
// @ts-expect-error - Object.fromEntries is not typed
|
|
374
|
+
Object.fromEntries(Object.entries(object).filter(([key]) => !keys.includes(key)));
|
|
352
375
|
const expectSchemeObject = (expectedSchemaObject) => {
|
|
353
376
|
const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
|
|
354
377
|
(0, vitest_1.expect)(schemaObjects).toContainEqual(omit(expectedSchemaObject, ['scope']));
|
|
355
378
|
if (typeof expectedSchemaObject.scope === 'undefined') {
|
|
356
379
|
return;
|
|
357
380
|
}
|
|
358
|
-
(0, vitest_1.expect)((0, scopeSchemaObject_1.scopeSchemaObject)(schemaObjects, expectedSchemaObject)).toEqual(expectedSchemaObject.scope);
|
|
381
|
+
(0, vitest_1.expect)((0, scopeSchemaObject_1.scopeSchemaObject)(schemaObjects, omit(expectedSchemaObject, ['scope']))).toEqual(expectedSchemaObject.scope);
|
|
359
382
|
};
|
|
360
383
|
(0, vitest_1.test)('extracts SEQUENCE', async () => {
|
|
361
384
|
expectSchemeObject({
|
|
@@ -512,6 +535,60 @@ const expectSchemeObject = (expectedSchemaObject) => {
|
|
|
512
535
|
`,
|
|
513
536
|
});
|
|
514
537
|
});
|
|
538
|
+
(0, vitest_1.test)('extracts COMMENT on FUNCTION', async () => {
|
|
539
|
+
expectSchemeObject({
|
|
540
|
+
header: {
|
|
541
|
+
Name: 'FUNCTION add_two_numbers(a integer, b integer)',
|
|
542
|
+
Owner: 'postgres',
|
|
543
|
+
Schema: 'public',
|
|
544
|
+
Type: 'COMMENT',
|
|
545
|
+
},
|
|
546
|
+
scope: {
|
|
547
|
+
name: 'add_two_numbers',
|
|
548
|
+
schema: 'public',
|
|
549
|
+
type: 'FUNCTION',
|
|
550
|
+
},
|
|
551
|
+
sql: (0, multiline_ts_1.default) `
|
|
552
|
+
COMMENT ON FUNCTION public.add_two_numbers(a integer, b integer) IS 'Function comment x';
|
|
553
|
+
`,
|
|
554
|
+
});
|
|
555
|
+
});
|
|
556
|
+
(0, vitest_1.test)('extracts COMMENT on AGGREGATE', async () => {
|
|
557
|
+
expectSchemeObject({
|
|
558
|
+
header: {
|
|
559
|
+
Name: 'AGGREGATE my_sum(integer)',
|
|
560
|
+
Owner: 'postgres',
|
|
561
|
+
Schema: 'public',
|
|
562
|
+
Type: 'COMMENT',
|
|
563
|
+
},
|
|
564
|
+
scope: {
|
|
565
|
+
name: 'my_sum',
|
|
566
|
+
schema: 'public',
|
|
567
|
+
type: 'AGGREGATE',
|
|
568
|
+
},
|
|
569
|
+
sql: (0, multiline_ts_1.default) `
|
|
570
|
+
COMMENT ON AGGREGATE public.my_sum(integer) IS 'Aggregate comment x';
|
|
571
|
+
`,
|
|
572
|
+
});
|
|
573
|
+
});
|
|
574
|
+
(0, vitest_1.test)('extracts COMMENT on PROCEDURE', async () => {
|
|
575
|
+
expectSchemeObject({
|
|
576
|
+
header: {
|
|
577
|
+
Name: 'PROCEDURE say_hello(IN name_param character varying)',
|
|
578
|
+
Owner: 'postgres',
|
|
579
|
+
Schema: 'public',
|
|
580
|
+
Type: 'COMMENT',
|
|
581
|
+
},
|
|
582
|
+
scope: {
|
|
583
|
+
name: 'say_hello',
|
|
584
|
+
schema: 'public',
|
|
585
|
+
type: 'PROCEDURE',
|
|
586
|
+
},
|
|
587
|
+
sql: (0, multiline_ts_1.default) `
|
|
588
|
+
COMMENT ON PROCEDURE public.say_hello(IN name_param character varying) IS 'Procedure comment x';
|
|
589
|
+
`,
|
|
590
|
+
});
|
|
591
|
+
});
|
|
515
592
|
(0, vitest_1.test)('extracts PUBLICATION', async () => {
|
|
516
593
|
expectSchemeObject({
|
|
517
594
|
header: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsePgDump.test.js","sourceRoot":"","sources":["../src/parsePgDump.test.ts"],"names":[],"mappings":";;;;;AACA,+CAA4C;AAC5C,2DAAgF;AAChF,gEAAqC;AACrC,mCAAsC;AAEtC,MAAM,IAAI,GAAG,IAAA,sBAAS,EAAA
|
|
1
|
+
{"version":3,"file":"parsePgDump.test.js","sourceRoot":"","sources":["../src/parsePgDump.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scopeSchemaObject.d.ts","sourceRoot":"","sources":["../src/scopeSchemaObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"scopeSchemaObject.d.ts","sourceRoot":"","sources":["../src/scopeSchemaObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAyKzE,MAAM,MAAM,iBAAiB,GACzB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;CACnB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EACA,WAAW,GACX,UAAU,GACV,mBAAmB,GACnB,WAAW,GACX,OAAO,GACP,MAAM,GACN,MAAM,CAAC;CACZ,CAAC;AAkRN,eAAO,MAAM,iBAAiB,kBACb,YAAY,EAAE,WACpB,YAAY,KACpB,iBAAiB,GAAG,IAatB,CAAC"}
|
|
@@ -86,9 +86,19 @@ const extractAlterTableTarget = (fragment) => {
|
|
|
86
86
|
schema,
|
|
87
87
|
};
|
|
88
88
|
};
|
|
89
|
+
const extractFunctionLikeName = (fragment) => {
|
|
90
|
+
var _a, _b;
|
|
91
|
+
const { name } = (_b = (_a = fragment.match(
|
|
92
|
+
// eslint-disable-next-line unicorn/no-unsafe-regex
|
|
93
|
+
/(?:AGGREGATE|FUNCTION|PROCEDURE)\s+(?:(?<schema>\S+)\.)?(?<name>\w+)\s*\(/u)) === null || _a === void 0 ? void 0 : _a.groups) !== null && _b !== void 0 ? _b : {};
|
|
94
|
+
if (!name) {
|
|
95
|
+
throw new Error('Invalid FUNCTION name');
|
|
96
|
+
}
|
|
97
|
+
return name;
|
|
98
|
+
};
|
|
89
99
|
const extractCommentOnTarget = (fragment) => {
|
|
90
100
|
var _a, _b;
|
|
91
|
-
const { target, type } = (_b = (_a = fragment.match(/COMMENT ON (?<type>
|
|
101
|
+
const { target, type } = (_b = (_a = fragment.match(/COMMENT ON (?<type>AGGREGATE|COLUMN|EXTENSION|FUNCTION|INDEX|PROCEDURE|SEQUENCE|TABLE|TYPE)\s(?<target>.+?) IS/u)) === null || _a === void 0 ? void 0 : _a.groups) !== null && _b !== void 0 ? _b : {};
|
|
92
102
|
if (!target) {
|
|
93
103
|
throw new Error('Invalid COMMENT ON target (missing target)');
|
|
94
104
|
}
|
|
@@ -102,7 +112,7 @@ const extractCommentOnTarget = (fragment) => {
|
|
|
102
112
|
};
|
|
103
113
|
// eslint-disable-next-line complexity
|
|
104
114
|
const scopeAttributedSchemaObject = (schemaObjects, subject) => {
|
|
105
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
115
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
106
116
|
if (subject.header.Type === 'FUNCTION') {
|
|
107
117
|
return {
|
|
108
118
|
name: subject.header.Name.split('(')[0],
|
|
@@ -272,6 +282,27 @@ const scopeAttributedSchemaObject = (schemaObjects, subject) => {
|
|
|
272
282
|
type: 'TYPE',
|
|
273
283
|
};
|
|
274
284
|
}
|
|
285
|
+
if (target.type === 'FUNCTION') {
|
|
286
|
+
return {
|
|
287
|
+
name: extractFunctionLikeName(subject.header.Name),
|
|
288
|
+
schema: (_h = subject.header.Schema) !== null && _h !== void 0 ? _h : 'public',
|
|
289
|
+
type: 'FUNCTION',
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
if (target.type === 'AGGREGATE') {
|
|
293
|
+
return {
|
|
294
|
+
name: extractFunctionLikeName(subject.header.Name),
|
|
295
|
+
schema: (_j = subject.header.Schema) !== null && _j !== void 0 ? _j : 'public',
|
|
296
|
+
type: 'AGGREGATE',
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
if (target.type === 'PROCEDURE') {
|
|
300
|
+
return {
|
|
301
|
+
name: extractFunctionLikeName(subject.header.Name),
|
|
302
|
+
schema: (_k = subject.header.Schema) !== null && _k !== void 0 ? _k : 'public',
|
|
303
|
+
type: 'PROCEDURE',
|
|
304
|
+
};
|
|
305
|
+
}
|
|
275
306
|
}
|
|
276
307
|
try {
|
|
277
308
|
const target = extractOwnedByTarget(subject.sql);
|
|
@@ -281,7 +312,7 @@ const scopeAttributedSchemaObject = (schemaObjects, subject) => {
|
|
|
281
312
|
type: 'TABLE',
|
|
282
313
|
};
|
|
283
314
|
}
|
|
284
|
-
catch (
|
|
315
|
+
catch (_l) {
|
|
285
316
|
// ignore
|
|
286
317
|
}
|
|
287
318
|
try {
|
|
@@ -292,7 +323,7 @@ const scopeAttributedSchemaObject = (schemaObjects, subject) => {
|
|
|
292
323
|
type: 'TABLE',
|
|
293
324
|
};
|
|
294
325
|
}
|
|
295
|
-
catch (
|
|
326
|
+
catch (_m) {
|
|
296
327
|
// ignore
|
|
297
328
|
}
|
|
298
329
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scopeSchemaObject.js","sourceRoot":"","sources":["../src/scopeSchemaObject.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"scopeSchemaObject.js","sourceRoot":"","sources":["../src/scopeSchemaObject.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/parsePgDump.test.ts
CHANGED
|
@@ -87,6 +87,13 @@ $$;
|
|
|
87
87
|
|
|
88
88
|
ALTER FUNCTION public.add_two_numbers(a integer, b integer) OWNER TO postgres;
|
|
89
89
|
|
|
90
|
+
--
|
|
91
|
+
-- Name: FUNCTION add_two_numbers(a integer, b integer); Type: COMMENT; Schema: public; Owner: postgres
|
|
92
|
+
--
|
|
93
|
+
|
|
94
|
+
COMMENT ON FUNCTION public.add_two_numbers(a integer, b integer) IS 'Function comment x';
|
|
95
|
+
|
|
96
|
+
|
|
90
97
|
--
|
|
91
98
|
-- Name: notify_foo_insert(); Type: FUNCTION; Schema: public; Owner: postgres
|
|
92
99
|
--
|
|
@@ -118,6 +125,13 @@ $$;
|
|
|
118
125
|
|
|
119
126
|
ALTER PROCEDURE public.say_hello(IN name_param character varying) OWNER TO postgres;
|
|
120
127
|
|
|
128
|
+
--
|
|
129
|
+
-- Name: PROCEDURE say_hello(IN name_param character varying); Type: COMMENT; Schema: public; Owner: postgres
|
|
130
|
+
--
|
|
131
|
+
|
|
132
|
+
COMMENT ON PROCEDURE public.say_hello(IN name_param character varying) IS 'Procedure comment x';
|
|
133
|
+
|
|
134
|
+
|
|
121
135
|
--
|
|
122
136
|
-- Name: my_sum(integer); Type: AGGREGATE; Schema: public; Owner: postgres
|
|
123
137
|
--
|
|
@@ -130,6 +144,13 @@ CREATE AGGREGATE public.my_sum(integer) (
|
|
|
130
144
|
|
|
131
145
|
ALTER AGGREGATE public.my_sum(integer) OWNER TO postgres;
|
|
132
146
|
|
|
147
|
+
--
|
|
148
|
+
-- Name: AGGREGATE my_sum(integer); Type: COMMENT; Schema: public; Owner: postgres
|
|
149
|
+
--
|
|
150
|
+
|
|
151
|
+
COMMENT ON AGGREGATE public.my_sum(integer) IS 'Aggregate comment x';
|
|
152
|
+
|
|
153
|
+
|
|
133
154
|
SET default_tablespace = '';
|
|
134
155
|
|
|
135
156
|
SET default_table_access_method = heap;
|
|
@@ -346,7 +367,11 @@ GRANT SELECT(name) ON TABLE public.foo TO postgres;
|
|
|
346
367
|
--
|
|
347
368
|
`;
|
|
348
369
|
|
|
349
|
-
const omit = <T extends Record<string, unknown>>(
|
|
370
|
+
const omit = <T extends Record<string, unknown>>(
|
|
371
|
+
object: T,
|
|
372
|
+
keys: string[],
|
|
373
|
+
): T =>
|
|
374
|
+
// @ts-expect-error - Object.fromEntries is not typed
|
|
350
375
|
Object.fromEntries(
|
|
351
376
|
Object.entries(object).filter(([key]) => !keys.includes(key)),
|
|
352
377
|
);
|
|
@@ -362,9 +387,9 @@ const expectSchemeObject = (
|
|
|
362
387
|
return;
|
|
363
388
|
}
|
|
364
389
|
|
|
365
|
-
expect(
|
|
366
|
-
expectedSchemaObject
|
|
367
|
-
);
|
|
390
|
+
expect(
|
|
391
|
+
scopeSchemaObject(schemaObjects, omit(expectedSchemaObject, ['scope'])),
|
|
392
|
+
).toEqual(expectedSchemaObject.scope);
|
|
368
393
|
};
|
|
369
394
|
|
|
370
395
|
test('extracts SEQUENCE', async () => {
|
|
@@ -530,6 +555,63 @@ test('extracts COMMENT on TYPE', async () => {
|
|
|
530
555
|
});
|
|
531
556
|
});
|
|
532
557
|
|
|
558
|
+
test('extracts COMMENT on FUNCTION', async () => {
|
|
559
|
+
expectSchemeObject({
|
|
560
|
+
header: {
|
|
561
|
+
Name: 'FUNCTION add_two_numbers(a integer, b integer)',
|
|
562
|
+
Owner: 'postgres',
|
|
563
|
+
Schema: 'public',
|
|
564
|
+
Type: 'COMMENT',
|
|
565
|
+
},
|
|
566
|
+
scope: {
|
|
567
|
+
name: 'add_two_numbers',
|
|
568
|
+
schema: 'public',
|
|
569
|
+
type: 'FUNCTION',
|
|
570
|
+
},
|
|
571
|
+
sql: multiline`
|
|
572
|
+
COMMENT ON FUNCTION public.add_two_numbers(a integer, b integer) IS 'Function comment x';
|
|
573
|
+
`,
|
|
574
|
+
});
|
|
575
|
+
});
|
|
576
|
+
|
|
577
|
+
test('extracts COMMENT on AGGREGATE', async () => {
|
|
578
|
+
expectSchemeObject({
|
|
579
|
+
header: {
|
|
580
|
+
Name: 'AGGREGATE my_sum(integer)',
|
|
581
|
+
Owner: 'postgres',
|
|
582
|
+
Schema: 'public',
|
|
583
|
+
Type: 'COMMENT',
|
|
584
|
+
},
|
|
585
|
+
scope: {
|
|
586
|
+
name: 'my_sum',
|
|
587
|
+
schema: 'public',
|
|
588
|
+
type: 'AGGREGATE',
|
|
589
|
+
},
|
|
590
|
+
sql: multiline`
|
|
591
|
+
COMMENT ON AGGREGATE public.my_sum(integer) IS 'Aggregate comment x';
|
|
592
|
+
`,
|
|
593
|
+
});
|
|
594
|
+
});
|
|
595
|
+
|
|
596
|
+
test('extracts COMMENT on PROCEDURE', async () => {
|
|
597
|
+
expectSchemeObject({
|
|
598
|
+
header: {
|
|
599
|
+
Name: 'PROCEDURE say_hello(IN name_param character varying)',
|
|
600
|
+
Owner: 'postgres',
|
|
601
|
+
Schema: 'public',
|
|
602
|
+
Type: 'COMMENT',
|
|
603
|
+
},
|
|
604
|
+
scope: {
|
|
605
|
+
name: 'say_hello',
|
|
606
|
+
schema: 'public',
|
|
607
|
+
type: 'PROCEDURE',
|
|
608
|
+
},
|
|
609
|
+
sql: multiline`
|
|
610
|
+
COMMENT ON PROCEDURE public.say_hello(IN name_param character varying) IS 'Procedure comment x';
|
|
611
|
+
`,
|
|
612
|
+
});
|
|
613
|
+
});
|
|
614
|
+
|
|
533
615
|
test('extracts PUBLICATION', async () => {
|
|
534
616
|
expectSchemeObject({
|
|
535
617
|
header: {
|
package/src/scopeSchemaObject.ts
CHANGED
|
@@ -119,15 +119,38 @@ const extractAlterTableTarget = (fragment: string): TableTarget => {
|
|
|
119
119
|
};
|
|
120
120
|
};
|
|
121
121
|
|
|
122
|
+
const extractFunctionLikeName = (fragment: string): string => {
|
|
123
|
+
const { name } =
|
|
124
|
+
fragment.match(
|
|
125
|
+
// eslint-disable-next-line unicorn/no-unsafe-regex
|
|
126
|
+
/(?:AGGREGATE|FUNCTION|PROCEDURE)\s+(?:(?<schema>\S+)\.)?(?<name>\w+)\s*\(/u,
|
|
127
|
+
)?.groups ?? {};
|
|
128
|
+
|
|
129
|
+
if (!name) {
|
|
130
|
+
throw new Error('Invalid FUNCTION name');
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return name;
|
|
134
|
+
};
|
|
135
|
+
|
|
122
136
|
type CommentOnTarget = {
|
|
123
137
|
target: string;
|
|
124
|
-
type:
|
|
138
|
+
type:
|
|
139
|
+
| 'AGGREGATE'
|
|
140
|
+
| 'COLUMN'
|
|
141
|
+
| 'EXTENSION'
|
|
142
|
+
| 'FUNCTION'
|
|
143
|
+
| 'INDEX'
|
|
144
|
+
| 'PROCEDURE'
|
|
145
|
+
| 'SEQUENCE'
|
|
146
|
+
| 'TABLE'
|
|
147
|
+
| 'TYPE';
|
|
125
148
|
};
|
|
126
149
|
|
|
127
150
|
const extractCommentOnTarget = (fragment: string): CommentOnTarget => {
|
|
128
151
|
const { target, type } =
|
|
129
152
|
fragment.match(
|
|
130
|
-
/COMMENT ON (?<type>
|
|
153
|
+
/COMMENT ON (?<type>AGGREGATE|COLUMN|EXTENSION|FUNCTION|INDEX|PROCEDURE|SEQUENCE|TABLE|TYPE)\s(?<target>.+?) IS/u,
|
|
131
154
|
)?.groups ?? {};
|
|
132
155
|
|
|
133
156
|
if (!target) {
|
|
@@ -382,6 +405,30 @@ const scopeAttributedSchemaObject = (
|
|
|
382
405
|
type: 'TYPE',
|
|
383
406
|
};
|
|
384
407
|
}
|
|
408
|
+
|
|
409
|
+
if (target.type === 'FUNCTION') {
|
|
410
|
+
return {
|
|
411
|
+
name: extractFunctionLikeName(subject.header.Name),
|
|
412
|
+
schema: subject.header.Schema ?? 'public',
|
|
413
|
+
type: 'FUNCTION',
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
if (target.type === 'AGGREGATE') {
|
|
418
|
+
return {
|
|
419
|
+
name: extractFunctionLikeName(subject.header.Name),
|
|
420
|
+
schema: subject.header.Schema ?? 'public',
|
|
421
|
+
type: 'AGGREGATE',
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
if (target.type === 'PROCEDURE') {
|
|
426
|
+
return {
|
|
427
|
+
name: extractFunctionLikeName(subject.header.Name),
|
|
428
|
+
schema: subject.header.Schema ?? 'public',
|
|
429
|
+
type: 'PROCEDURE',
|
|
430
|
+
};
|
|
431
|
+
}
|
|
385
432
|
}
|
|
386
433
|
|
|
387
434
|
try {
|