meadow-connection-postgresql 1.0.0 → 1.0.2
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 +133 -0
- package/docker-compose.yml +20 -0
- package/docs/.nojekyll +0 -0
- package/docs/README.md +96 -0
- package/docs/_cover.md +17 -0
- package/docs/_sidebar.md +33 -0
- package/docs/_topbar.md +5 -0
- package/docs/api/connect.md +100 -0
- package/docs/api/connectAsync.md +92 -0
- package/docs/api/createTable.md +116 -0
- package/docs/api/createTables.md +128 -0
- package/docs/api/generateCreateTableStatement.md +136 -0
- package/docs/api/generateDropTableStatement.md +71 -0
- package/docs/api/pool.md +171 -0
- package/docs/api/reference.md +112 -0
- package/docs/api.md +3 -0
- package/docs/architecture.md +168 -0
- package/docs/css/docuserve.css +73 -0
- package/docs/index.html +39 -0
- package/docs/quickstart.md +181 -0
- package/docs/retold-catalog.json +62 -0
- package/docs/retold-keyword-index.json +4964 -0
- package/docs/schema.md +148 -0
- package/package.json +5 -2
- package/source/Meadow-Connection-PostgreSQL.js +79 -99
- package/source/Meadow-Schema-PostgreSQL.js +1048 -0
- package/start-postgresql.sh +21 -0
- package/stop-postgresql.sh +9 -0
- package/test/PostgreSQL_tests.js +865 -1
- package/test/docker-init/01-chinook-schema.sql +177 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
-- Chinook music store schema for introspection testing
|
|
2
|
+
-- Based on https://github.com/lerocha/chinook-database
|
|
3
|
+
|
|
4
|
+
-- [ Artist ]
|
|
5
|
+
CREATE TABLE artist
|
|
6
|
+
(
|
|
7
|
+
artist_id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
|
|
8
|
+
name VARCHAR(120),
|
|
9
|
+
CONSTRAINT artist_pkey PRIMARY KEY (artist_id)
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
-- [ Album ]
|
|
13
|
+
CREATE TABLE album
|
|
14
|
+
(
|
|
15
|
+
album_id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
|
|
16
|
+
title VARCHAR(160) NOT NULL,
|
|
17
|
+
artist_id INT NOT NULL,
|
|
18
|
+
CONSTRAINT album_pkey PRIMARY KEY (album_id)
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
-- [ Employee ]
|
|
22
|
+
CREATE TABLE employee
|
|
23
|
+
(
|
|
24
|
+
employee_id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
|
|
25
|
+
last_name VARCHAR(20) NOT NULL,
|
|
26
|
+
first_name VARCHAR(20) NOT NULL,
|
|
27
|
+
title VARCHAR(30),
|
|
28
|
+
reports_to INT,
|
|
29
|
+
birth_date TIMESTAMP,
|
|
30
|
+
hire_date TIMESTAMP,
|
|
31
|
+
address VARCHAR(70),
|
|
32
|
+
city VARCHAR(40),
|
|
33
|
+
state VARCHAR(40),
|
|
34
|
+
country VARCHAR(40),
|
|
35
|
+
postal_code VARCHAR(10),
|
|
36
|
+
phone VARCHAR(24),
|
|
37
|
+
fax VARCHAR(24),
|
|
38
|
+
email VARCHAR(60),
|
|
39
|
+
CONSTRAINT employee_pkey PRIMARY KEY (employee_id)
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
-- [ Customer ]
|
|
43
|
+
CREATE TABLE customer
|
|
44
|
+
(
|
|
45
|
+
customer_id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
|
|
46
|
+
first_name VARCHAR(40) NOT NULL,
|
|
47
|
+
last_name VARCHAR(20) NOT NULL,
|
|
48
|
+
company VARCHAR(80),
|
|
49
|
+
address VARCHAR(70),
|
|
50
|
+
city VARCHAR(40),
|
|
51
|
+
state VARCHAR(40),
|
|
52
|
+
country VARCHAR(40),
|
|
53
|
+
postal_code VARCHAR(10),
|
|
54
|
+
phone VARCHAR(24),
|
|
55
|
+
fax VARCHAR(24),
|
|
56
|
+
email VARCHAR(60) NOT NULL,
|
|
57
|
+
support_rep_id INT,
|
|
58
|
+
CONSTRAINT customer_pkey PRIMARY KEY (customer_id)
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
-- [ Genre ]
|
|
62
|
+
CREATE TABLE genre
|
|
63
|
+
(
|
|
64
|
+
genre_id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
|
|
65
|
+
name VARCHAR(120),
|
|
66
|
+
CONSTRAINT genre_pkey PRIMARY KEY (genre_id)
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
-- [ MediaType ]
|
|
70
|
+
CREATE TABLE media_type
|
|
71
|
+
(
|
|
72
|
+
media_type_id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
|
|
73
|
+
name VARCHAR(120),
|
|
74
|
+
CONSTRAINT media_type_pkey PRIMARY KEY (media_type_id)
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
-- [ Playlist ]
|
|
78
|
+
CREATE TABLE playlist
|
|
79
|
+
(
|
|
80
|
+
playlist_id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
|
|
81
|
+
name VARCHAR(120),
|
|
82
|
+
CONSTRAINT playlist_pkey PRIMARY KEY (playlist_id)
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
-- [ Track ]
|
|
86
|
+
CREATE TABLE track
|
|
87
|
+
(
|
|
88
|
+
track_id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
|
|
89
|
+
name VARCHAR(200) NOT NULL,
|
|
90
|
+
album_id INT,
|
|
91
|
+
media_type_id INT NOT NULL,
|
|
92
|
+
genre_id INT,
|
|
93
|
+
composer VARCHAR(220),
|
|
94
|
+
milliseconds INT NOT NULL,
|
|
95
|
+
bytes INT,
|
|
96
|
+
unit_price NUMERIC(10,2) NOT NULL,
|
|
97
|
+
CONSTRAINT track_pkey PRIMARY KEY (track_id)
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
-- [ Invoice ]
|
|
101
|
+
CREATE TABLE invoice
|
|
102
|
+
(
|
|
103
|
+
invoice_id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
|
|
104
|
+
customer_id INT NOT NULL,
|
|
105
|
+
invoice_date TIMESTAMP NOT NULL,
|
|
106
|
+
billing_address VARCHAR(70),
|
|
107
|
+
billing_city VARCHAR(40),
|
|
108
|
+
billing_state VARCHAR(40),
|
|
109
|
+
billing_country VARCHAR(40),
|
|
110
|
+
billing_postal_code VARCHAR(10),
|
|
111
|
+
total NUMERIC(10,2) NOT NULL,
|
|
112
|
+
CONSTRAINT invoice_pkey PRIMARY KEY (invoice_id)
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
-- [ InvoiceLine ]
|
|
116
|
+
CREATE TABLE invoice_line
|
|
117
|
+
(
|
|
118
|
+
invoice_line_id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
|
|
119
|
+
invoice_id INT NOT NULL,
|
|
120
|
+
track_id INT NOT NULL,
|
|
121
|
+
unit_price NUMERIC(10,2) NOT NULL,
|
|
122
|
+
quantity INT NOT NULL,
|
|
123
|
+
CONSTRAINT invoice_line_pkey PRIMARY KEY (invoice_line_id)
|
|
124
|
+
);
|
|
125
|
+
|
|
126
|
+
-- [ PlaylistTrack ] (composite PK, no auto-increment)
|
|
127
|
+
CREATE TABLE playlist_track
|
|
128
|
+
(
|
|
129
|
+
playlist_id INT NOT NULL,
|
|
130
|
+
track_id INT NOT NULL,
|
|
131
|
+
CONSTRAINT playlist_track_pkey PRIMARY KEY (playlist_id, track_id)
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
-- Foreign Key Constraints
|
|
135
|
+
ALTER TABLE album ADD CONSTRAINT album_artist_id_fkey
|
|
136
|
+
FOREIGN KEY (artist_id) REFERENCES artist (artist_id);
|
|
137
|
+
|
|
138
|
+
ALTER TABLE customer ADD CONSTRAINT customer_support_rep_id_fkey
|
|
139
|
+
FOREIGN KEY (support_rep_id) REFERENCES employee (employee_id);
|
|
140
|
+
|
|
141
|
+
ALTER TABLE employee ADD CONSTRAINT employee_reports_to_fkey
|
|
142
|
+
FOREIGN KEY (reports_to) REFERENCES employee (employee_id);
|
|
143
|
+
|
|
144
|
+
ALTER TABLE invoice ADD CONSTRAINT invoice_customer_id_fkey
|
|
145
|
+
FOREIGN KEY (customer_id) REFERENCES customer (customer_id);
|
|
146
|
+
|
|
147
|
+
ALTER TABLE invoice_line ADD CONSTRAINT invoice_line_invoice_id_fkey
|
|
148
|
+
FOREIGN KEY (invoice_id) REFERENCES invoice (invoice_id);
|
|
149
|
+
|
|
150
|
+
ALTER TABLE invoice_line ADD CONSTRAINT invoice_line_track_id_fkey
|
|
151
|
+
FOREIGN KEY (track_id) REFERENCES track (track_id);
|
|
152
|
+
|
|
153
|
+
ALTER TABLE playlist_track ADD CONSTRAINT playlist_track_playlist_id_fkey
|
|
154
|
+
FOREIGN KEY (playlist_id) REFERENCES playlist (playlist_id);
|
|
155
|
+
|
|
156
|
+
ALTER TABLE playlist_track ADD CONSTRAINT playlist_track_track_id_fkey
|
|
157
|
+
FOREIGN KEY (track_id) REFERENCES track (track_id);
|
|
158
|
+
|
|
159
|
+
ALTER TABLE track ADD CONSTRAINT track_album_id_fkey
|
|
160
|
+
FOREIGN KEY (album_id) REFERENCES album (album_id);
|
|
161
|
+
|
|
162
|
+
ALTER TABLE track ADD CONSTRAINT track_genre_id_fkey
|
|
163
|
+
FOREIGN KEY (genre_id) REFERENCES genre (genre_id);
|
|
164
|
+
|
|
165
|
+
ALTER TABLE track ADD CONSTRAINT track_media_type_id_fkey
|
|
166
|
+
FOREIGN KEY (media_type_id) REFERENCES media_type (media_type_id);
|
|
167
|
+
|
|
168
|
+
-- Indices on FK columns
|
|
169
|
+
CREATE INDEX IFK_album_artist_id ON album (artist_id);
|
|
170
|
+
CREATE INDEX IFK_customer_support_rep_id ON customer (support_rep_id);
|
|
171
|
+
CREATE INDEX IFK_employee_reports_to ON employee (reports_to);
|
|
172
|
+
CREATE INDEX IFK_invoice_customer_id ON invoice (customer_id);
|
|
173
|
+
CREATE INDEX IFK_invoice_line_invoice_id ON invoice_line (invoice_id);
|
|
174
|
+
CREATE INDEX IFK_invoice_line_track_id ON invoice_line (track_id);
|
|
175
|
+
CREATE INDEX IFK_track_album_id ON track (album_id);
|
|
176
|
+
CREATE INDEX IFK_track_genre_id ON track (genre_id);
|
|
177
|
+
CREATE INDEX IFK_track_media_type_id ON track (media_type_id);
|