From beffe7d347895bcc7fc0cc2882ff43017ebaa024 Mon Sep 17 00:00:00 2001
From: Finlay White <whitef6@cardiff.ac.uk>
Date: Thu, 13 Apr 2023 13:33:42 +0100
Subject: [PATCH] badges added

---
 createdb.sql | 99 ++++++++++++++++++++++++++++++++++++++++------------
 1 file changed, 77 insertions(+), 22 deletions(-)

diff --git a/createdb.sql b/createdb.sql
index 35e0b00..cb0bcb7 100644
--- a/createdb.sql
+++ b/createdb.sql
@@ -1,6 +1,6 @@
 DROP SCHEMA IF EXISTS `SuperGeeks`;
 CREATE SCHEMA `SuperGeeks`;
-USE `SuperGeeks`; 
+USE `SuperGeeks`;
 DROP TABLE IF EXISTS `Parents`;
 CREATE TABLE `Parents`(
 parentID varchar(40) not null unique,
@@ -16,7 +16,7 @@ phonenum int(10));
 DROP TABLE IF EXISTS `Students`;
 CREATE TABLE `Students`(
 studentID varchar(40) not null unique,
-primary key(studentID),
+studentCode int key auto_increment,
 fname varchar(35),
 lname varchar(35),
 -- The UK Government Data Standards Catalogue reccomends 35 characters for each the first name and last name
@@ -26,10 +26,10 @@ parentsID varchar(40),
 groupID varchar(40),
 FOREIGN KEY (parentsID) REFERENCES Parents(parentID)
 -- parent ID is stored in student rather than the parents table so that one parent can have many children
--- and not one child can have many parents. A child may have multiple parents irl but they would share an 
--- account 
+-- and not one child can have many parents. A child may have multiple parents irl but they would share an
+-- account
 );
