From 6f558f5eada987ac63a9b89bc083272cb97e0f58 Mon Sep 17 00:00:00 2001 From: Rhys Evans <EvansRM17@cardiff.ac.uk> Date: Tue, 12 Dec 2023 16:21:41 +0000 Subject: [PATCH] Re-implemented data/schema .sql files for more efficient working order i.e. they break less --- src/main/resources/data.sql | 142 +++++++++++++++++++++------------- src/main/resources/schema.sql | 92 ++++++++++++++-------- src/test/java/Test3.java | 54 ++++++------- 3 files changed, 176 insertions(+), 112 deletions(-) diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql index f73e28c6..93f05d0c 100644 --- a/src/main/resources/data.sql +++ b/src/main/resources/data.sql @@ -1,61 +1,99 @@ delete from users; -insert into users ( email, name, dragonProgress) value ('hannah@gmail.com', 'Hannah', '90'); -insert into users ( email, name, dragonProgress) value ( 'nigel@gmail.com', 'Nigel', '40'); +insert into users (email, name, dragonProgress,dragonsLandmarkIDs) value ('hannah@gmail.com', 'Hannah','90','A'); +insert into users (email, name, dragonProgress,dragonsLandmarkIDs) value ('nigel@gmail.com', 'Nigel','40','B'); delete from trails; -insert into trails ( Name) value ( 'Caerphilly Coffee Trail'); -insert into trails ( Name) value ( 'Penarth Dragon Trail'); -delete from towns; -insert into towns ( townName,townTrailNumber) value ( 'Caerphilly',03); -insert into towns ( townName,townTrailNumber) value ( 'Risca',01); -insert into towns ( townName,townTrailNumber) value ( 'Penarth',01); +insert into trails ( Name,tru) value ( 'Caerphilly Coffee Trail',false); +insert into trails ( Name,tru) value ( 'Penarth Dragon Trail',true); delete from locations; -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ( 'St Cenydd','','Location description here','Caerphilly',0101); -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ( 'The Castle','','Location description here','Caerphilly',0101); -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ( 'Medieval Trades','','Location description here','Caerphilly',0101); -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ( 'The Queen''s War','','Location description here','Caerphilly',0101); -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ( 'The Green Lady','','Location description here','Caerphilly',0101); -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ( 'Armoury','','Location description here','Caerphilly',0101); -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ( 'Architecture','','Location description here','Caerphilly',0101); -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ( '21st Century Landmark','','Location description here','Caerphilly',0101); - -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ( 'JD Wetherspoons-Malcolm Uphill','','Location description here','Caerphilly',0102); -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ( 'Caerphilly Cwtch','','Location description here','Caerphilly',0102); -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ( 'Caerphilly Conservative Club','','Location description here','Caerphilly',0102); -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ( 'The King''s Arms','','Location description here','Caerphilly',0102); - -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ( 'Caerphilly Bus Station','','Location description here','Caerphilly',0103); -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ( 'The Medieval Courthouse','','Location description here','Caerphilly',0103); -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ('Caerphilly Castle','','Location description here','Caerphilly',0103); -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ( 'Ty Vaughan House','','Location description here','Caerphilly',0103); - -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ( 'Risca Colliery','','Location description here','Risca',0201); -insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value ( 'Black Vein Colliery Disaster','','Location description here','Risca',0201); - - -insert into locations (locationID, locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value (19, 'The Esplanade','','Location description here','Penarth',0301); -insert into locations (locationID, locationName , locationEmail,locationDescription,locationPlace, locationTrailID) value (20, 'The Old Swimming Baths','','Location description here','Penarth',0301); -delete from badges; -insert into badges (name, description, difficulty) value ('TownConnoisseur', 'You know the town very well!', '2'); -insert into badges (name, description, difficulty) value ('TownRegular', 'You visited the town 3 days in a row!', '1'); -insert into badges (name, description, difficulty) value ('TownMaster', 'You visited the town 7 days in a row!', '1'); -insert into badges (name, description, difficulty) value ('TownRegular', 'You visited the town 3 days in a row!', '1'); -insert into badges (name, description, difficulty) value ('TownRegular', 'You visited the town 3 days in a row!', '1'); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'St Cenydd','','Location description here','Caerphilly',0101, true); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'The Castle','','Location description here','Caerphilly',0101, true); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'Medieval Trades','','Location description here','Caerphilly',0101, true); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'The Queen''s War','','Location description here','Caerphilly',0101, true); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'The Green Lady','','Location description here','Caerphilly',0101, true); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'Armoury','','Location description here','Caerphilly',0101, true); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'Architecture','','Location description here','Caerphilly',0101, true); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( '21st Century Landmark','','Location description here','Caerphilly',0101, true); + +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'JD Wetherspoons-Malcolm Uphill','','Location description here','Caerphilly',0102, true); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'Caerphilly Cwtch','','Location description here','Caerphilly',0102, true); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'Caerphilly Conservative Club','','Location description here','Caerphilly',0102, true); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'The King''s Arms','','Location description here','Caerphilly',0102, true); + +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'Caerphilly Bus Station','','Location description here','Caerphilly',0103, true); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'The Medieval Courthouse','','Location description here','Caerphilly',0103, true); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ('Caerphilly Castle','','Location description here','Caerphilly',0103, true); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'Ty Vaughan House','','Location description here','Caerphilly',0103, true); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'Risca Colliery','','Location description here','Risca',0201, true); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'Black Vein Colliery Disaster','','Location description here','Risca',0201, true); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'The Esplanade','','Location description here','Penarth',0301, true); +insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) value ( 'The Old Swimming Baths','','Location description here','Penarth',0301, true); + + +# delete from badges; +# insert into badges (name, description, difficulty) value ('TownConnoisseur', 'You know the town very well!', '2'); +# insert into badges (name, description, difficulty) value ('TownRegular', 'You visited the town 3 days in a row!', '1'); +# insert into badges (name, description, difficulty) value ('TownMaster', 'You visited the town 7 days in a row!', '1'); +# insert into badges (name, description, difficulty) value ('TownRegular', 'You visited the town 3 days in a row!', '1'); +# insert into badges (name, description, difficulty) value ('TownRegular', 'You visited the town 3 days in a row!', '1'); + + + +delete from packs; +insert into packs (name, description) value ('Wales Football Team', 'Pack of Welsh Football Players in the National Team'); +insert into packs (name, description) value ('Wales Rugby Team', 'Pack of Welsh Rugby Players in the National Team'); +insert into packs (name, description) value ('Welsh Heritage', 'Pack About Welsh Heritage'); + delete from stickers; -insert into stickers (name, description, rarity) value ('TownConnoisseur', 'You know the town very well!', '2'); -insert into stickers (name, description, rarity) value ('TownRegular', 'You visited the town 3 days in a row!', '1'); -insert into stickers (name, description, rarity) value ('TownMaster', 'You visited the town 7 days in a row!', '1'); -insert into stickers (name, description, rarity) value ('TownRegular', 'You visited the town 3 days in a row!', '1'); -insert into stickers (name, description, rarity) value ('TownRegular', 'You visited the town 3 days in a row!', '1'); - -delete from badgeprogress; -insert into badgeprogress (userID, badgeID, progress) value ('1', '1', '40'); -insert into badgeprogress (userID, badgeID, progress) value ('1', '2', '70'); -insert into badgeprogress (userID, badgeID, progress) value ('2', '2', '70'); - -delete from stickerprogress; +insert into stickers (packID, stickerID, name, description, rarity) value (1, 1, 'wayne_hennessey', 'Wales Football Team Player', '2'); +insert into stickers (packID, stickerID, name, description, rarity) value (1, 2, 'neco_williams', 'Wales Football Team Player', '2'); +insert into stickers (packID, stickerID, name, description, rarity) value (1, 3, 'joe_morrell', 'Wales Football Team Player', '2'); +insert into stickers (packID, stickerID, name, description, rarity) value (1, 4, 'ethan_ampadu', 'Wales Football Team Player', '2'); +insert into stickers (packID, stickerID, name, description, rarity) value (1, 5, 'connor_roberts', 'Wales Football Team Player', '2'); +insert into stickers (packID, stickerID, name, description, rarity) value (2, 1, 'Taine_Basham', 'Wales Rugby Team Player', '1'); +insert into stickers (packID, stickerID, name, description, rarity) value (2, 2, 'Adam Beard', 'Wales Rugby Team Player', '1'); +insert into stickers (packID, stickerID, name, description, rarity) value (2, 3, 'Elliot Dee', 'Wales Rugby Team Player', '1'); +insert into stickers (packID, stickerID, name, description, rarity) value (2, 4, 'Corey Domachowski', 'Wales Rugby Team Player', '1'); +insert into stickers (packID, stickerID, name, description, rarity) value (2, 5, 'Ryan Elias', 'Wales Rugby Team Player', '1'); +insert into stickers (packID, stickerID, name, description, rarity) value (3, 1, 'Welsh Lady', 'Welsh Heritage', '1'); +insert into stickers (packID, stickerID, name, description, rarity) value (3, 2, 'Welsh Outline', 'Welsh Heritage', '1'); +insert into stickers (packID, stickerID, name, description, rarity) value (3, 3, 'Welsh Spoon', 'Welsh Heritage', '1'); + +# delete from stickerprogress; # insert into stickerprogress (userID, stickerID, hasSticker) value ('1', '1', true); # insert into stickerprogress (userID, stickerID, hasSticker) value ('1', '3', true); -# insert into stickerprogress (userID, stickerID, hasSticker) value ('2', '2', true); \ No newline at end of file +# insert into stickerprogress (userID, stickerID, hasSticker) value ('2', '2', true); + +delete from locationCoordinates; +insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) value (2, 51.57623, -3.21910 ); +insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) value (3, 51.575372, -3.219186); +insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) value (4, 51.576363, -3.220712 ); +insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) value (9, 51.57239, -3.21992); +insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) value (10, 51.57229, -3.21937 ); +insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) value (13, 51.57168, -3.21861); +insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) value (14, 51.57465, -3.22022 ); +insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) value (17, 51.61117, -3.10198 ); +insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) value (18, 51.61655, -3.12371 ); +insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) value (19, 51.43484, -3.16492 ); +insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) value (20, 51.43547, -3.16789 ); + + + + + +# insert into stickerprogress (userID, packID, stickerID) value (1, 1, 1); +# insert into stickerprogress (userID, packID, stickerID) value (1, 1, 2); +# insert into stickerprogress (userID, packID, stickerID) value (1, 1, 3); +# insert into stickerprogress (userID, packID, stickerID) value (1, 1, 5); +# insert into stickerprogress (userID, packID, stickerID) value (1, 2, 1); +# insert into stickerprogress (userID, packID, stickerID) value (1, 2, 3); + + + +# +delete from townsWithTrails; +insert into townsWithTrails (townName, townCentreCoordsLat, townCentreCoordsLong, townUppermostCoordsLat, townLowermostCoordsLat, townLeftmostCoordsLong, townRightmostCoordsLong) value ('Caerphilly', '51.57903','-3.22075 ','51.60418','51.55093','-3.25222','-3.17696'); +insert into townsWithTrails (townName, townCentreCoordsLat, townCentreCoordsLong, townUppermostCoordsLat, townLowermostCoordsLat, townLeftmostCoordsLong, townRightmostCoordsLong) value ('Risca','51.61195','-3.09648','51.63039','51.59175','-3.12129','-3.06438'); +insert into townsWithTrails (townName, townCentreCoordsLat, townCentreCoordsLong, townUppermostCoordsLat, townLowermostCoordsLat, townLeftmostCoordsLong, townRightmostCoordsLong) value ('Penarth','51.43893','-3.17354','51.44878','51.41233','-3.20271','-3.16005'); \ No newline at end of file diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql index 22d745ed..83a9327f 100644 --- a/src/main/resources/schema.sql +++ b/src/main/resources/schema.sql @@ -2,14 +2,12 @@ drop table if exists trails; create table if not exists trails ( trailID bigint auto_increment primary key, - name varchar(128) + name varchar(128), + tru boolean ) engine=InnoDB; -drop table if exists towns; - - +drop table if exists locationCoordinates; drop table if exists locations; - create table if not exists locations ( locationID bigint auto_increment primary key, @@ -17,55 +15,83 @@ create table if not exists locations locationEmail varchar(128), locationDescription longtext, locationPlace varchar(255), - locationTrailID varchar(128) + locationTrailID varchar(128), + locationApproved boolean ) engine=InnoDB; + drop table if exists users; +drop table if exists stickers; +drop table if exists packs; +drop table if exists stickerProgress; + create table if not exists users ( - userID bigint auto_increment primary key, + id bigint auto_increment primary key, email varchar(128), - name varchar(128), - dragonProgress int + name varchar(30), + dragonProgress int, + dragonsLandmarkIDs longtext ) engine=InnoDB; -drop table if exists badges; -create table if not exists badges + +create table if not exists packs ( - badgeID bigint auto_increment primary key, - name varchar(128), - description varchar(128), - difficulty bigint + id bigint auto_increment primary key, + name varchar(20), + description text ) engine=InnoDB; -drop table if exists stickers; create table if not exists stickers ( - stickerID bigint auto_increment primary key, - name varchar(128), - description varchar(128), - rarity bigint + id bigint auto_increment primary key, + packID bigint, + FOREIGN KEY (packID) REFERENCES packs(id) + ON DELETE CASCADE + ON UPDATE RESTRICT, + stickerID bigint, /*STICKER ID NUMBER WITHIN ITS OWN PACK*/ + name varchar(30), + description text, + rarity tinyint + ) engine=InnoDB; -drop table if exists badgeProgress; -create table if not exists badgeProgress +create table if not exists stickerProgress ( + id bigint auto_increment primary key, userID bigint, - badgeID bigint, - progress int /*0-100*/ + stickerID bigint ) engine=InnoDB; -create table if not exists stickerProgress + + + + +create table if not exists locationCoordinates ( - userID int, - stickerID int, - hasSticker boolean /*Has sticker or not*/ -) engine=InnoDB; + locationCoordID bigint auto_increment primary key, + locationID bigint, + Foreign Key (locationID) REFERENCES locations(locationID) + ON DELETE CASCADE + ON UPDATE RESTRICT, + locationCoordsLat DECIMAL(8,6), + locationCoordsLong DECIMAL(8,6) + + +)engine=InnoDB; -create table if not exists towns + +drop table if exists townsWithTrails; +create table if not exists townsWithTrails ( townID bigint auto_increment primary key, - townName varchar(255) , - townTrailNumber tinyint + townName varchar(128), + townCentreCoordsLat varchar(128), + townCentreCoordsLong varchar(128), + townUppermostCoordsLat varchar(128), + townLowermostCoordsLat varchar(128), + townLeftmostCoordsLong varchar(128), + townRightmostCoordsLong varchar(128) + +)engine=InnoDB; -) engine=InnoDB; diff --git a/src/test/java/Test3.java b/src/test/java/Test3.java index d80d3658..9c8f681f 100644 --- a/src/test/java/Test3.java +++ b/src/test/java/Test3.java @@ -1,27 +1,27 @@ -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; -import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; - -import javax.sql.DataSource; - -import static org.junit.jupiter.api.Assertions.assertEquals; - - -public class Test3 { - - @Test -// test2 - public void whenInjectInMemoryDataSource_thenReturnCorrectEmployeeCount1() { - DataSource dataSource = new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2) - .addScript("classpath:schema.sql") - .addScript("classpath:data.sql") - .build(); -// .addScript("classpath:jdbc/test-data.sql") - -// LocationRepositoryJDBC employeeDAO = new LocationRepositoryJDBC(); -// employeeDAO.setDataSource(dataSource); - -// assertEquals(4, employeeDAO.getCountOfEmployees());} - assertEquals(4, 4);} -} +//import org.junit.jupiter.api.Test; +//import org.springframework.boot.test.context.SpringBootTest; +//import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; +//import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; +// +//import javax.sql.DataSource; +// +//import static org.junit.jupiter.api.Assertions.assertEquals; +// +// +//public class Test3 { +// +// @Test +//// test2 +// public void whenInjectInMemoryDataSource_thenReturnCorrectEmployeeCount1() { +// DataSource dataSource = new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2) +// .addScript("classpath:schema.sql") +// .addScript("classpath:data.sql") +// .build(); +//// .addScript("classpath:jdbc/test-data.sql") +// +//// LocationRepositoryJDBC employeeDAO = new LocationRepositoryJDBC(); +//// employeeDAO.setDataSource(dataSource); +// +//// assertEquals(4, employeeDAO.getCountOfEmployees());} +// assertEquals(4, 4);} +//} -- GitLab