Skip to content

Commit 26a80b7

Browse files
authored
Handles container restarts for already initialized postgresql database #182 (#185)
1 parent 182e68c commit 26a80b7

File tree

2 files changed

+94
-129
lines changed

2 files changed

+94
-129
lines changed
Lines changed: 59 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,59 @@
1-
INSERT INTO vets VALUES (1, 'James', 'Carter') ON CONFLICT DO NOTHING;
2-
INSERT INTO vets VALUES (2, 'Helen', 'Leary') ON CONFLICT DO NOTHING;
3-
INSERT INTO vets VALUES (3, 'Linda', 'Douglas') ON CONFLICT DO NOTHING;
4-
INSERT INTO vets VALUES (4, 'Rafael', 'Ortega') ON CONFLICT DO NOTHING;
5-
INSERT INTO vets VALUES (5, 'Henry', 'Stevens') ON CONFLICT DO NOTHING;
6-
INSERT INTO vets VALUES (6, 'Sharon', 'Jenkins') ON CONFLICT DO NOTHING;
7-
8-
INSERT INTO specialties VALUES (1, 'radiology') ON CONFLICT DO NOTHING;
9-
INSERT INTO specialties VALUES (2, 'surgery') ON CONFLICT DO NOTHING;
10-
INSERT INTO specialties VALUES (3, 'dentistry') ON CONFLICT DO NOTHING;
11-
12-
INSERT INTO vet_specialties VALUES (2, 1) ON CONFLICT DO NOTHING;
13-
INSERT INTO vet_specialties VALUES (3, 2) ON CONFLICT DO NOTHING;
14-
INSERT INTO vet_specialties VALUES (3, 3) ON CONFLICT DO NOTHING;
15-
INSERT INTO vet_specialties VALUES (4, 2) ON CONFLICT DO NOTHING;
16-
INSERT INTO vet_specialties VALUES (5, 1) ON CONFLICT DO NOTHING;
17-
18-
INSERT INTO types VALUES (1, 'cat') ON CONFLICT DO NOTHING;
19-
INSERT INTO types VALUES (2, 'dog') ON CONFLICT DO NOTHING;
20-
INSERT INTO types VALUES (3, 'lizard') ON CONFLICT DO NOTHING;
21-
INSERT INTO types VALUES (4, 'snake') ON CONFLICT DO NOTHING;
22-
INSERT INTO types VALUES (5, 'bird') ON CONFLICT DO NOTHING;
23-
INSERT INTO types VALUES (6, 'hamster') ON CONFLICT DO NOTHING;
24-
25-
INSERT INTO owners VALUES (1, 'George', 'Franklin', '110 W. Liberty St.', 'Madison', '6085551023') ON CONFLICT DO NOTHING;
26-
INSERT INTO owners VALUES (2, 'Betty', 'Davis', '638 Cardinal Ave.', 'Sun Prairie', '6085551749') ON CONFLICT DO NOTHING;
27-
INSERT INTO owners VALUES (3, 'Eduardo', 'Rodriquez', '2693 Commerce St.', 'McFarland', '6085558763') ON CONFLICT DO NOTHING;
28-
INSERT INTO owners VALUES (4, 'Harold', 'Davis', '563 Friendly St.', 'Windsor', '6085553198') ON CONFLICT DO NOTHING;
29-
INSERT INTO owners VALUES (5, 'Peter', 'McTavish', '2387 S. Fair Way', 'Madison', '6085552765') ON CONFLICT DO NOTHING;
30-
INSERT INTO owners VALUES (6, 'Jean', 'Coleman', '105 N. Lake St.', 'Monona', '6085552654') ON CONFLICT DO NOTHING;
31-
INSERT INTO owners VALUES (7, 'Jeff', 'Black', '1450 Oak Blvd.', 'Monona', '6085555387') ON CONFLICT DO NOTHING;
32-
INSERT INTO owners VALUES (8, 'Maria', 'Escobito', '345 Maple St.', 'Madison', '6085557683') ON CONFLICT DO NOTHING;
33-
INSERT INTO owners VALUES (9, 'David', 'Schroeder', '2749 Blackhawk Trail', 'Madison', '6085559435') ON CONFLICT DO NOTHING;
34-
INSERT INTO owners VALUES (10, 'Carlos', 'Estaban', '2335 Independence La.', 'Waunakee', '6085555487') ON CONFLICT DO NOTHING;
35-
36-
INSERT INTO pets VALUES (1, 'Leo', '2000-09-07', 1, 1) ON CONFLICT DO NOTHING;
37-
INSERT INTO pets VALUES (2, 'Basil', '2002-08-06', 6, 2) ON CONFLICT DO NOTHING;
38-
INSERT INTO pets VALUES (3, 'Rosy', '2001-04-17', 2, 3) ON CONFLICT DO NOTHING;
39-
INSERT INTO pets VALUES (4, 'Jewel', '2000-03-07', 2, 3) ON CONFLICT DO NOTHING;
40-
INSERT INTO pets VALUES (5, 'Iggy', '2000-11-30', 3, 4) ON CONFLICT DO NOTHING;
41-
INSERT INTO pets VALUES (6, 'George', '2000-01-20', 4, 5) ON CONFLICT DO NOTHING;
42-
INSERT INTO pets VALUES (7, 'Samantha', '1995-09-04', 1, 6) ON CONFLICT DO NOTHING;
43-
INSERT INTO pets VALUES (8, 'Max', '1995-09-04', 1, 6) ON CONFLICT DO NOTHING;
44-
INSERT INTO pets VALUES (9, 'Lucky', '1999-08-06', 5, 7) ON CONFLICT DO NOTHING;
45-
INSERT INTO pets VALUES (10, 'Mulligan', '1997-02-24', 2, 8) ON CONFLICT DO NOTHING;
46-
INSERT INTO pets VALUES (11, 'Freddy', '2000-03-09', 5, 9) ON CONFLICT DO NOTHING;
47-
INSERT INTO pets VALUES (12, 'Lucky', '2000-06-24', 2, 10) ON CONFLICT DO NOTHING;
48-
INSERT INTO pets VALUES (13, 'Sly', '2002-06-08', 1, 10) ON CONFLICT DO NOTHING;
49-
50-
INSERT INTO visits VALUES (1, 7, '2010-03-04', 'rabies shot') ON CONFLICT DO NOTHING;
51-
INSERT INTO visits VALUES (2, 8, '2011-03-04', 'rabies shot') ON CONFLICT DO NOTHING;
52-
INSERT INTO visits VALUES (3, 8, '2009-06-04', 'neutered') ON CONFLICT DO NOTHING;
53-
INSERT INTO visits VALUES (4, 7, '2008-09-04', 'spayed') ON CONFLICT DO NOTHING;
54-
55-
INSERT INTO users(username,password,enabled) VALUES ('admin','{noop}admin', true) ON CONFLICT DO NOTHING;
56-
57-
INSERT INTO roles (username, role) VALUES ('admin', 'ROLE_OWNER_ADMIN') ON CONFLICT DO NOTHING;
58-
INSERT INTO roles (username, role) VALUES ('admin', 'ROLE_VET_ADMIN') ON CONFLICT DO NOTHING;
59-
INSERT INTO roles (username, role) VALUES ('admin', 'ROLE_ADMIN') ON CONFLICT DO NOTHING;
1+
INSERT INTO vets (first_name, last_name) SELECT 'James', 'Carter' WHERE NOT EXISTS (SELECT * FROM vets WHERE id=1);
2+
INSERT INTO vets (first_name, last_name) SELECT 'Helen', 'Leary' WHERE NOT EXISTS (SELECT * FROM vets WHERE id=2);
3+
INSERT INTO vets (first_name, last_name) SELECT 'Linda', 'Douglas' WHERE NOT EXISTS (SELECT * FROM vets WHERE id=3);
4+
INSERT INTO vets (first_name, last_name) SELECT 'Rafael', 'Ortega' WHERE NOT EXISTS (SELECT * FROM vets WHERE id=4);
5+
INSERT INTO vets (first_name, last_name) SELECT 'Henry', 'Stevens' WHERE NOT EXISTS (SELECT * FROM vets WHERE id=5);
6+
INSERT INTO vets (first_name, last_name) SELECT 'Sharon', 'Jenkins' WHERE NOT EXISTS (SELECT * FROM vets WHERE id=6);
7+
8+
INSERT INTO specialties (name) SELECT 'radiology' WHERE NOT EXISTS (SELECT * FROM specialties WHERE name='radiology');
9+
INSERT INTO specialties (name) SELECT 'surgery' WHERE NOT EXISTS (SELECT * FROM specialties WHERE name='surgery');
10+
INSERT INTO specialties (name) SELECT 'dentistry' WHERE NOT EXISTS (SELECT * FROM specialties WHERE name='dentistry');
11+
12+
INSERT INTO vet_specialties VALUES (2, 1) ON CONFLICT (vet_id, specialty_id) DO NOTHING;
13+
INSERT INTO vet_specialties VALUES (3, 2) ON CONFLICT (vet_id, specialty_id) DO NOTHING;
14+
INSERT INTO vet_specialties VALUES (3, 3) ON CONFLICT (vet_id, specialty_id) DO NOTHING;
15+
INSERT INTO vet_specialties VALUES (4, 2) ON CONFLICT (vet_id, specialty_id) DO NOTHING;
16+
INSERT INTO vet_specialties VALUES (5, 1) ON CONFLICT (vet_id, specialty_id) DO NOTHING;
17+
18+
INSERT INTO types (name) SELECT 'cat' WHERE NOT EXISTS (SELECT * FROM types WHERE name='cat');
19+
INSERT INTO types (name) SELECT 'dog' WHERE NOT EXISTS (SELECT * FROM types WHERE name='dog');
20+
INSERT INTO types (name) SELECT 'lizard' WHERE NOT EXISTS (SELECT * FROM types WHERE name='lizard');
21+
INSERT INTO types (name) SELECT 'snake' WHERE NOT EXISTS (SELECT * FROM types WHERE name='snake');
22+
INSERT INTO types (name) SELECT 'bird' WHERE NOT EXISTS (SELECT * FROM types WHERE name='bird');
23+
INSERT INTO types (name) SELECT 'hamster' WHERE NOT EXISTS (SELECT * FROM types WHERE name='hamster');
24+
25+
INSERT INTO owners (first_name, last_name, address, city, telephone) SELECT 'George', 'Franklin', '110 W. Liberty St.', 'Madison', '6085551023' WHERE NOT EXISTS (SELECT * FROM owners WHERE id=1);
26+
INSERT INTO owners (first_name, last_name, address, city, telephone) SELECT 'Betty', 'Davis', '638 Cardinal Ave.', 'Sun Prairie', '6085551749' WHERE NOT EXISTS (SELECT * FROM owners WHERE id=2);
27+
INSERT INTO owners (first_name, last_name, address, city, telephone) SELECT 'Eduardo', 'Rodriquez', '2693 Commerce St.', 'McFarland', '6085558763' WHERE NOT EXISTS (SELECT * FROM owners WHERE id=3);
28+
INSERT INTO owners (first_name, last_name, address, city, telephone) SELECT 'Harold', 'Davis', '563 Friendly St.', 'Windsor', '6085553198' WHERE NOT EXISTS (SELECT * FROM owners WHERE id=4);
29+
INSERT INTO owners (first_name, last_name, address, city, telephone) SELECT 'Peter', 'McTavish', '2387 S. Fair Way', 'Madison', '6085552765' WHERE NOT EXISTS (SELECT * FROM owners WHERE id=5);
30+
INSERT INTO owners (first_name, last_name, address, city, telephone) SELECT 'Jean', 'Coleman', '105 N. Lake St.', 'Monona', '6085552654' WHERE NOT EXISTS (SELECT * FROM owners WHERE id=6);
31+
INSERT INTO owners (first_name, last_name, address, city, telephone) SELECT 'Jeff', 'Black', '1450 Oak Blvd.', 'Monona', '6085555387' WHERE NOT EXISTS (SELECT * FROM owners WHERE id=7);
32+
INSERT INTO owners (first_name, last_name, address, city, telephone) SELECT 'Maria', 'Escobito', '345 Maple St.', 'Madison', '6085557683' WHERE NOT EXISTS (SELECT * FROM owners WHERE id=8);
33+
INSERT INTO owners (first_name, last_name, address, city, telephone) SELECT 'David', 'Schroeder', '2749 Blackhawk Trail', 'Madison', '6085559435' WHERE NOT EXISTS (SELECT * FROM owners WHERE id=9);
34+
INSERT INTO owners (first_name, last_name, address, city, telephone) SELECT 'Carlos', 'Estaban', '2335 Independence La.', 'Waunakee', '6085555487' WHERE NOT EXISTS (SELECT * FROM owners WHERE id=10);
35+
36+
INSERT INTO pets (name, birth_date, type_id, owner_id) SELECT 'Leo', '2000-09-07', 1, 1 WHERE NOT EXISTS (SELECT * FROM pets WHERE id=1);
37+
INSERT INTO pets (name, birth_date, type_id, owner_id) SELECT 'Basil', '2002-08-06', 6, 2 WHERE NOT EXISTS (SELECT * FROM pets WHERE id=2);
38+
INSERT INTO pets (name, birth_date, type_id, owner_id) SELECT 'Rosy', '2001-04-17', 2, 3 WHERE NOT EXISTS (SELECT * FROM pets WHERE id=3);
39+
INSERT INTO pets (name, birth_date, type_id, owner_id) SELECT 'Jewel', '2000-03-07', 2, 3 WHERE NOT EXISTS (SELECT * FROM pets WHERE id=4);
40+
INSERT INTO pets (name, birth_date, type_id, owner_id) SELECT 'Iggy', '2000-11-30', 3, 4 WHERE NOT EXISTS (SELECT * FROM pets WHERE id=5);
41+
INSERT INTO pets (name, birth_date, type_id, owner_id) SELECT 'George', '2000-01-20', 4, 5 WHERE NOT EXISTS (SELECT * FROM pets WHERE id=6);
42+
INSERT INTO pets (name, birth_date, type_id, owner_id) SELECT 'Samantha', '1995-09-04', 1, 6 WHERE NOT EXISTS (SELECT * FROM pets WHERE id=7);
43+
INSERT INTO pets (name, birth_date, type_id, owner_id) SELECT 'Max', '1995-09-04', 1, 6 WHERE NOT EXISTS (SELECT * FROM pets WHERE id=8);
44+
INSERT INTO pets (name, birth_date, type_id, owner_id) SELECT 'Lucky', '1999-08-06', 5, 7 WHERE NOT EXISTS (SELECT * FROM pets WHERE id=9);
45+
INSERT INTO pets (name, birth_date, type_id, owner_id) SELECT 'Mulligan', '1997-02-24', 2, 8 WHERE NOT EXISTS (SELECT * FROM pets WHERE id=10);
46+
INSERT INTO pets (name, birth_date, type_id, owner_id) SELECT 'Freddy', '2000-03-09', 5, 9 WHERE NOT EXISTS (SELECT * FROM pets WHERE id=11);
47+
INSERT INTO pets (name, birth_date, type_id, owner_id) SELECT 'Lucky', '2000-06-24', 2, 10 WHERE NOT EXISTS (SELECT * FROM pets WHERE id=12);
48+
INSERT INTO pets (name, birth_date, type_id, owner_id) SELECT 'Sly', '2002-06-08', 1, 10 WHERE NOT EXISTS (SELECT * FROM pets WHERE id=13);
49+
50+
INSERT INTO visits (pet_id, visit_date, description) SELECT 7, '2010-03-04', 'rabies shot' WHERE NOT EXISTS (SELECT * FROM visits WHERE id=1);
51+
INSERT INTO visits (pet_id, visit_date, description) SELECT 8, '2011-03-04', 'rabies shot' WHERE NOT EXISTS (SELECT * FROM visits WHERE id=2);
52+
INSERT INTO visits (pet_id, visit_date, description) SELECT 8, '2009-06-04', 'neutered' WHERE NOT EXISTS (SELECT * FROM visits WHERE id=3);
53+
INSERT INTO visits (pet_id, visit_date, description) SELECT 7, '2008-09-04', 'spayed' WHERE NOT EXISTS (SELECT * FROM visits WHERE id=4);
54+
55+
INSERT INTO users(username,password,enabled) SELECT 'admin','{noop}admin', true WHERE NOT EXISTS (SELECT * FROM users WHERE username='admin');
56+
57+
INSERT INTO roles (username, role) SELECT 'admin', 'ROLE_OWNER_ADMIN' WHERE NOT EXISTS (SELECT * FROM roles WHERE id=1);
58+
INSERT INTO roles (username, role) SELECT 'admin', 'ROLE_VET_ADMIN' WHERE NOT EXISTS (SELECT * FROM roles WHERE id=2);
59+
INSERT INTO roles (username, role) SELECT'admin', 'ROLE_ADMIN' WHERE NOT EXISTS (SELECT * FROM roles WHERE id=3);
Lines changed: 35 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,55 @@
11
CREATE TABLE IF NOT EXISTS vets (
2-
id SERIAL,
3-
first_name VARCHAR(30),
4-
last_name VARCHAR(30),
5-
CONSTRAINT pk_vets PRIMARY KEY (id)
2+
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
3+
first_name TEXT,
4+
last_name TEXT
65
);
7-
8-
CREATE INDEX IF NOT EXISTS idx_vets_last_name ON vets (last_name);
9-
10-
ALTER SEQUENCE vets_id_seq RESTART WITH 100;
11-
6+
CREATE INDEX ON vets (last_name);
127