-
+ALTER TABLE Students auto_increment = 30001;
 DROP TABLE IF EXISTS `Volunteers`;
 CREATE TABLE `Volunteers`(
 	VolunteerID varchar(40) not null unique,
@@ -60,8 +60,7 @@ CREATE TABLE `Badge`(
 	BadgeID varchar(40) not null unique,
     primary key(BadgeID),
     badgeName varchar(35),
-    badgeDesc varchar(255),
-    RequirementID varchar(40)
+    badgeDesc varchar(255)
     );
 DROP TABLE IF EXISTS `BadgeAwarded`;
 CREATE TABLE `BadgeAwarded`(
@@ -77,8 +76,6 @@ CREATE TABLE `BadgeAwarded`(
     );
 -- DROP TABLE IF EXISTS `Badgereqs`;
 CREATE TABLE `Badgereqs`(
-	RequirementID varchar(40) not null unique,
-    primary key(RequirementID),
     mustbecompleted varchar(40),
     tocomplete varchar(40),
     FOREIGN KEY (mustbecompleted) REFERENCES Badge(BadgeID),
@@ -99,49 +96,107 @@ Alter table `Badge`ADD FOREIGN KEY (RequirementID) REFERENCES Badgereqs(Requirem
 drop procedure if exists addParent;
 delimiter $$
 CREATE PROCEDURE addParent(
-    	IN fname varchar(35), 
+    	IN fname varchar(35),
 	IN lname varchar(35),
 	IN email varchar(320),
 	IN passwerd varchar(70),
 	IN phonenum int(10))
 
 BEGIN
-    DECLARE EXIT HANDLER FOR 1062 
+    DECLARE EXIT HANDLER FOR 1062
     BEGIN
  	SELECT 'User already exists' as ERROR ;
     END;
 
 --    if (locate("@",email) = 0
 	-- 	Select "invalid email as Error";
-    
-        INSERT INTO Parents(parentID,fname,lname,email,phonenum) values 
+
+        INSERT INTO Parents(parentID,fname,lname,email,phonenum) values
 	(md5(concat(email,passwerd)),fname,lname,email,phonenum);
 END$$addParent
 DELIMITER ;
 drop procedure if exists addVolunteer;
 delimiter $$
 CREATE PROCEDURE addVolunteer(
-	IN fname varchar(35), 
+	IN fname varchar(35),
 	IN lname varchar(35),
 	IN email varchar(320),
 	IN passwerd varchar(70),
 	IN phonenum int(10))
 
 BEGIN
-    DECLARE EXIT HANDLER FOR 1062 
+    DECLARE EXIT HANDLER FOR 1062
     BEGIN
  	SELECT 'User already exists' as ERROR ;
     END;
 
-        INSERT INTO Volunteers(VolunteerID,fname,lname,email,emergencycontact) values 
+        INSERT INTO Volunteers(VolunteerID,fname,lname,email,emergencycontact) values
 	(md5(concat(email,passwerd)),fname,lname,email,phonenum);
-END$$addParent
+END$$
+DELIMITER ;
+
+drop procedure if exists addBadgereq;
+delimiter $$
+CREATE PROCEDURE addBadgereq(
+	IN youNeed varchar(40),
+	IN  toGet varchar(40))
+	-- I use this naming scheme as it just makes it easy to understand
+	-- which badge is which in this relationship
+
+BEGIN
+    DECLARE EXIT HANDLER FOR 1452
+    BEGIN
+ 	SELECT 'Badge not found' as ERROR ;
+    END;
+
+        INSERT INTO Badgereqs(mustbecompleted,tocomplete) values
+	(youNeed,toGet) ;
+END$$
+DELIMITER ;
+
+drop procedure if exists addBadge;
+delimiter $$
+CREATE PROCEDURE addBadge(
+	IN badgeName varchar(40),
+	IN badgeDesc varchar(255))
+
+BEGIN
+    DECLARE EXIT HANDLER FOR 1062
+    BEGIN
+ 	SELECT ' Badge already exists' as ERROR ;
+    END;
+
+        INSERT INTO Badge(BadgeID,badgeName,badgeDesc) values
+	(md5(badgeName),badgeName,badgeDesc);
+END$$
 DELIMITER ;
 
+drop procedure if exists addStudent;
+delimiter $$
+CREATE PROCEDURE addStudent(
+	IN fname varchar(35),
+	IN lname varchar(35),
+    IN bday date,
+    IN parentsID varchar(40),
+	IN passwerd varchar(70))
+
+BEGIN
+    DECLARE EXIT HANDLER FOR 1062
+    BEGIN
+ 	SELECT 'User already exists' as ERROR ;
+    END;
+
+        INSERT INTO Students(StudentID,fname,lname,bday,parentsID) values
+	(md5(concat(fname,lname,passwerd)),fname,lname,bday,parentsID);
+END$$
+DELIMITER ;
+
+call addParent("jeff","Jones","email@realemail.com","veryStrongPassw0rd",02358254);
+call addStudent("bobby","jones",'2012-2-11','8e301d6e513165a9c0b6b9a2b10c8305',"EXTRASTRONGPASSWORD");
+call addBadge("real badge","this is a totally real badge");
+call addStudent("timothy","jones",'2002-2-11','8e301d6e513165a9c0b6b9a2b10c8305',"EXTRASTRONGPASSWORD");
+
 
-call addVolunteer("jeff","Jones","email@realemail.com","veryStrongPassw0rd",02358254);
-call addVolunteer("jeff","Jones","sdkufhsdkfh@wshfksjdfh.com","veryStrongPassw0rd",02358254);
-call addVolunteer("jeff","Jones","email@realemfvail.com","veryStrongPassw0rd",02358254);
-call addVolunteer("jeff","Jones","esmail@realemail.com","veryStrongPassw0rd",02358254);
 
-select * from volunteers;
\ No newline at end of file
+select * from badge;
+-- select * from parents;``
-- 
GitLab