-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgroup02_courses_handler.js
163 lines (138 loc) · 5.98 KB
/
group02_courses_handler.js
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
'use strict';
const databaseManager = require('./databaseManager');
const { v4: uuidv4 } = require('uuid');
function createResponse(statusCode, message){
var msg = [message, {responseNotice: 'by group02'}];
return {
statusCode: statusCode,
body: JSON.stringify(msg)
};
}
module.exports.saveCourse = (event, context, callback) => {
//Definiere Partion-Key und Sort-Key um einen neuen Kurs zu speichern.
//Du bekommst das Programm zu dem der Kurs gehört aus der pathParameters übergeben (programId)
//Die Kurs-ID wird hier erzeugt (courseId)
//Die sonstigen Parameter des Kurses durch den Benutzer frei wählbar und werden in der
//POST-Anfrage mitgeschickt.
const programId = event.pathParameters.programId;
const courseId = uuidv4();
const item = JSON.parse(event.body);
//item.PK = "Your PK goes here";
//item.SK = "Your SK goes here";
item.notice = "saved by group02";
databaseManager.saveItem(item).then(response => {
console.log(response);
callback(null, createResponse(200, response));
});
};
module.exports.getCourses = (event, context, callback) => {
//Definiere Partion-Key und Sort-Key um alle Kurse eines Programms abzurufen.
//Du bekommst das Programm zu dem der Kurs gehört aus der pathParameters übergeben (programId)
const programId = event.pathParameters.programId;
const query = {
KeyConditionExpression: "PK = :PK and begins_with(SK, :SK)",
ExpressionAttributeValues: {
// ":PK": "Your PK goes here",
// ":SK": "Your SK goes here"
}
}
databaseManager.getItems(query).then(response => {
console.log(response);
callback(null, createResponse(200, response));
});
};
module.exports.getCourse = (event, context, callback) => {
//Definiere Partion-Key und Sort-Key um einen Kurs abzurufen.
//Du bekommst das Programm zu dem der Kurs gehört (programId)
//und den Kurs (courseId) in den pathParameters übergeben.
const programId = event.pathParameters.programId;
const courseId = event.pathParameters.courseId;
const key = {
//PK: "Your PK goes here",
//SK: "Your SK goes here"
}
databaseManager.getItem(key).then(response => {
console.log(response);
callback(null, createResponse(200, response));
});
};
module.exports.deleteCourse = (event, context, callback) => {
//Definiere Partion-Key und Sort-Key um einen Kurs zu löschen.
//Du bekommst das Programm zu dem der Kurs gehört (programId)
//und den Kurs (courseId) in den pathParameters übergeben.
//Orientiere dich an der Funktion "getCourse".
//Your Code goes here.
databaseManager.deleteItem(key).then(response => {
callback(null, createResponse(200, 'Course was deleted by group02-function'));
});
};
module.exports.updateCourse = (event, context, callback) => {
//Definiere Partion-Key und Sort-Key um ein Key-Value-Paar eines Kurses zu ändern.
//Du bekommst das Programm zu dem der Kurs gehört (programId)
//und den Kurs (courseId) in den pathParameters übergeben.
//Im Body des Put-Aufrufes wird der zu ändernde Key als 'paramName' und
//der neue Wert dieses Keys als 'paramValue' mitgesendet.
//Beispiel {"paramName": "email", "paramValue": "[email protected]"}
// Your Code to define the key with PK and SK from the pathParameters goes here.
//Your Code to define the paramName and paramValue from the event.body goes here.
//Maybe JSON.parse(event.body) can be helpfull.
databaseManager.updateItem(key, paramName, paramValue).then(response => {
console.log("Response: " + response);
callback(null, createResponse(200, response));
});
};
module.exports.getCourseByName = (event, context, callback) => {
const programId = event.pathParameters.programId;
const courseName = decodeURI(event.pathParameters.courseName);
const query = {
IndexName: "PK-data-Index",
KeyConditionExpression: "#PK = :PK and begins_with(#SK, :SK)",
ExpressionAttributeNames: {'#PK': 'PK', '#SK': 'data'},
ExpressionAttributeValues: {
":PK": `PROG#${programId}`,
":SK": `COUR#${courseName}`
}
};
databaseManager.getItems(query).then(response => {
console.log(response);
callback(null, createResponse(200, response));
});
};
module.exports.getStudentsInCourse = (event, context, callback) => {
//Definiere Partion-Key und Sort-Key um alle Studenten
//eines Kurses abzurufen.
//Du bekommst das Programm zu dem der Kurs gehört (programId)
//und den Kurs (courseId) in den pathParameters übergeben.
const programId = event.pathParameters.programId;
const courseId = event.pathParameters.courseId;
const query = {
KeyConditionExpression: "PK = :PK",
ExpressionAttributeValues: {
// ":PK": Your PK goes here
// ":SK": Your SK goes here ...if needed... :-)
}
}
databaseManager.getItems(query).then(response => {
console.log(response);
callback(null, createResponse(200, response));
});
};
module.exports.assignStudentToCourse = (event, context, callback) => {
//Definiere Partion-Key und Sort-Key einen Student in einen
//Kurs einzuschreiben.
//Du bekommst das übergeordnete Programm (programId)
//in den pathParameters übergeben.
//Dem Post-Aufruf wird im Body die Studenten-ID und
//die Kurs-Id mitgegeben.
//Beispiel {"studentId": "12345", "courseId": "67890", "optional": "something additional"}
const programId = event.pathParameters.programId;
//const studentId = Your Code to define studentId goes here
//const courseId = Your Code to define studentId goes here
//nutze JSON.parse(event.body)
//item.PK = Your Code to define PK goes here
//item.SK = Your Code to define SK goes here
databaseManager.saveItem(item).then(response => {
console.log(response);
callback(null, createResponse(200, response));
});
};