138
CREATE TABLE IF NOT EXISTS specialties (
14-
id SERIAL,
15-
name VARCHAR(80),
16-
CONSTRAINT pk_specialties PRIMARY KEY (id)
9+
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
10+
name TEXT
1711
);
18-
19-
CREATE INDEX IF NOT EXISTS idx_specialties_name ON specialties (name);
20-
21-
ALTER SEQUENCE specialties_id_seq RESTART WITH 100;
22-
12+
CREATE INDEX ON specialties (name);
2313

2414
CREATE TABLE IF NOT EXISTS vet_specialties (
25-
vet_id INT NOT NULL,
26-
specialty_id INT NOT NULL,
27-
FOREIGN KEY (vet_id) REFERENCES vets(id),
28-
FOREIGN KEY (specialty_id) REFERENCES specialties(id),
29-
CONSTRAINT unique_ids UNIQUE (vet_id,specialty_id)
15+
vet_id INT NOT NULL REFERENCES vets (id),
16+
specialty_id INT NOT NULL REFERENCES specialties (id),
17+
UNIQUE (vet_id, specialty_id)
3018
);
3119

32-
33-
3420
CREATE TABLE IF NOT EXISTS types (
35-
id SERIAL,
36-
name VARCHAR(80),
37-
CONSTRAINT pk_types PRIMARY KEY (id)
21+
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
22+
name TEXT
3823
);
39-
40-
CREATE INDEX IF NOT EXISTS idx_types_name ON types (name);
41-
42-
ALTER SEQUENCE types_id_seq RESTART WITH 100;
24+
CREATE INDEX ON types (name);
4325

