Skip to content

Commit e01894c

Browse files
author
Rohit Eyyunni
committed
first 11 functions not tested, also fixes to schema
1 parent c8648a1 commit e01894c

File tree

2 files changed

+150
-4
lines changed

2 files changed

+150
-4
lines changed

operations.sql

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
-- 1. createAccount
2+
3+
CREATE OR REPLACE FUNCTION createAccount(
4+
arg_username VARCHAR(30),
5+
arg_passkey VARCHAR(30),
6+
arg_p_role olympics.participant_roles
7+
) RETURNS VOID as $$
8+
DECLARE
9+
date_time TIMESTAMP;
10+
BEGIN
11+
INSERT INTO olympics.ACCOUNT (username, passkey, participant_role, last_login)
12+
VALUES(arg_username, arg_passkey, arg_p_role, date_time);
13+
END;
14+
$$ language plpgsql;
15+
16+
-- 2. deleteAccount
17+
18+
CREATE OR REPLACE FUNCTION deleteAccount(
19+
arg_account_id INT
20+
) RETURNS VOID as $$
21+
BEGIN
22+
DELETE FROM olympics.ACCOUNT WHERE account_id = arg_account_id;
23+
END;
24+
$$ language plpgsql;
25+
26+
27+
-- 3. addParticipant
28+
29+
CREATE OR REPLACE FUNCTION addParticipant(
30+
arg_account_id INT,
31+
arg_fname VARCHAR(30),
32+
arg_middle VARCHAR(30),
33+
arg_lname VARCHAR(30),
34+
arg_country CHAR(3),
35+
arg_dob TIMESTAMP,
36+
arg_gender olympics.athlete_gender
37+
) RETURNS VOID AS $$
38+
BEGIN
39+
INSERT INTO olympics.PARTICIPANT (account, first_name, middle_name, last_name, birth_country, dob, gender)
40+
VALUES (arg_account_id, arg_fname, arg_middle, arg_lname, arg_country, arg_dob, arg_gender);
41+
END;
42+
$$ language plpgsql;
43+
44+
--4. deleteParticipant
45+
CREATE OR REPLACE FUNCTION deleteParticipant(
46+
arg_participant_id INT
47+
) RETURNS VOID as $$
48+
BEGIN
49+
DELETE FROM olympics.PARTICIPANT WHERE participant_id = arg_participant_id;
50+
END;
51+
$$ language plpgsql;
52+
53+
54+
--5. addTeamMember
55+
56+
CREATE OR REPLACE FUNCTION addTeamMember(
57+
arg_participant_id INT,
58+
arg_team_id INT
59+
) RETURNS VOID as $$
60+
BEGIN
61+
INSERT INTO olympics.TEAM_MEMBERS (team, participant) VALUES (arg_team_id, arg_participant_id);
62+
END;
63+
$$ language plpgsql;
64+
65+
--6. removeTeamMember
66+
67+
CREATE OR REPLACE FUNCTION removeTeamMember(
68+
arg_participant_id INT,
69+
arg_team_id INT
70+
) RETURNS VOID as $$
71+
BEGIN
72+
DELETE FROM olympics.TEAM_MEMBERS WHERE team = arg_team_id AND (participant_id = arg_participant_id);
73+
END;
74+
$$ language plpgsql;
75+
76+
-- 7. registerTeam
77+
78+
CREATE OR REPLACE FUNCTION registerTeam(
79+
arg_olympiad_id VARCHAR(30),
80+
arg_sport_id INT,
81+
arg_coach_id INT,
82+
arg_country_id CHAR(3),
83+
arg_gender olympics.team_gender
84+
) RETURNS VOID AS $$
85+
BEGIN
86+
INSERT INTO olympics.TEAM (olympiad, sport, coach, country, gender, eligible)
87+
VALUES (arg_olympiad_id, arg_sport_id, arg_coach_id, arg_country_id, arg_gender, TRUE);
88+
END;
89+
$$ language plpgsql;
90+
91+
--8. addEvent
92+
93+
CREATE OR REPLACE FUNCTION addEvent(
94+
arg_venue_id INT,
95+
arg_olympiad_id VARCHAR(30),
96+
arg_sport_id INT,
97+
arg_gender olympics.team_gender,
98+
arg_date TIMESTAMP
99+
) RETURNS VOID AS $$
100+
BEGIN
101+
INSERT INTO olympics.EVENT (venue, olympiad, sport, gender, date)
102+
VALUES (arg_venue_id, arg_olympiad_id, arg_sport_id, arg_gender, arg_date);
103+
END;
104+
$$ language plpgsql;
105+
106+
--9. addTeamToEvent
107+
108+
CREATE OR REPLACE FUNCTION addTeamToEvent(
109+
arg_event_id INT,
110+
arg_team_id INT
111+
) RETURNS VOID as $$
112+
BEGIN
113+
INSERT INTO olympics.PLACEMENT (event, team, medal, position)
114+
VALUES (arg_event_id, arg_team_id, NULL, NULL);
115+
END;
116+
$$ language plpgsql;
117+
118+
-- 10. addEventOutcome
119+
120+
CREATE OR REPLACE FUNCTION addEventOutcome(
121+
arg_event_id INT,
122+
arg_team_id INT,
123+
arg_position INT
124+
) RETURNS VOID as $$
125+
BEGIN
126+
INSERT INTO olympics.PLACEMENT (event, team, medal, position)
127+
VALUES (arg_event_id, arg_team_id, NULL, arg_position);
128+
END;
129+
$$ language plpgsql;
130+
131+
--11. disqualifyTeam
132+
133+
CREATE OR REPLACE FUNCTION disqualifyTeam(
134+
arg_team_id INT
135+
) RETURNS VOID as $$
136+
BEGIN
137+
UPDATE olympics.PLACEMENT
138+
SET position = -1
139+
WHERE team = arg_team_id;
140+
END;
141+
$$ language plpgsql;
142+

