diff --git a/src/main/resources/db/postgres/data.sql b/src/main/resources/db/postgres/data.sql index b1dfda8b4..b177e57e6 100644 --- a/src/main/resources/db/postgres/data.sql +++ b/src/main/resources/db/postgres/data.sql @@ -1,59 +1,59 @@ -INSERT INTO vets VALUES (1, 'James', 'Carter') ON CONFLICT DO NOTHING; -INSERT INTO vets VALUES (2, 'Helen', 'Leary') ON CONFLICT DO NOTHING; -INSERT INTO vets VALUES (3, 'Linda', 'Douglas') ON CONFLICT DO NOTHING; -INSERT INTO vets VALUES (4, 'Rafael', 'Ortega') ON CONFLICT DO NOTHING; -INSERT INTO vets VALUES (5, 'Henry', 'Stevens') ON CONFLICT DO NOTHING; -INSERT INTO vets VALUES (6, 'Sharon', 'Jenkins') ON CONFLICT DO NOTHING; - -INSERT INTO specialties VALUES (1, 'radiology') ON CONFLICT DO NOTHING; -INSERT INTO specialties VALUES (2, 'surgery') ON CONFLICT DO NOTHING; -INSERT INTO specialties VALUES (3, 'dentistry') ON CONFLICT DO NOTHING; - -INSERT INTO vet_specialties VALUES (2, 1) ON CONFLICT DO NOTHING; -INSERT INTO vet_specialties VALUES (3, 2) ON CONFLICT DO NOTHING; -INSERT INTO vet_specialties VALUES (3, 3) ON CONFLICT DO NOTHING; -INSERT INTO vet_specialties VALUES (4, 2) ON CONFLICT DO NOTHING; -INSERT INTO vet_specialties VALUES (5, 1) ON CONFLICT DO NOTHING; - -INSERT INTO types VALUES (1, 'cat') ON CONFLICT DO NOTHING; -INSERT INTO types VALUES (2, 'dog') ON CONFLICT DO NOTHING; -INSERT INTO types VALUES (3, 'lizard') ON CONFLICT DO NOTHING; -INSERT INTO types VALUES (4, 'snake') ON CONFLICT DO NOTHING; -INSERT INTO types VALUES (5, 'bird') ON CONFLICT DO NOTHING; -INSERT INTO types VALUES (6, 'hamster') ON CONFLICT DO NOTHING; - -INSERT INTO owners VALUES (1, 'George', 'Franklin', '110 W. Liberty St.', 'Madison', '6085551023') ON CONFLICT DO NOTHING; -INSERT INTO owners VALUES (2, 'Betty', 'Davis', '638 Cardinal Ave.', 'Sun Prairie', '6085551749') ON CONFLICT DO NOTHING; -INSERT INTO owners VALUES (3, 'Eduardo', 'Rodriquez', '2693 Commerce St.', 'McFarland', '6085558763') ON CONFLICT DO NOTHING; -INSERT INTO owners VALUES (4, 'Harold', 'Davis', '563 Friendly St.', 'Windsor', '6085553198') ON CONFLICT DO NOTHING; -INSERT INTO owners VALUES (5, 'Peter', 'McTavish', '2387 S. Fair Way', 'Madison', '6085552765') ON CONFLICT DO NOTHING; -INSERT INTO owners VALUES (6, 'Jean', 'Coleman', '105 N. Lake St.', 'Monona', '6085552654') ON CONFLICT DO NOTHING; -INSERT INTO owners VALUES (7, 'Jeff', 'Black', '1450 Oak Blvd.', 'Monona', '6085555387') ON CONFLICT DO NOTHING; -INSERT INTO owners VALUES (8, 'Maria', 'Escobito', '345 Maple St.', 'Madison', '6085557683') ON CONFLICT DO NOTHING; -INSERT INTO owners VALUES (9, 'David', 'Schroeder', '2749 Blackhawk Trail', 'Madison', '6085559435') ON CONFLICT DO NOTHING; -INSERT INTO owners VALUES (10, 'Carlos', 'Estaban', '2335 Independence La.', 'Waunakee', '6085555487') ON CONFLICT DO NOTHING; - -INSERT INTO pets VALUES (1, 'Leo', '2000-09-07', 1, 1) ON CONFLICT DO NOTHING; -INSERT INTO pets VALUES (2, 'Basil', '2002-08-06', 6, 2) ON CONFLICT DO NOTHING; -INSERT INTO pets VALUES (3, 'Rosy', '2001-04-17', 2, 3) ON CONFLICT DO NOTHING; -INSERT INTO pets VALUES (4, 'Jewel', '2000-03-07', 2, 3) ON CONFLICT DO NOTHING; -INSERT INTO pets VALUES (5, 'Iggy', '2000-11-30', 3, 4) ON CONFLICT DO NOTHING; -INSERT INTO pets VALUES (6, 'George', '2000-01-20', 4, 5) ON CONFLICT DO NOTHING; -INSERT INTO pets VALUES (7, 'Samantha', '1995-09-04', 1, 6) ON CONFLICT DO NOTHING; -INSERT INTO pets VALUES (8, 'Max', '1995-09-04', 1, 6) ON CONFLICT DO NOTHING; -INSERT INTO pets VALUES (9, 'Lucky', '1999-08-06', 5, 7) ON CONFLICT DO NOTHING; -INSERT INTO pets VALUES (10, 'Mulligan', '1997-02-24', 2, 8) ON CONFLICT DO NOTHING; -INSERT INTO pets VALUES (11, 'Freddy', '2000-03-09', 5, 9) ON CONFLICT DO NOTHING; -INSERT INTO pets VALUES (12, 'Lucky', '2000-06-24', 2, 10) ON CONFLICT DO NOTHING; -INSERT INTO pets VALUES (13, 'Sly', '2002-06-08', 1, 10) ON CONFLICT DO NOTHING; - -INSERT INTO visits VALUES (1, 7, '2010-03-04', 'rabies shot') ON CONFLICT DO NOTHING; -INSERT INTO visits VALUES (2, 8, '2011-03-04', 'rabies shot') ON CONFLICT DO NOTHING; -INSERT INTO visits VALUES (3, 8, '2009-06-04', 'neutered') ON CONFLICT DO NOTHING; -INSERT INTO visits VALUES (4, 7, '2008-09-04', 'spayed') ON CONFLICT DO NOTHING; - -INSERT INTO users(username,password,enabled) VALUES ('admin','{noop}admin', true) ON CONFLICT DO NOTHING; - -INSERT INTO roles (username, role) VALUES ('admin', 'ROLE_OWNER_ADMIN') ON CONFLICT DO NOTHING; -INSERT INTO roles (username, role) VALUES ('admin', 'ROLE_VET_ADMIN') ON CONFLICT DO NOTHING; -INSERT INTO roles (username, role) VALUES ('admin', 'ROLE_ADMIN') ON CONFLICT DO NOTHING; +INSERT INTO vets (first_name, last_name) SELECT 'James', 'Carter' WHERE NOT EXISTS (SELECT * FROM vets WHERE id=1); +INSERT INTO vets (first_name, last_name) SELECT 'Helen', 'Leary' WHERE NOT EXISTS (SELECT * FROM vets WHERE id=2); +INSERT INTO vets (first_name, last_name) SELECT 'Linda', 'Douglas' WHERE NOT EXISTS (SELECT * FROM vets WHERE id=3); +INSERT INTO vets (first_name, last_name) SELECT 'Rafael', 'Ortega' WHERE NOT EXISTS (SELECT * FROM vets WHERE id=4); +INSERT INTO vets (first_name, last_name) SELECT 'Henry', 'Stevens' WHERE NOT EXISTS (SELECT * FROM vets WHERE id=5); +INSERT INTO vets (first_name, last_name) SELECT 'Sharon', 'Jenkins' WHERE NOT EXISTS (SELECT * FROM vets WHERE id=6); + +INSERT INTO specialties (name) SELECT 'radiology' WHERE NOT EXISTS (SELECT * FROM specialties WHERE name='radiology'); +INSERT INTO specialties (name) SELECT 'surgery' WHERE NOT EXISTS (SELECT * FROM specialties WHERE name='surgery'); +INSERT INTO specialties (name) SELECT 'dentistry' WHERE NOT EXISTS (SELECT * FROM specialties WHERE name='dentistry'); + +INSERT INTO vet_specialties VALUES (2, 1) ON CONFLICT (vet_id, specialty_id) DO NOTHING; +INSERT INTO vet_specialties VALUES (3, 2) ON CONFLICT (vet_id, specialty_id) DO NOTHING; +INSERT INTO vet_specialties VALUES (3, 3) ON CONFLICT (vet_id, specialty_id) DO NOTHING; +INSERT INTO vet_specialties VALUES (4, 2) ON CONFLICT (vet_id, specialty_id) DO NOTHING; +INSERT INTO vet_specialties VALUES (5, 1) ON CONFLICT (vet_id, specialty_id) DO NOTHING; + +INSERT INTO types (name) SELECT 'cat' WHERE NOT EXISTS (SELECT * FROM types WHERE name='cat'); +INSERT INTO types (name) SELECT 'dog' WHERE NOT EXISTS (SELECT * FROM types WHERE name='dog'); +INSERT INTO types (name) SELECT 'lizard' WHERE NOT EXISTS (SELECT * FROM types WHERE name='lizard'); +INSERT INTO types (name) SELECT 'snake' WHERE NOT EXISTS (SELECT * FROM types WHERE name='snake'); +INSERT INTO types (name) SELECT 'bird' WHERE NOT EXISTS (SELECT * FROM types WHERE name='bird'); +INSERT INTO types (name) SELECT 'hamster' WHERE NOT EXISTS (SELECT * FROM types WHERE name='hamster'); + +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); +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); +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); +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); +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); +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); +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); +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); +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); +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); + +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); +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); +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); +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); +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); +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); +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); +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); +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); +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); +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); +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); +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); + +INSERT INTO visits (pet_id, visit_date, description) SELECT 7, '2010-03-04', 'rabies shot' WHERE NOT EXISTS (SELECT * FROM visits WHERE id=1); +INSERT INTO visits (pet_id, visit_date, description) SELECT 8, '2011-03-04', 'rabies shot' WHERE NOT EXISTS (SELECT * FROM visits WHERE id=2); +INSERT INTO visits (pet_id, visit_date, description) SELECT 8, '2009-06-04', 'neutered' WHERE NOT EXISTS (SELECT * FROM visits WHERE id=3); +INSERT INTO visits (pet_id, visit_date, description) SELECT 7, '2008-09-04', 'spayed' WHERE NOT EXISTS (SELECT * FROM visits WHERE id=4); + +INSERT INTO users(username,password,enabled) SELECT 'admin','{noop}admin', true WHERE NOT EXISTS (SELECT * FROM users WHERE username='admin'); + +INSERT INTO roles (username, role) SELECT 'admin', 'ROLE_OWNER_ADMIN' WHERE NOT EXISTS (SELECT * FROM roles WHERE id=1); +INSERT INTO roles (username, role) SELECT 'admin', 'ROLE_VET_ADMIN' WHERE NOT EXISTS (SELECT * FROM roles WHERE id=2); +INSERT INTO roles (username, role) SELECT'admin', 'ROLE_ADMIN' WHERE NOT EXISTS (SELECT * FROM roles WHERE id=3); diff --git a/src/main/resources/db/postgres/schema.sql b/src/main/resources/db/postgres/schema.sql index 49f997b76..7cef9be3e 100644 --- a/src/main/resources/db/postgres/schema.sql +++ b/src/main/resources/db/postgres/schema.sql @@ -1,87 +1,55 @@ CREATE TABLE IF NOT EXISTS vets ( - id SERIAL, - first_name VARCHAR(30), - last_name VARCHAR(30), - CONSTRAINT pk_vets PRIMARY KEY (id) + id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + first_name TEXT, + last_name TEXT ); - -CREATE INDEX IF NOT EXISTS idx_vets_last_name ON vets (last_name); - -ALTER SEQUENCE vets_id_seq RESTART WITH 100; - +CREATE INDEX ON vets (last_name); CREATE TABLE IF NOT EXISTS specialties ( - id SERIAL, - name VARCHAR(80), - CONSTRAINT pk_specialties PRIMARY KEY (id) + id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + name TEXT ); - -CREATE INDEX IF NOT EXISTS idx_specialties_name ON specialties (name); - -ALTER SEQUENCE specialties_id_seq RESTART WITH 100; - +CREATE INDEX ON specialties (name); CREATE TABLE IF NOT EXISTS vet_specialties ( - vet_id INT NOT NULL, - specialty_id INT NOT NULL, - FOREIGN KEY (vet_id) REFERENCES vets(id), - FOREIGN KEY (specialty_id) REFERENCES specialties(id), - CONSTRAINT unique_ids UNIQUE (vet_id,specialty_id) + vet_id INT NOT NULL REFERENCES vets (id), + specialty_id INT NOT NULL REFERENCES specialties (id), + UNIQUE (vet_id, specialty_id) ); - - CREATE TABLE IF NOT EXISTS types ( - id SERIAL, - name VARCHAR(80), - CONSTRAINT pk_types PRIMARY KEY (id) + id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + name TEXT ); - -CREATE INDEX IF NOT EXISTS idx_types_name ON types (name); - -ALTER SEQUENCE types_id_seq RESTART WITH 100; +CREATE INDEX ON types (name); CREATE TABLE IF NOT EXISTS owners ( - id SERIAL, - first_name VARCHAR(30), - last_name VARCHAR(30), - address VARCHAR(255), - city VARCHAR(80), - telephone VARCHAR(20), - CONSTRAINT pk_owners PRIMARY KEY (id) + id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + first_name TEXT, + last_name TEXT, + address TEXT, + city TEXT, + telephone TEXT ); - -CREATE INDEX IF NOT EXISTS idx_owners_last_name ON owners (last_name); - -ALTER SEQUENCE owners_id_seq RESTART WITH 100; - +CREATE INDEX ON owners (last_name); CREATE TABLE IF NOT EXISTS pets ( - id SERIAL, - name VARCHAR(30), - birth_date DATE, - type_id INT NOT NULL, - owner_id INT NOT NULL, - FOREIGN KEY (owner_id) REFERENCES owners(id), - FOREIGN KEY (type_id) REFERENCES types(id), - CONSTRAINT pk_pets PRIMARY KEY (id) + id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + name TEXT, + birth_date DATE, + type_id INT NOT NULL REFERENCES types (id), + owner_id INT REFERENCES owners (id) ); - -CREATE INDEX IF NOT EXISTS idx_pets_name ON pets (name); - -ALTER SEQUENCE pets_id_seq RESTART WITH 100; - +CREATE INDEX ON pets (name); +CREATE INDEX ON pets (owner_id); CREATE TABLE IF NOT EXISTS visits ( - id SERIAL, - pet_id INT NOT NULL, - visit_date DATE, - description VARCHAR(255), - FOREIGN KEY (pet_id) REFERENCES pets(id), - CONSTRAINT pk_visits PRIMARY KEY (id) + id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + pet_id INT REFERENCES pets (id), + visit_date DATE, + description TEXT ); - -ALTER SEQUENCE visits_id_seq RESTART WITH 100; +CREATE INDEX ON visits (pet_id); CREATE TABLE IF NOT EXISTS users ( username VARCHAR(20) NOT NULL , @@ -91,12 +59,9 @@ CREATE TABLE IF NOT EXISTS users ( ); CREATE TABLE IF NOT EXISTS roles ( - id SERIAL, + id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, username varchar(20) NOT NULL, role varchar(20) NOT NULL, - CONSTRAINT pk_roles PRIMARY KEY (id), - FOREIGN KEY (username) REFERENCES users (username) + FOREIGN KEY (username) REFERENCES users (username), + CONSTRAINT uni_username_role UNIQUE (role, username) ); - -ALTER TABLE roles ADD CONSTRAINT uni_username_role UNIQUE (role,username); -ALTER SEQUENCE roles_id_seq RESTART WITH 100;