-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprocedureSetup.sql
More file actions
183 lines (155 loc) · 4.94 KB
/
Copy pathprocedureSetup.sql
File metadata and controls
183 lines (155 loc) · 4.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
DELIMITER $$
-- Battery Procedures
CREATE PROCEDURE getBatteries()
BEGIN
SELECT id, name, capacity, startVoltage, date
FROM Batteries;
END$$
CREATE PROCEDURE getBattery(batteryId INT UNSIGNED)
BEGIN
SELECT *
FROM Batteries
WHERE id = batteryId
LIMIT 1;
END$$
CREATE PROCEDURE createBattery(name VARCHAR(50), date DATE, description VARCHAR(255))
BEGIN
INSERT
INTO Batteries (name, date, description)
VALUES(name, DATE(date), description);
SELECT LAST_INSERT_ID() as id;
END$$
CREATE PROCEDURE editBattery(batteryId INT UNSIGNED, name VARCHAR(50), date DATE, description VARCHAR(255))
BEGIN
UPDATE Batteries
SET Batteries.name = name, Batteries.date = date, Batteries.description = description
WHERE id = batteryId;
END$$
CREATE PROCEDURE deleteBattery(batteryId INT UNSIGNED)
BEGIN
DELETE
FROM Timestamps
WHERE testId IN (
SELECT startTime FROM Tests WHERE Tests.batteryId = batteryId
)
LIMIT 1;
DELETE
FROM Tests
WHERE Tests.batteryId = batteryId;
DELETE
FROM batteryId
WHERE id = batteryId;
END$$
CREATE PROCEDURE setCapacity(batteryId INT UNSIGNED, capacity DOUBLE, startVoltage DOUBLE)
BEGIN
UPDATE Batteries
SET Batteries.capacity = capacity, Batteries.startVoltage = startVoltage
WHERE id = batteryId;
END$$
-- Test Procedures
CREATE PROCEDURE getBatteryTests(batteryId INT UNSIGNED)
BEGIN
SELECT *
FROM Tests
WHERE Tests.batteryId = batteryId;
END$$
CREATE PROCEDURE getTest(testId BIGINT UNSIGNED)
BEGIN
SELECT MIN(voltage) AS minVoltage, MAX(voltage) AS maxVoltage, MIN(current) AS minCurrent, MAX(current) AS maxCurrent, Tests.*
FROM Tests, (SELECT current, voltage FROM Timestamps WHERE Timestamps.testId = testId) AS Timestamps
WHERE startTime = testId
GROUP BY startTime
LIMIT 1;
END$$
CREATE PROCEDURE recordTest(batteryId INT UNSIGNED, startTime BIGINT UNSIGNED, duration BIGINT UNSIGNED, name VARCHAR(255), startVoltage DOUBLE, capacity DOUBLE, success BOOL, codeVersion INT)
BEGIN
INSERT INTO Tests (batteryId, startTime, duration, name, startVoltage, capacity, success, codeVersion)
VALUES(batteryId, startTime, duration, name, startVoltage, capacity, success, codeVersion);
END$$
CREATE PROCEDURE deleteTest(testId BIGINT UNSIGNED)
BEGIN
DELETE
FROM Timestamps
WHERE Timestamps.testId = testId;
DELETE
FROM Tests
WHERE Tests.startTime = testId
LIMIT 1;
END$$
CREATE PROCEDURE getTimestamps(testId BIGINT UNSIGNED)
BEGIN
SELECT *
FROM Timestamps
WHERE Timestamps.testId = testId;
END$$
CREATE PROCEDURE insertTimestamp(testId BIGINT UNSIGNED, time BIGINT UNSIGNED, voltage DOUBLE, current DOUBLE)
BEGIN
INSERT
INTO Timestamps (testId, time, voltage, current)
VALUES (testId, time, voltage, current);
END$$
CREATE PROCEDURE setTestCapacity(testId BIGINT UNSIGNED, capacity DOUBLE)
BEGIN
UPDATE Tests
SET capacity = capacity
WHERE startTime = testId
LIMIT 1;
END$$
-- Notes Procedures
CREATE PROCEDURE getBatteryNotes(batteryId INT UNSIGNED)
BEGIN
SELECT time, note
FROM Battery_Notes
WHERE Battery_Notes.batteryId = batteryId;
END$$
CREATE PROCEDURE recordNote(batteryId INT UNSIGNED, time BIGINT UNSIGNED, note VARCHAR(1023))
BEGIN
INSERT
INTO Battery_Notes (batteryId, time, note)
VALUES(batteryId, time, note);
END$$
CREATE PROCEDURE deleteNote(noteId BIGINT UNSIGNED)
BEGIN
DELETE
FROM Battery_Notes
WHERE time = noteId
LIMIT 1;
END$$
CREATE PROCEDURE getEventMatches(batteryId INT UNSIGNED, eventKey VARCHAR(31))
BEGIN
SELECT matchKey, teamNumber, time, voltageHigh, voltageLow
FROM Matches
WHERE Matches.batteryId = batteryId AND Matches.eventKey = eventKey;
END$$
CREATE PROCEDURE getBatteryMatches(batteryId INT UNSIGNED)
BEGIN
SELECT eventKey, matchKey, teamNumber, time, voltageHigh, voltageLow
FROM Matches
WHERE Matches.batteryId = batteryId;
END$$
CREATE PROCEDURE getMatch(batteryId INT UNSIGNED, eventKey VARCHAR(31), matchKey VARCHAR(31))
BEGIN
SELECT *
FROM Matches
WHERE Matches.eventKey = eventKey AND Matches.matchKey = matchKey AND Matches.batteryId = batteryId
LIMIT 1;
END$$
CREATE PROCEDURE deleteMatch(batteryId INT UNSIGNED, eventKey VARCHAR(31), matchKey VARCHAR(31))
BEGIN
DELETE
FROM Matches
WHERE Matches.eventKey = eventKey AND Matches.matchKey = matchKey AND Matches.batteryId = batteryId
LIMIT 1;
END$$
CREATE PROCEDURE recordMatch(batteryId INT UNSIGNED, eventKey VARCHAR(31), matchKey VARCHAR(31), teamNumber INT UNSIGNED, time BIGINT UNSIGNED, voltageHigh DOUBLE, voltageLow DOUBLE)
BEGIN
call deleteMatch(batteryId, eventKey, matchKey);
INSERT INTO Matches(batteryId, eventKey, matchKey, teamNumber, time, voltageHigh, voltageLow)
VALUES(batteryId, eventKey, matchKey, teamNumber, time, voltageHigh, voltageLow);
END$$
-- Teams Procedures
CREATE PROCEDURE getTeams()
BEGIN
SELECT * FROM Teams;
END$$
DELIMITER ;