schema.sql

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,9 @@ CREATE TABLE TEAM (
115115
olympiad VARCHAR(30) NOT NULL, --olympiad number for reference to olympiad table (identified by olympiad_num)
116116
sport INT NOT NULL, --sport id for reference to sport table (identified by sport_id)
117117
coach INT NOT NULL, --participant id for reference to participant table (identified by participant_id)
118-
country CHAR(3) NOT NULL, --country code for reference to country
118+
country CHAR(3) NOT NULL, --country code for reference to country,
119+
gender athlete_gender,
120+
eligible BOOLEAN,
119121
CONSTRAINT team_pk PRIMARY KEY (team_id), --checks that the team id is unique and not null
120122
CONSTRAINT team_olympiad_fk FOREIGN KEY (olympiad) REFERENCES OLYMPIAD(olympiad_num) ON DELETE CASCADE, --checks that the olympiad number is a valid olympiad number
121123
CONSTRAINT team_sport_fk FOREIGN KEY (sport) REFERENCES SPORT(sport_id) ON DELETE CASCADE, --checks that the sport id is a valid sport id
@@ -156,7 +158,9 @@ CREATE TABLE EVENT (
156158
event_id SERIAL,
157159
venue INT NOT NULL, --venue id for reference to venue table (identified by venue_id)
158160
olympiad VARCHAR(30) NOT NULL, --olympiad number for reference to olympiad table (identified by olympiad_num)
159-
sport INT NOT NULL, --sport id for reference to sport table (identified by sport
161+
sport INT NOT NULL, --sport id for reference to sport table (identified by sport,
162+
gender team_gender,
163+
date TIMESTAMP,
160164
CONSTRAINT events_pk PRIMARY KEY (event_id), --checks that the event id is unique and not null
161165
CONSTRAINT events_venue_fk FOREIGN KEY (venue) REFERENCES VENUE(venue_id) ON DELETE CASCADE, --checks that the venue id is a valid venue id
162166
CONSTRAINT events_olympiad_fk FOREIGN KEY (olympiad) REFERENCES OLYMPIAD(olympiad_num) ON DELETE CASCADE,--checks that the olympiad number is a valid olympiad number
@@ -184,8 +188,8 @@ Format: (event, team, medal, position)
184188
CREATE TABLE PLACEMENT (
185189
event INT NOT NULL, --event id for reference to event table (identified by event_id)
186190
team INT NOT NULL, --team id for reference to team table (identified by team_id)
187-
medal INT NOT NULL, --medal id for reference to medal table (identified by medal_id)
188-
position INT NOT NULL,
191+
medal INT, --medal id for reference to medal table (identified by medal_id)
192+
position INT,
189193
CONSTRAINT placement_pk PRIMARY KEY (event, team), --checks that the event id and team id are unique and not null
190194
CONSTRAINT placement_event_fk FOREIGN KEY (event) REFERENCES EVENT(event_id) ON DELETE CASCADE, --checks that the event id is a valid event id
191195
CONSTRAINT placement_team_fk FOREIGN KEY (team) REFERENCES TEAM(team_id) ON DELETE CASCADE, --checks that the team id is a valid team id

0 commit comments

Comments
 (0)