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.
- package/LICENSE +24 -0
- package/README.md +63 -0
- package/dist/parsePgDump.d.ts +36 -0
- package/dist/parsePgDump.d.ts.map +1 -0
- package/dist/parsePgDump.js +111 -0
- package/dist/parsePgDump.js.map +1 -0
- package/dist/parsePgDump.test.d.ts +2 -0
- package/dist/parsePgDump.test.d.ts.map +1 -0
- package/dist/parsePgDump.test.js +695 -0
- package/dist/parsePgDump.test.js.map +1 -0
- package/package.json +60 -0
- package/src/parsePgDump.test.ts +736 -0
- package/src/parsePgDump.ts +143 -0
|
@@ -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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"}
|