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.
@@ -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);