4426
CREATE TABLE IF NOT EXISTS owners (
45-
id SERIAL,
46-
first_name VARCHAR(30),
47-
last_name VARCHAR(30),
48-
address VARCHAR(255),
49-
city VARCHAR(80),
50-
telephone VARCHAR(20),
51-
CONSTRAINT pk_owners PRIMARY KEY (id)
27+
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
28+
first_name TEXT,
29+
last_name TEXT,
30+
address TEXT,
31+
city TEXT,
32+
telephone TEXT
5233
);
53-
54-
CREATE INDEX IF NOT EXISTS idx_owners_last_name ON owners (last_name);
55-
56-
ALTER SEQUENCE owners_id_seq RESTART WITH 100;
57-
34+
CREATE INDEX ON owners (last_name);
5835

5936
CREATE TABLE IF NOT EXISTS pets (
60-
id SERIAL,
61-
name VARCHAR(30),
62-
birth_date DATE,
63-
type_id INT NOT NULL,
64-
owner_id INT NOT NULL,
65-
FOREIGN KEY (owner_id) REFERENCES owners(id),
66-
FOREIGN KEY (type_id) REFERENCES types(id),
67-
CONSTRAINT pk_pets PRIMARY KEY (id)
37+
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
38+
name TEXT,
39+
birth_date DATE,
40+
type_id INT NOT NULL REFERENCES types (id),
41+
owner_id INT REFERENCES owners (id)
6842
);
69-
70-
CREATE INDEX IF NOT EXISTS idx_pets_name ON pets (name);
71-
72-
ALTER SEQUENCE pets_id_seq RESTART WITH 100;
73-
43+
CREATE INDEX ON pets (name);
44+
CREATE INDEX ON pets (owner_id);
7445

