pg-dump-parser 1.0.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.
@@ -0,0 +1,695 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const parsePgDump_1 = require("./parsePgDump");
7
+ const multiline_ts_1 = __importDefault(require("multiline-ts"));
8
+ const vitest_1 = require("vitest");
9
+ const dump = (0, multiline_ts_1.default) `
10
+ --
11
+ -- PostgreSQL database dump
12
+ --
13
+
14
+ -- Dumped from database version 16.2 (Debian 16.2-1.pgdg120+2)
15
+ -- Dumped by pg_dump version 16.2 (Debian 16.2-1.pgdg120+2)
16
+
17
+ SET statement_timeout = 0;
18
+ SET lock_timeout = 0;
19
+ SET idle_in_transaction_session_timeout = 0;
20
+ SET client_encoding = 'UTF8';
21
+ SET standard_conforming_strings = on;
22
+ SELECT pg_catalog.set_config('search_path', '', false);
23
+ SET check_function_bodies = false;
24
+ SET xmloption = content;
25
+ SET client_min_messages = warning;
26
+ SET row_security = off;
27
+
28
+ --
29
+ -- Name: quux; Type: SCHEMA; Schema: -; Owner: postgres
30
+ --
31
+
32
+ CREATE SCHEMA quux;
33
+
34
+
35
+ ALTER SCHEMA quux OWNER TO postgres;
36
+
37
+ --
38
+ -- Name: pgcrypto; Type: EXTENSION; Schema: -; Owner: -
39
+ --
40
+
41
+ CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA public;
42
+
43
+
44
+ --
45
+ -- Name: EXTENSION pgcrypto; Type: COMMENT; Schema: -; Owner:
46
+ --
47
+
48
+ COMMENT ON EXTENSION pgcrypto IS 'cryptographic functions';
49
+
50
+
51
+ --
52
+ -- Name: status; Type: TYPE; Schema: public; Owner: postgres
53
+ --
54
+
55
+ CREATE TYPE public.status AS ENUM (
56
+ 'ACTIVE',
57
+ 'INACTIVE'
58
+ );
59
+
60
+
61
+ ALTER TYPE public.status OWNER TO postgres;
62
+
63
+ --
64
+ -- Name: CAST (text AS integer); Type: CAST; Schema: -; Owner: -
65
+ --
66
+
67
+ CREATE CAST (text AS integer) WITH INOUT AS IMPLICIT;
68
+
69
+
70
+ --
71
+ -- Name: add_two_numbers(integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
72
+ --
73
+
74
+ CREATE FUNCTION public.add_two_numbers(a integer, b integer) RETURNS integer
75
+ LANGUAGE plpgsql
76
+ AS $$
77
+ BEGIN
78
+ RETURN a + b;
79
+ END;
80
+ $$;
81
+
82
+
83
+ ALTER FUNCTION public.add_two_numbers(a integer, b integer) OWNER TO postgres;
84
+
85
+ --
86
+ -- Name: notify_foo_insert(); Type: FUNCTION; Schema: public; Owner: postgres
87
+ --
88
+
89
+ CREATE FUNCTION public.notify_foo_insert() RETURNS trigger
90
+ LANGUAGE plpgsql
91
+ AS $$
92
+ BEGIN
93
+ RAISE NOTICE 'A new row was inserted into the foo table with id: %', NEW.id;
94
+ RETURN NEW;
95
+ END;
96
+ $$;
97
+
98
+
99
+ ALTER FUNCTION public.notify_foo_insert() OWNER TO postgres;
100
+
101
+ --
102
+ -- Name: say_hello(character varying); Type: PROCEDURE; Schema: public; Owner: postgres
103
+ --
104
+
105
+ CREATE PROCEDURE public.say_hello(IN name_param character varying)
106
+ LANGUAGE plpgsql
107
+ AS $$
108
+ BEGIN
109
+ RAISE NOTICE 'Hello, %!', name_param;
110
+ END;
111
+ $$;
112
+
113
+
114
+ ALTER PROCEDURE public.say_hello(IN name_param character varying) OWNER TO postgres;
115
+
116
+ --
117
+ -- Name: my_sum(integer); Type: AGGREGATE; Schema: public; Owner: postgres
118
+ --
119
+
120
+ CREATE AGGREGATE public.my_sum(integer) (
121
+ SFUNC = public.add_two_numbers,
122
+ STYPE = integer
123
+ );
124
+
125
+
126
+ ALTER AGGREGATE public.my_sum(integer) OWNER TO postgres;
127
+
128
+ SET default_tablespace = '';
129
+
130
+ SET default_table_access_method = heap;
131
+
132
+ --
133
+ -- Name: bar; Type: TABLE; Schema: public; Owner: postgres
134
+ --
135
+
136
+ CREATE TABLE public.bar (
137
+ id integer NOT NULL,
138
+ uid text NOT NULL,
139
+ foo_id integer
140
+ );
141
+
142
+
143
+ ALTER TABLE public.bar OWNER TO postgres;
144
+
145
+ --
146
+ -- Name: bar_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
147
+ --
148
+
149
+ ALTER TABLE public.bar ALTER COLUMN id ADD GENERATED ALWAYS AS IDENTITY (
150
+ SEQUENCE NAME public.bar_id_seq
151
+ START WITH 1
152
+ INCREMENT BY 1
153
+ NO MINVALUE
154
+ NO MAXVALUE
155
+ CACHE 1
156
+ );
157
+
158
+
159
+ --
160
+ -- Name: baz; Type: VIEW; Schema: public; Owner: postgres
161
+ --
162
+
163
+ CREATE VIEW public.baz AS
164
+ SELECT id,
165
+ uid AS name
166
+ FROM public.bar;
167
+
168
+
169
+ ALTER VIEW public.baz OWNER TO postgres;
170
+
171
+ --
172
+ -- Name: corge; Type: TABLE; Schema: public; Owner: postgres
173
+ --
174
+
175
+ CREATE TABLE public.corge (
176
+ id integer,
177
+ name text
178
+ );
179
+
180
+
181
+ ALTER TABLE public.corge OWNER TO postgres;
182
+
183
+ --
184
+ -- Name: corge_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
185
+ --
186
+
187
+ CREATE SEQUENCE public.corge_id_seq
188
+ START WITH 1000
189
+ INCREMENT BY 1
190
+ NO MINVALUE
191
+ NO MAXVALUE
192
+ CACHE 1;
193
+
194
+
195
+ ALTER SEQUENCE public.corge_id_seq OWNER TO postgres;
196
+
197
+ --
198
+ -- Name: corge_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
199
+ --
200
+
201
+ ALTER SEQUENCE public.corge_id_seq OWNED BY public.corge.id;
202
+
203
+
204
+ --
205
+ -- Name: foo; Type: TABLE; Schema: public; Owner: postgres
206
+ --
207
+
208
+ CREATE TABLE public.foo (
209
+ id integer NOT NULL,
210
+ name text NOT NULL
211
+ );
212
+
213
+
214
+ ALTER TABLE public.foo OWNER TO postgres;
215
+
216
+ --
217
+ -- Name: TABLE foo; Type: COMMENT; Schema: public; Owner: postgres
218
+ --
219
+
220
+ COMMENT ON TABLE public.foo IS 'Table comment x';
221
+
222
+
223
+ --
224
+ -- Name: COLUMN foo.id; Type: COMMENT; Schema: public; Owner: postgres
225
+ --
226
+
227
+ COMMENT ON COLUMN public.foo.id IS 'Column comment x';
228
+
229
+
230
+ --
231
+ -- Name: foo_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
232
+ --
233
+
234
+ ALTER TABLE public.foo ALTER COLUMN id ADD GENERATED ALWAYS AS IDENTITY (
235
+ SEQUENCE NAME public.foo_id_seq
236
+ START WITH 1
237
+ INCREMENT BY 1
238
+ NO MINVALUE
239
+ NO MAXVALUE
240
+ CACHE 1
241
+ );
242
+
243
+
244
+ --
245
+ -- Name: SEQUENCE foo_id_seq; Type: COMMENT; Schema: public; Owner: postgres
246
+ --
247
+
248
+ COMMENT ON SEQUENCE public.foo_id_seq IS 'Sequence comment x';
249
+
250
+
251
+ --
252
+ -- Name: qux; Type: MATERIALIZED VIEW; Schema: public; Owner: postgres
253
+ --
254
+
255
+ CREATE MATERIALIZED VIEW public.qux AS
256
+ SELECT id,
257
+ uid AS name
258
+ FROM public.bar
259
+ WITH NO DATA;
260
+
261
+
262
+ ALTER MATERIALIZED VIEW public.qux OWNER TO postgres;
263
+
264
+ --
265
+ -- Name: corge id; Type: DEFAULT; Schema: public; Owner: postgres
266
+ --
267
+
268
+ ALTER TABLE ONLY public.corge ALTER COLUMN id SET DEFAULT nextval('public.corge_id_seq'::regclass);
269
+
270
+
271
+ --
272
+ -- Name: bar bar_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
273
+ --
274
+
275
+ ALTER TABLE ONLY public.bar
276
+ ADD CONSTRAINT bar_pkey PRIMARY KEY (id);
277
+
278
+
279
+ --
280
+ -- Name: foo foo_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
281
+ --
282
+
283
+ ALTER TABLE ONLY public.foo
284
+ ADD CONSTRAINT foo_pkey PRIMARY KEY (id);
285
+
286
+
287
+ --
288
+ -- Name: bar_uid_idx; Type: INDEX; Schema: public; Owner: postgres
289
+ --
290
+
291
+ CREATE UNIQUE INDEX bar_uid_idx ON public.bar USING btree (uid);
292
+
293
+
294
+ --
295
+ -- Name: INDEX foo_pkey; Type: COMMENT; Schema: public; Owner: postgres
296
+ --
297
+
298
+ COMMENT ON INDEX public.foo_pkey IS 'Index comment x';
299
+
300
+
301
+ --
302
+ -- Name: foo foo_insert_trigger; Type: TRIGGER; Schema: public; Owner: postgres
303
+ --
304
+
305
+ CREATE TRIGGER foo_insert_trigger AFTER INSERT ON public.foo FOR EACH ROW EXECUTE FUNCTION public.notify_foo_insert();
306
+
307
+
308
+ --
309
+ -- Name: bar bar_foo_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
310
+ --
311
+
312
+ ALTER TABLE ONLY public.bar
313
+ ADD CONSTRAINT bar_foo_id_fkey FOREIGN KEY (foo_id) REFERENCES public.foo(id) ON DELETE CASCADE;
314
+
315
+
316
+ --
317
+ -- Name: foo_publication; Type: PUBLICATION; Schema: -; Owner: postgres
318
+ --
319
+
320
+ CREATE PUBLICATION foo_publication FOR ALL TABLES WITH (publish = 'insert, update, delete');
321
+
322
+
323
+ ALTER PUBLICATION foo_publication OWNER TO postgres;
324
+
325
+ --
326
+ -- Name: COLUMN foo.name; Type: ACL; Schema: public; Owner: postgres
327
+ --
328
+
329
+ GRANT SELECT(name) ON TABLE public.foo TO postgres;
330
+
331
+
332
+ --
333
+ -- PostgreSQL database dump complete
334
+ --
335
+ `;
336
+ (0, vitest_1.test)('extracts SEQUENCE', async () => {
337
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
338
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
339
+ header: {
340
+ Name: 'bar_id_seq',
341
+ Owner: 'postgres',
342
+ Schema: 'public',
343
+ Type: 'SEQUENCE',
344
+ },
345
+ sql: (0, multiline_ts_1.default) `
346
+ ALTER TABLE public.bar ALTER COLUMN id ADD GENERATED ALWAYS AS IDENTITY (
347
+ SEQUENCE NAME public.bar_id_seq
348
+ START WITH 1
349
+ INCREMENT BY 1
350
+ NO MINVALUE
351
+ NO MAXVALUE
352
+ CACHE 1
353
+ );
354
+ `,
355
+ });
356
+ });
357
+ (0, vitest_1.test)('extracts TABLE', async () => {
358
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
359
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
360
+ header: {
361
+ Name: 'foo',
362
+ Owner: 'postgres',
363
+ Schema: 'public',
364
+ Type: 'TABLE',
365
+ },
366
+ sql: (0, multiline_ts_1.default) `
367
+ CREATE TABLE public.foo (
368
+ id integer NOT NULL,
369
+ name text NOT NULL
370
+ );
371
+ `,
372
+ });
373
+ });
374
+ (0, vitest_1.test)('extracts CONSTRAINT', async () => {
375
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
376
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
377
+ header: {
378
+ Name: 'foo foo_pkey',
379
+ Owner: 'postgres',
380
+ Schema: 'public',
381
+ Type: 'CONSTRAINT',
382
+ },
383
+ sql: (0, multiline_ts_1.default) `
384
+ ALTER TABLE ONLY public.foo
385
+ ADD CONSTRAINT foo_pkey PRIMARY KEY (id);
386
+ `,
387
+ });
388
+ });
389
+ (0, vitest_1.test)('extracts COMMENT on TABLE', async () => {
390
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
391
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
392
+ header: {
393
+ Name: 'TABLE foo',
394
+ Owner: 'postgres',
395
+ Schema: 'public',
396
+ Type: 'COMMENT',
397
+ },
398
+ sql: (0, multiline_ts_1.default) `
399
+ COMMENT ON TABLE public.foo IS 'Table comment x';
400
+ `,
401
+ });
402
+ });
403
+ (0, vitest_1.test)('extracts COMMENT on COLUMN', async () => {
404
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
405
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
406
+ header: {
407
+ Name: 'COLUMN foo.id',
408
+ Owner: 'postgres',
409
+ Schema: 'public',
410
+ Type: 'COMMENT',
411
+ },
412
+ sql: (0, multiline_ts_1.default) `
413
+ COMMENT ON COLUMN public.foo.id IS 'Column comment x';
414
+ `,
415
+ });
416
+ });
417
+ (0, vitest_1.test)('extracts COMMENT on INDEX', async () => {
418
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
419
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
420
+ header: {
421
+ Name: 'INDEX foo_pkey',
422
+ Owner: 'postgres',
423
+ Schema: 'public',
424
+ Type: 'COMMENT',
425
+ },
426
+ sql: (0, multiline_ts_1.default) `
427
+ COMMENT ON INDEX public.foo_pkey IS 'Index comment x';
428
+ `,
429
+ });
430
+ });
431
+ (0, vitest_1.test)('extracts COMMENT on SEQUENCE', async () => {
432
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
433
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
434
+ header: {
435
+ Name: 'SEQUENCE foo_id_seq',
436
+ Owner: 'postgres',
437
+ Schema: 'public',
438
+ Type: 'COMMENT',
439
+ },
440
+ sql: (0, multiline_ts_1.default) `
441
+ COMMENT ON SEQUENCE public.foo_id_seq IS 'Sequence comment x';
442
+ `,
443
+ });
444
+ });
445
+ (0, vitest_1.test)('extracts PUBLICATION', async () => {
446
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
447
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
448
+ header: {
449
+ Name: 'foo_publication',
450
+ Owner: 'postgres',
451
+ Schema: null,
452
+ Type: 'PUBLICATION',
453
+ },
454
+ sql: (0, multiline_ts_1.default) `
455
+ CREATE PUBLICATION foo_publication FOR ALL TABLES WITH (publish = 'insert, update, delete');
456
+ `,
457
+ });
458
+ });
459
+ (0, vitest_1.test)('extracts SCHEMA', async () => {
460
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
461
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
462
+ header: {
463
+ Name: 'quux',
464
+ Owner: 'postgres',
465
+ Schema: null,
466
+ Type: 'SCHEMA',
467
+ },
468
+ sql: (0, multiline_ts_1.default) `
469
+ CREATE SCHEMA quux;
470
+ `,
471
+ });
472
+ });
473
+ (0, vitest_1.test)('extracts VIEW', async () => {
474
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
475
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
476
+ header: {
477
+ Name: 'baz',
478
+ Owner: 'postgres',
479
+ Schema: 'public',
480
+ Type: 'VIEW',
481
+ },
482
+ sql: (0, multiline_ts_1.default) `
483
+ CREATE VIEW public.baz AS
484
+ SELECT id,
485
+ uid AS name
486
+ FROM public.bar;
487
+ `,
488
+ });
489
+ });
490
+ (0, vitest_1.test)('extracts MATERIALIZED VIEW', async () => {
491
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
492
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
493
+ header: {
494
+ Name: 'qux',
495
+ Owner: 'postgres',
496
+ Schema: 'public',
497
+ Type: 'MATERIALIZED VIEW',
498
+ },
499
+ sql: (0, multiline_ts_1.default) `
500
+ CREATE MATERIALIZED VIEW public.qux AS
501
+ SELECT id,
502
+ uid AS name
503
+ FROM public.bar
504
+ WITH NO DATA;
505
+ `,
506
+ });
507
+ });
508
+ (0, vitest_1.test)('extracts FUNCTION', async () => {
509
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
510
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
511
+ header: {
512
+ Name: 'add_two_numbers(integer, integer)',
513
+ Owner: 'postgres',
514
+ Schema: 'public',
515
+ Type: 'FUNCTION',
516
+ },
517
+ sql: (0, multiline_ts_1.default) `
518
+ CREATE FUNCTION public.add_two_numbers(a integer, b integer) RETURNS integer
519
+ LANGUAGE plpgsql
520
+ AS $$
521
+ BEGIN
522
+ RETURN a + b;
523
+ END;
524
+ $$;
525
+ `,
526
+ });
527
+ });
528
+ (0, vitest_1.test)('extracts PROCEDURE', async () => {
529
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
530
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
531
+ header: {
532
+ Name: 'say_hello(character varying)',
533
+ Owner: 'postgres',
534
+ Schema: 'public',
535
+ Type: 'PROCEDURE',
536
+ },
537
+ sql: (0, multiline_ts_1.default) `
538
+ CREATE PROCEDURE public.say_hello(IN name_param character varying)
539
+ LANGUAGE plpgsql
540
+ AS $$
541
+ BEGIN
542
+ RAISE NOTICE 'Hello, %!', name_param;
543
+ END;
544
+ $$;
545
+ `,
546
+ });
547
+ });
548
+ (0, vitest_1.test)('extracts TRIGGER', async () => {
549
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
550
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
551
+ header: {
552
+ Name: 'foo foo_insert_trigger',
553
+ Owner: 'postgres',
554
+ Schema: 'public',
555
+ Type: 'TRIGGER',
556
+ },
557
+ sql: (0, multiline_ts_1.default) `
558
+ CREATE TRIGGER foo_insert_trigger AFTER INSERT ON public.foo FOR EACH ROW EXECUTE FUNCTION public.notify_foo_insert();
559
+ `,
560
+ });
561
+ });
562
+ (0, vitest_1.test)('extracts TYPE', async () => {
563
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
564
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
565
+ header: {
566
+ Name: 'status',
567
+ Owner: 'postgres',
568
+ Schema: 'public',
569
+ Type: 'TYPE',
570
+ },
571
+ sql: (0, multiline_ts_1.default) `
572
+ CREATE TYPE public.status AS ENUM (
573
+ 'ACTIVE',
574
+ 'INACTIVE'
575
+ );
576
+ `,
577
+ });
578
+ });
579
+ (0, vitest_1.test)('extracts AGGREGATE', async () => {
580
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
581
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
582
+ header: {
583
+ Name: 'my_sum(integer)',
584
+ Owner: 'postgres',
585
+ Schema: 'public',
586
+ Type: 'AGGREGATE',
587
+ },
588
+ sql: (0, multiline_ts_1.default) `
589
+ CREATE AGGREGATE public.my_sum(integer) (
590
+ SFUNC = public.add_two_numbers,
591
+ STYPE = integer
592
+ );
593
+ `,
594
+ });
595
+ });
596
+ (0, vitest_1.test)('extracts FK CONSTRAINT', async () => {
597
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
598
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
599
+ header: {
600
+ Name: 'bar bar_foo_id_fkey',
601
+ Owner: 'postgres',
602
+ Schema: 'public',
603
+ Type: 'FK CONSTRAINT',
604
+ },
605
+ sql: (0, multiline_ts_1.default) `
606
+ ALTER TABLE ONLY public.bar
607
+ ADD CONSTRAINT bar_foo_id_fkey FOREIGN KEY (foo_id) REFERENCES public.foo(id) ON DELETE CASCADE;
608
+ `,
609
+ });
610
+ });
611
+ (0, vitest_1.test)('extracts INDEX', async () => {
612
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
613
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
614
+ header: {
615
+ Name: 'bar_uid_idx',
616
+ Owner: 'postgres',
617
+ Schema: 'public',
618
+ Type: 'INDEX',
619
+ },
620
+ sql: (0, multiline_ts_1.default) `
621
+ CREATE UNIQUE INDEX bar_uid_idx ON public.bar USING btree (uid);
622
+ `,
623
+ });
624
+ });
625
+ (0, vitest_1.test)('extracts CAST', async () => {
626
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
627
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
628
+ header: {
629
+ Name: 'CAST (text AS integer)',
630
+ Owner: null,
631
+ Schema: null,
632
+ Type: 'CAST',
633
+ },
634
+ sql: (0, multiline_ts_1.default) `
635
+ CREATE CAST (text AS integer) WITH INOUT AS IMPLICIT;
636
+ `,
637
+ });
638
+ });
639
+ (0, vitest_1.test)('extracts EXTENSION', async () => {
640
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
641
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
642
+ header: {
643
+ Name: 'pgcrypto',
644
+ Owner: null,
645
+ Schema: null,
646
+ Type: 'EXTENSION',
647
+ },
648
+ sql: (0, multiline_ts_1.default) `
649
+ CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA public;
650
+ `,
651
+ });
652
+ });
653
+ (0, vitest_1.test)('extracts ACL', async () => {
654
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
655
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
656
+ header: {
657
+ Name: 'COLUMN foo.name',
658
+ Owner: 'postgres',
659
+ Schema: 'public',
660
+ Type: 'ACL',
661
+ },
662
+ sql: (0, multiline_ts_1.default) `
663
+ GRANT SELECT(name) ON TABLE public.foo TO postgres;
664
+ `,
665
+ });
666
+ });
667
+ (0, vitest_1.test)('extracts DEFAULT', async () => {
668
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
669
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
670
+ header: {
671
+ Name: 'corge id',
672
+ Owner: 'postgres',
673
+ Schema: 'public',
674
+ Type: 'DEFAULT',
675
+ },
676
+ sql: (0, multiline_ts_1.default) `
677
+ ALTER TABLE ONLY public.corge ALTER COLUMN id SET DEFAULT nextval('public.corge_id_seq'::regclass);
678
+ `,
679
+ });
680
+ });
681
+ (0, vitest_1.test)('extracts SEQUENCE OWNED BY', async () => {
682
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
683
+ (0, vitest_1.expect)(schemaObjects).toContainEqual({
684
+ header: {
685
+ Name: 'corge_id_seq',
686
+ Owner: 'postgres',
687
+ Schema: 'public',
688
+ Type: 'SEQUENCE OWNED BY',
689
+ },
690
+ sql: (0, multiline_ts_1.default) `
691
+ ALTER SEQUENCE public.corge_id_seq OWNED BY public.corge.id;
692
+ `,
693
+ });
694
+ });
695
+ //# sourceMappingURL=parsePgDump.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsePgDump.test.js","sourceRoot":"","sources":["../src/parsePgDump.test.ts"],"names":[],"mappings":"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"}