pg-dump-parser 1.0.3 → 1.1.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 +38 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/parsePgDump.d.ts +27 -2
- package/dist/parsePgDump.d.ts.map +1 -1
- package/dist/parsePgDump.js +43 -41
- package/dist/parsePgDump.js.map +1 -1
- package/dist/parsePgDump.test.js +146 -56
- package/dist/parsePgDump.test.js.map +1 -1
- package/dist/scopeSchemaObject.d.ts +12 -0
- package/dist/scopeSchemaObject.d.ts.map +1 -0
- package/dist/scopeSchemaObject.js +298 -0
- package/dist/scopeSchemaObject.js.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +8 -0
- package/src/parsePgDump.test.ts +158 -78
- package/src/parsePgDump.ts +49 -43
- package/src/scopeSchemaObject.ts +418 -0
package/dist/parsePgDump.test.js
CHANGED
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const parsePgDump_1 = require("./parsePgDump");
|
|
7
|
+
const scopeSchemaObject_1 = require("./scopeSchemaObject");
|
|
7
8
|
const multiline_ts_1 = __importDefault(require("multiline-ts"));
|
|
8
9
|
const vitest_1 = require("vitest");
|
|
9
10
|
const dump = (0, multiline_ts_1.default) `
|
|
@@ -333,36 +334,53 @@ GRANT SELECT(name) ON TABLE public.foo TO postgres;
|
|
|
333
334
|
-- PostgreSQL database dump complete
|
|
334
335
|
--
|
|
335
336
|
`;
|
|
336
|
-
(
|
|
337
|
+
const omit = (object, keys) => Object.fromEntries(Object.entries(object).filter(([key]) => !keys.includes(key)));
|
|
338
|
+
const expectSchemeObject = (expectedSchemaObject) => {
|
|
337
339
|
const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
|
|
338
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual(
|
|
340
|
+
(0, vitest_1.expect)(schemaObjects).toContainEqual(omit(expectedSchemaObject, ['scope']));
|
|
341
|
+
if (typeof expectedSchemaObject.scope === 'undefined') {
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
(0, vitest_1.expect)((0, scopeSchemaObject_1.scopeSchemaObject)(schemaObjects, expectedSchemaObject)).toEqual(expectedSchemaObject.scope);
|
|
345
|
+
};
|
|
346
|
+
(0, vitest_1.test)('extracts SEQUENCE', async () => {
|
|
347
|
+
expectSchemeObject({
|
|
339
348
|
header: {
|
|
340
349
|
Name: 'bar_id_seq',
|
|
341
350
|
Owner: 'postgres',
|
|
342
351
|
Schema: 'public',
|
|
343
352
|
Type: 'SEQUENCE',
|
|
344
353
|
},
|
|
354
|
+
scope: {
|
|
355
|
+
name: 'bar',
|
|
356
|
+
schema: 'public',
|
|
357
|
+
type: 'TABLE',
|
|
358
|
+
},
|
|
345
359
|
sql: (0, multiline_ts_1.default) `
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
360
|
+
ALTER TABLE public.bar ALTER COLUMN id ADD GENERATED ALWAYS AS IDENTITY (
|
|
361
|
+
SEQUENCE NAME public.bar_id_seq
|
|
362
|
+
START WITH 1
|
|
363
|
+
INCREMENT BY 1
|
|
364
|
+
NO MINVALUE
|
|
365
|
+
NO MAXVALUE
|
|
366
|
+
CACHE 1
|
|
367
|
+
);
|
|
368
|
+
`,
|
|
355
369
|
});
|
|
356
370
|
});
|
|
357
371
|
(0, vitest_1.test)('extracts TABLE', async () => {
|
|
358
|
-
|
|
359
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
372
|
+
expectSchemeObject({
|
|
360
373
|
header: {
|
|
361
374
|
Name: 'foo',
|
|
362
375
|
Owner: 'postgres',
|
|
363
376
|
Schema: 'public',
|
|
364
377
|
Type: 'TABLE',
|
|
365
378
|
},
|
|
379
|
+
scope: {
|
|
380
|
+
name: 'foo',
|
|
381
|
+
schema: 'public',
|
|
382
|
+
type: 'TABLE',
|
|
383
|
+
},
|
|
366
384
|
sql: (0, multiline_ts_1.default) `
|
|
367
385
|
CREATE TABLE public.foo (
|
|
368
386
|
id integer NOT NULL,
|
|
@@ -372,14 +390,18 @@ GRANT SELECT(name) ON TABLE public.foo TO postgres;
|
|
|
372
390
|
});
|
|
373
391
|
});
|
|
374
392
|
(0, vitest_1.test)('extracts CONSTRAINT', async () => {
|
|
375
|
-
|
|
376
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
393
|
+
expectSchemeObject({
|
|
377
394
|
header: {
|
|
378
395
|
Name: 'foo foo_pkey',
|
|
379
396
|
Owner: 'postgres',
|
|
380
397
|
Schema: 'public',
|
|
381
398
|
Type: 'CONSTRAINT',
|
|
382
399
|
},
|
|
400
|
+
scope: {
|
|
401
|
+
name: 'foo',
|
|
402
|
+
schema: 'public',
|
|
403
|
+
type: 'TABLE',
|
|
404
|
+
},
|
|
383
405
|
sql: (0, multiline_ts_1.default) `
|
|
384
406
|
ALTER TABLE ONLY public.foo
|
|
385
407
|
ADD CONSTRAINT foo_pkey PRIMARY KEY (id);
|
|
@@ -387,98 +409,118 @@ GRANT SELECT(name) ON TABLE public.foo TO postgres;
|
|
|
387
409
|
});
|
|
388
410
|
});
|
|
389
411
|
(0, vitest_1.test)('extracts COMMENT on TABLE', async () => {
|
|
390
|
-
|
|
391
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
412
|
+
expectSchemeObject({
|
|
392
413
|
header: {
|
|
393
414
|
Name: 'TABLE foo',
|
|
394
415
|
Owner: 'postgres',
|
|
395
416
|
Schema: 'public',
|
|
396
417
|
Type: 'COMMENT',
|
|
397
418
|
},
|
|
419
|
+
scope: {
|
|
420
|
+
name: 'foo',
|
|
421
|
+
schema: 'public',
|
|
422
|
+
type: 'TABLE',
|
|
423
|
+
},
|
|
398
424
|
sql: (0, multiline_ts_1.default) `
|
|
399
425
|
COMMENT ON TABLE public.foo IS 'Table comment x';
|
|
400
426
|
`,
|
|
401
427
|
});
|
|
402
428
|
});
|
|
403
429
|
(0, vitest_1.test)('extracts COMMENT on COLUMN', async () => {
|
|
404
|
-
|
|
405
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
430
|
+
expectSchemeObject({
|
|
406
431
|
header: {
|
|
407
432
|
Name: 'COLUMN foo.id',
|
|
408
433
|
Owner: 'postgres',
|
|
409
434
|
Schema: 'public',
|
|
410
435
|
Type: 'COMMENT',
|
|
411
436
|
},
|
|
437
|
+
scope: {
|
|
438
|
+
name: 'foo',
|
|
439
|
+
schema: 'public',
|
|
440
|
+
type: 'TABLE',
|
|
441
|
+
},
|
|
412
442
|
sql: (0, multiline_ts_1.default) `
|
|
413
443
|
COMMENT ON COLUMN public.foo.id IS 'Column comment x';
|
|
414
444
|
`,
|
|
415
445
|
});
|
|
416
446
|
});
|
|
417
447
|
(0, vitest_1.test)('extracts COMMENT on INDEX', async () => {
|
|
418
|
-
|
|
419
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
448
|
+
expectSchemeObject({
|
|
420
449
|
header: {
|
|
421
450
|
Name: 'INDEX foo_pkey',
|
|
422
451
|
Owner: 'postgres',
|
|
423
452
|
Schema: 'public',
|
|
424
453
|
Type: 'COMMENT',
|
|
425
454
|
},
|
|
455
|
+
scope: {
|
|
456
|
+
name: 'foo',
|
|
457
|
+
schema: 'public',
|
|
458
|
+
type: 'TABLE',
|
|
459
|
+
},
|
|
426
460
|
sql: (0, multiline_ts_1.default) `
|
|
427
461
|
COMMENT ON INDEX public.foo_pkey IS 'Index comment x';
|
|
428
462
|
`,
|
|
429
463
|
});
|
|
430
464
|
});
|
|
431
465
|
(0, vitest_1.test)('extracts COMMENT on SEQUENCE', async () => {
|
|
432
|
-
|
|
433
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
466
|
+
expectSchemeObject({
|
|
434
467
|
header: {
|
|
435
468
|
Name: 'SEQUENCE foo_id_seq',
|
|
436
469
|
Owner: 'postgres',
|
|
437
470
|
Schema: 'public',
|
|
438
471
|
Type: 'COMMENT',
|
|
439
472
|
},
|
|
473
|
+
scope: {
|
|
474
|
+
name: 'foo',
|
|
475
|
+
schema: 'public',
|
|
476
|
+
type: 'TABLE',
|
|
477
|
+
},
|
|
440
478
|
sql: (0, multiline_ts_1.default) `
|
|
441
479
|
COMMENT ON SEQUENCE public.foo_id_seq IS 'Sequence comment x';
|
|
442
480
|
`,
|
|
443
481
|
});
|
|
444
482
|
});
|
|
445
483
|
(0, vitest_1.test)('extracts PUBLICATION', async () => {
|
|
446
|
-
|
|
447
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
484
|
+
expectSchemeObject({
|
|
448
485
|
header: {
|
|
449
486
|
Name: 'foo_publication',
|
|
450
487
|
Owner: 'postgres',
|
|
451
488
|
Schema: null,
|
|
452
489
|
Type: 'PUBLICATION',
|
|
453
490
|
},
|
|
491
|
+
scope: null,
|
|
454
492
|
sql: (0, multiline_ts_1.default) `
|
|
455
493
|
CREATE PUBLICATION foo_publication FOR ALL TABLES WITH (publish = 'insert, update, delete');
|
|
456
494
|
`,
|
|
457
495
|
});
|
|
458
496
|
});
|
|
459
497
|
(0, vitest_1.test)('extracts SCHEMA', async () => {
|
|
460
|
-
|
|
461
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
498
|
+
expectSchemeObject({
|
|
462
499
|
header: {
|
|
463
500
|
Name: 'quux',
|
|
464
501
|
Owner: 'postgres',
|
|
465
502
|
Schema: null,
|
|
466
503
|
Type: 'SCHEMA',
|
|
467
504
|
},
|
|
505
|
+
scope: null,
|
|
468
506
|
sql: (0, multiline_ts_1.default) `
|
|
469
507
|
CREATE SCHEMA quux;
|
|
470
508
|
`,
|
|
471
509
|
});
|
|
472
510
|
});
|
|
473
511
|
(0, vitest_1.test)('extracts VIEW', async () => {
|
|
474
|
-
|
|
475
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
512
|
+
expectSchemeObject({
|
|
476
513
|
header: {
|
|
477
514
|
Name: 'baz',
|
|
478
515
|
Owner: 'postgres',
|
|
479
516
|
Schema: 'public',
|
|
480
517
|
Type: 'VIEW',
|
|
481
518
|
},
|
|
519
|
+
scope: {
|
|
520
|
+
name: 'baz',
|
|
521
|
+
schema: 'public',
|
|
522
|
+
type: 'VIEW',
|
|
523
|
+
},
|
|
482
524
|
sql: (0, multiline_ts_1.default) `
|
|
483
525
|
CREATE VIEW public.baz AS
|
|
484
526
|
SELECT id,
|
|
@@ -488,14 +530,18 @@ GRANT SELECT(name) ON TABLE public.foo TO postgres;
|
|
|
488
530
|
});
|
|
489
531
|
});
|
|
490
532
|
(0, vitest_1.test)('extracts MATERIALIZED VIEW', async () => {
|
|
491
|
-
|
|
492
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
533
|
+
expectSchemeObject({
|
|
493
534
|
header: {
|
|
494
535
|
Name: 'qux',
|
|
495
536
|
Owner: 'postgres',
|
|
496
537
|
Schema: 'public',
|
|
497
538
|
Type: 'MATERIALIZED VIEW',
|
|
498
539
|
},
|
|
540
|
+
scope: {
|
|
541
|
+
name: 'qux',
|
|
542
|
+
schema: 'public',
|
|
543
|
+
type: 'MATERIALIZED VIEW',
|
|
544
|
+
},
|
|
499
545
|
sql: (0, multiline_ts_1.default) `
|
|
500
546
|
CREATE MATERIALIZED VIEW public.qux AS
|
|
501
547
|
SELECT id,
|
|
@@ -506,14 +552,18 @@ GRANT SELECT(name) ON TABLE public.foo TO postgres;
|
|
|
506
552
|
});
|
|
507
553
|
});
|
|
508
554
|
(0, vitest_1.test)('extracts FUNCTION', async () => {
|
|
509
|
-
|
|
510
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
555
|
+
expectSchemeObject({
|
|
511
556
|
header: {
|
|
512
557
|
Name: 'add_two_numbers(integer, integer)',
|
|
513
558
|
Owner: 'postgres',
|
|
514
559
|
Schema: 'public',
|
|
515
560
|
Type: 'FUNCTION',
|
|
516
561
|
},
|
|
562
|
+
scope: {
|
|
563
|
+
name: 'add_two_numbers',
|
|
564
|
+
schema: 'public',
|
|
565
|
+
type: 'FUNCTION',
|
|
566
|
+
},
|
|
517
567
|
sql: (0, multiline_ts_1.default) `
|
|
518
568
|
CREATE FUNCTION public.add_two_numbers(a integer, b integer) RETURNS integer
|
|
519
569
|
LANGUAGE plpgsql
|
|
@@ -526,14 +576,18 @@ GRANT SELECT(name) ON TABLE public.foo TO postgres;
|
|
|
526
576
|
});
|
|
527
577
|
});
|
|
528
578
|
(0, vitest_1.test)('extracts PROCEDURE', async () => {
|
|
529
|
-
|
|
530
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
579
|
+
expectSchemeObject({
|
|
531
580
|
header: {
|
|
532
581
|
Name: 'say_hello(character varying)',
|
|
533
582
|
Owner: 'postgres',
|
|
534
583
|
Schema: 'public',
|
|
535
584
|
Type: 'PROCEDURE',
|
|
536
585
|
},
|
|
586
|
+
scope: {
|
|
587
|
+
name: 'say_hello',
|
|
588
|
+
schema: 'public',
|
|
589
|
+
type: 'PROCEDURE',
|
|
590
|
+
},
|
|
537
591
|
sql: (0, multiline_ts_1.default) `
|
|
538
592
|
CREATE PROCEDURE public.say_hello(IN name_param character varying)
|
|
539
593
|
LANGUAGE plpgsql
|
|
@@ -546,28 +600,36 @@ GRANT SELECT(name) ON TABLE public.foo TO postgres;
|
|
|
546
600
|
});
|
|
547
601
|
});
|
|
548
602
|
(0, vitest_1.test)('extracts TRIGGER', async () => {
|
|
549
|
-
|
|
550
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
603
|
+
expectSchemeObject({
|
|
551
604
|
header: {
|
|
552
605
|
Name: 'foo foo_insert_trigger',
|
|
553
606
|
Owner: 'postgres',
|
|
554
607
|
Schema: 'public',
|
|
555
608
|
Type: 'TRIGGER',
|
|
556
609
|
},
|
|
610
|
+
scope: {
|
|
611
|
+
name: 'foo',
|
|
612
|
+
schema: 'public',
|
|
613
|
+
type: 'TABLE',
|
|
614
|
+
},
|
|
557
615
|
sql: (0, multiline_ts_1.default) `
|
|
558
616
|
CREATE TRIGGER foo_insert_trigger AFTER INSERT ON public.foo FOR EACH ROW EXECUTE FUNCTION public.notify_foo_insert();
|
|
559
617
|
`,
|
|
560
618
|
});
|
|
561
619
|
});
|
|
562
620
|
(0, vitest_1.test)('extracts TYPE', async () => {
|
|
563
|
-
|
|
564
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
621
|
+
expectSchemeObject({
|
|
565
622
|
header: {
|
|
566
623
|
Name: 'status',
|
|
567
624
|
Owner: 'postgres',
|
|
568
625
|
Schema: 'public',
|
|
569
626
|
Type: 'TYPE',
|
|
570
627
|
},
|
|
628
|
+
scope: {
|
|
629
|
+
name: 'status',
|
|
630
|
+
schema: 'public',
|
|
631
|
+
type: 'TYPE',
|
|
632
|
+
},
|
|
571
633
|
sql: (0, multiline_ts_1.default) `
|
|
572
634
|
CREATE TYPE public.status AS ENUM (
|
|
573
635
|
'ACTIVE',
|
|
@@ -577,14 +639,18 @@ GRANT SELECT(name) ON TABLE public.foo TO postgres;
|
|
|
577
639
|
});
|
|
578
640
|
});
|
|
579
641
|
(0, vitest_1.test)('extracts AGGREGATE', async () => {
|
|
580
|
-
|
|
581
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
642
|
+
expectSchemeObject({
|
|
582
643
|
header: {
|
|
583
644
|
Name: 'my_sum(integer)',
|
|
584
645
|
Owner: 'postgres',
|
|
585
646
|
Schema: 'public',
|
|
586
647
|
Type: 'AGGREGATE',
|
|
587
648
|
},
|
|
649
|
+
scope: {
|
|
650
|
+
name: 'my_sum',
|
|
651
|
+
schema: 'public',
|
|
652
|
+
type: 'AGGREGATE',
|
|
653
|
+
},
|
|
588
654
|
sql: (0, multiline_ts_1.default) `
|
|
589
655
|
CREATE AGGREGATE public.my_sum(integer) (
|
|
590
656
|
SFUNC = public.add_two_numbers,
|
|
@@ -594,14 +660,18 @@ GRANT SELECT(name) ON TABLE public.foo TO postgres;
|
|
|
594
660
|
});
|
|
595
661
|
});
|
|
596
662
|
(0, vitest_1.test)('extracts FK CONSTRAINT', async () => {
|
|
597
|
-
|
|
598
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
663
|
+
expectSchemeObject({
|
|
599
664
|
header: {
|
|
600
665
|
Name: 'bar bar_foo_id_fkey',
|
|
601
666
|
Owner: 'postgres',
|
|
602
667
|
Schema: 'public',
|
|
603
668
|
Type: 'FK CONSTRAINT',
|
|
604
669
|
},
|
|
670
|
+
scope: {
|
|
671
|
+
name: 'bar',
|
|
672
|
+
schema: 'public',
|
|
673
|
+
type: 'TABLE',
|
|
674
|
+
},
|
|
605
675
|
sql: (0, multiline_ts_1.default) `
|
|
606
676
|
ALTER TABLE ONLY public.bar
|
|
607
677
|
ADD CONSTRAINT bar_foo_id_fkey FOREIGN KEY (foo_id) REFERENCES public.foo(id) ON DELETE CASCADE;
|
|
@@ -609,84 +679,104 @@ GRANT SELECT(name) ON TABLE public.foo TO postgres;
|
|
|
609
679
|
});
|
|
610
680
|
});
|
|
611
681
|
(0, vitest_1.test)('extracts INDEX', async () => {
|
|
612
|
-
|
|
613
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
682
|
+
expectSchemeObject({
|
|
614
683
|
header: {
|
|
615
684
|
Name: 'bar_uid_idx',
|
|
616
685
|
Owner: 'postgres',
|
|
617
686
|
Schema: 'public',
|
|
618
687
|
Type: 'INDEX',
|
|
619
688
|
},
|
|
689
|
+
scope: {
|
|
690
|
+
name: 'bar',
|
|
691
|
+
schema: 'public',
|
|
692
|
+
type: 'TABLE',
|
|
693
|
+
},
|
|
620
694
|
sql: (0, multiline_ts_1.default) `
|
|
621
695
|
CREATE UNIQUE INDEX bar_uid_idx ON public.bar USING btree (uid);
|
|
622
696
|
`,
|
|
623
697
|
});
|
|
624
698
|
});
|
|
625
699
|
(0, vitest_1.test)('extracts CAST', async () => {
|
|
626
|
-
|
|
627
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
700
|
+
expectSchemeObject({
|
|
628
701
|
header: {
|
|
629
702
|
Name: 'CAST (text AS integer)',
|
|
630
703
|
Owner: null,
|
|
631
704
|
Schema: null,
|
|
632
705
|
Type: 'CAST',
|
|
633
706
|
},
|
|
707
|
+
scope: null,
|
|
634
708
|
sql: (0, multiline_ts_1.default) `
|
|
635
709
|
CREATE CAST (text AS integer) WITH INOUT AS IMPLICIT;
|
|
636
710
|
`,
|
|
637
711
|
});
|
|
638
712
|
});
|
|
639
713
|
(0, vitest_1.test)('extracts EXTENSION', async () => {
|
|
640
|
-
|
|
641
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
714
|
+
expectSchemeObject({
|
|
642
715
|
header: {
|
|
643
716
|
Name: 'pgcrypto',
|
|
644
717
|
Owner: null,
|
|
645
718
|
Schema: null,
|
|
646
719
|
Type: 'EXTENSION',
|
|
647
720
|
},
|
|
721
|
+
scope: {
|
|
722
|
+
name: 'pgcrypto',
|
|
723
|
+
schema: null,
|
|
724
|
+
type: 'EXTENSION',
|
|
725
|
+
},
|
|
648
726
|
sql: (0, multiline_ts_1.default) `
|
|
649
727
|
CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA public;
|
|
650
728
|
`,
|
|
651
729
|
});
|
|
652
730
|
});
|
|
653
|
-
(0, vitest_1.test)('extracts ACL', async () => {
|
|
654
|
-
|
|
655
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
731
|
+
(0, vitest_1.test)('extracts ACL (ON TABLE)', async () => {
|
|
732
|
+
expectSchemeObject({
|
|
656
733
|
header: {
|
|
657
734
|
Name: 'COLUMN foo.name',
|
|
658
735
|
Owner: 'postgres',
|
|
659
736
|
Schema: 'public',
|
|
660
737
|
Type: 'ACL',
|
|
661
738
|
},
|
|
739
|
+
scope: {
|
|
740
|
+
name: 'foo',
|
|
741
|
+
schema: 'public',
|
|
742
|
+
type: 'TABLE',
|
|
743
|
+
},
|
|
662
744
|
sql: (0, multiline_ts_1.default) `
|
|
663
745
|
GRANT SELECT(name) ON TABLE public.foo TO postgres;
|
|
664
746
|
`,
|
|
665
747
|
});
|
|
666
748
|
});
|
|
667
749
|
(0, vitest_1.test)('extracts DEFAULT', async () => {
|
|
668
|
-
|
|
669
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
750
|
+
expectSchemeObject({
|
|
670
751
|
header: {
|
|
671
752
|
Name: 'corge id',
|
|
672
753
|
Owner: 'postgres',
|
|
673
754
|
Schema: 'public',
|
|
674
755
|
Type: 'DEFAULT',
|
|
675
756
|
},
|
|
757
|
+
scope: {
|
|
758
|
+
name: 'corge',
|
|
759
|
+
schema: 'public',
|
|
760
|
+
type: 'TABLE',
|
|
761
|
+
},
|
|
676
762
|
sql: (0, multiline_ts_1.default) `
|
|
677
763
|
ALTER TABLE ONLY public.corge ALTER COLUMN id SET DEFAULT nextval('public.corge_id_seq'::regclass);
|
|
678
764
|
`,
|
|
679
765
|
});
|
|
680
766
|
});
|
|
681
767
|
(0, vitest_1.test)('extracts SEQUENCE OWNED BY', async () => {
|
|
682
|
-
|
|
683
|
-
(0, vitest_1.expect)(schemaObjects).toContainEqual({
|
|
768
|
+
expectSchemeObject({
|
|
684
769
|
header: {
|
|
685
770
|
Name: 'corge_id_seq',
|
|
686
771
|
Owner: 'postgres',
|
|
687
772
|
Schema: 'public',
|
|
688
773
|
Type: 'SEQUENCE OWNED BY',
|
|
689
774
|
},
|
|
775
|
+
scope: {
|
|
776
|
+
name: 'corge',
|
|
777
|
+
schema: 'public',
|
|
778
|
+
type: 'TABLE',
|
|
779
|
+
},
|
|
690
780
|
sql: (0, multiline_ts_1.default) `
|
|
691
781
|
ALTER SEQUENCE public.corge_id_seq OWNED BY public.corge.id;
|
|
692
782
|
`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsePgDump.test.js","sourceRoot":"","sources":["../src/parsePgDump.test.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"parsePgDump.test.js","sourceRoot":"","sources":["../src/parsePgDump.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type SchemaObject } from './parsePgDump';
|
|
2
|
+
export type SchemaObjectScope = {
|
|
3
|
+
name: string;
|
|
4
|
+
schema: null;
|
|
5
|
+
type: 'EXTENSION';
|
|
6
|
+
} | {
|
|
7
|
+
name: string;
|
|
8
|
+
schema: string;
|
|
9
|
+
type: 'AGGREGATE' | 'FUNCTION' | 'MATERIALIZED VIEW' | 'PROCEDURE' | 'TABLE' | 'TYPE' | 'VIEW';
|
|
10
|
+
};
|
|
11
|
+
export declare const scopeSchemaObject: (schemaObjects: SchemaObject[], subject: SchemaObject) => SchemaObjectScope | null;
|
|
12
|
+
//# sourceMappingURL=scopeSchemaObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scopeSchemaObject.d.ts","sourceRoot":"","sources":["../src/scopeSchemaObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAkJzE,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;AA8ON,eAAO,MAAM,iBAAiB,kBACb,YAAY,EAAE,WACpB,YAAY,KACpB,iBAAiB,GAAG,IAatB,CAAC"}
|