7546
CREATE TABLE IF NOT EXISTS visits (
76-
id SERIAL,
77-
pet_id INT NOT NULL,
78-
visit_date DATE,
79-
description VARCHAR(255),
80-
FOREIGN KEY (pet_id) REFERENCES pets(id),
81-
CONSTRAINT pk_visits PRIMARY KEY (id)
47+
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
48+
pet_id INT REFERENCES pets (id),
49+
visit_date DATE,
50+
description TEXT
8251
);
83-
84-
ALTER SEQUENCE visits_id_seq RESTART WITH 100;
52+
CREATE INDEX ON visits (pet_id);
8553

8654
CREATE TABLE IF NOT EXISTS users (
8755
username VARCHAR(20) NOT NULL ,
@@ -91,12 +59,9 @@ CREATE TABLE IF NOT EXISTS users (
9159
);
9260

9361
CREATE TABLE IF NOT EXISTS roles (
94-
id SERIAL,
62+
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
9563
username varchar(20) NOT NULL,
9664
role varchar(20) NOT NULL,
97-
CONSTRAINT pk_roles PRIMARY KEY (id),
98-
FOREIGN KEY (username) REFERENCES users (username)
65+
FOREIGN KEY (username) REFERENCES users (username),
66+
CONSTRAINT uni_username_role UNIQUE (role, username)
9967
);
100-
101-
ALTER TABLE roles ADD CONSTRAINT uni_username_role UNIQUE (role,username);
102-
ALTER SEQUENCE roles_id_seq RESTART WITH 100;

0 commit comments

Comments
 (0)