Sebelum mengerjakan kalian WAJIB menjalankan command pnpm install atau npm install untuk menginstal depedency yang diperlukan.
Student Activities Registration merupakan sebuah aplikasi untuk student dapat melakukan pendaftaran UKM (Unit Kegiatan Mahasiswa) sesuai dengan hari yang diajukan student serta menghapus data student yang sudah di daftarkan.
Pada final project ini, kalian di berikan beberapa async function dengan penamaan sesuai dengan kegunaannya, antara lain:
studentActivitiesRegistration: Merupakan sebuah function utama yang akan memanggil function lainnya untuk mendaftarkan atau menghapus data student.getStudentActivities: Merupakan sebuah function untuk mendapatkan data UKM apa saja yang tersedia.addStudent: Merupakan sebuah function untuk mendaftarkan data student.deleteStudent: Merupakan sebuah function untuk menghapus data student.
Selain itu kalian diberikan juga sebuah file json-server dengan nama student-activities-db.json dalam folder /server sebagai server kalian yang memiliki beberapa end-points, antara lain:
- GET
/students: Untuk mendapatkan data student. - POST
/students: Untuk mendaftarkan data student. - DELETE
/students/id: Untuk menghapus data student berdasarkanidstudent. - GET
/activities: Untuk mendapatkan data UKM.
Server dapat di jalankan menggunakan command
npm run start:serverdan akan berjalan padahttp://localhost:3001.
Terdapat beberapa format input terminal yang WAJIB kalian ikuti, antara lain:
-
Add Student
node main.js METHOD "Name" "Day"
contoh
node main.js "CREATE" "John Doe" "Sunday"
-
Delete Student
node main.js METHOD "id"
contoh
node main.js "DELETE" "2"
Terdapat juga function process_argv yang akan menerima input yang kalian masukan pada terminal. Function ini sendiri akan memanggil function studentActivitiesRegistration yang kalian gunakan.
Kalian tidak perlu mengubah atau mengerjakan apa pun pada function
process_argv
Function getStudentActivities merupakan function yang digunakan untuk mendapatkan data dari UKM apa saja yang tersedia untuk student. Untuk mendapatkan data UKM kalian dapat melakukan hit ke end-point /activities pada json-server. Terdapat data yang di sediakan pada json-server berupa data seluruh UKM yang terdaftar.
"activities": [
{
"id": 1,
"name": "Mahitala",
"desc": "Mahasiswa Pecinta Alam",
"days": [
"Sunday"
]
},
{
"id": 2,
"name": "Listra",
"desc": "Seni Tari Tradisional",
"days": [
"Wednesday",
"Friday"
]
},
{
"id": 3,
"name": "Satre",
"desc": "Seni Teater",
"days": [
"Monday",
"Thursday"
]
},
...
]notes: Function ini tidak menerima parameter apapun.
Output pada function ini berupa array of objects yang mana setiap elemen dari array merupakan data berupa object dari UKM yang terdaftar dengan key sebagai berikut:
| Key | Value Type |
|---|---|
| id | integer |
| name | string |
| desc | string |
| days | array of string |
Input:
getStudentActivities();Expected Output / Behavior:
[
{
id: 1,
name: "Mahitala",
desc: "Mahasiswa Pecinta Alam",
days: ["Sunday"],
},
{
id: 2,
name: "Listra",
desc: "Seni Tari Tradisional",
days: ["Wednesday", "Friday"],
},
{
id: 3,
name: "Satre",
desc: "Seni Teater",
days: ["Monday", "Thursday"],
},
...
];Function studentActivitiesRegistration merupakan sebuah function utama yang menerima sebuah parameter data dan akan memanggil 2 function lainnya yaitu function untuk mendaftarkan student berupa addStudent dan function untuk menghapus student berupa deleteStudent berdasarkan METHOD yang diterimanya.
Value parameter data pada function ini berupa array yang memiliki element berupa method, name dan day (add) atau method dan id (delete) yang kalian butuhkan berdasarkan input yang dimasukan melalui terminal. Sedangkan output dari function ini berupa object tergantung dari method yang diterimanya.
Dibawah ini ketentuan dalam pengerjaan pada function studentActivitiesRegistration:
- Diasumsikan
METHODyang diterima hanya berupaCREATEatauDELETE(dalam huruf besar/kapital) - Jika
METHODyang diterima bernilaiCREATE, sistem akan memproses pendaftaran data student. - Jika
METHODyang diterima bernilaiDELETE, sistem akan memproses penghapusan data student.
-
ADD:
Input:
// studentActivitiesRegistration(data); studentActivitiesRegistration(["CREATE", "Anshori Atmodiredjo", "Sunday"]);
Expected Output / Behavior:
{ id: 2, name: 'Anshori Atmodiredjo', activities: [ { name: 'Mahitala', desc: 'Mahasiswa Pecinta Alam' }, { name: 'Korgala', desc: 'Korps Tenaga Sukarela' } ] }
Explanation:
`METHOD` yang diterima bernilai `CREATE`, sistem akan memproses pendaftaran data student. `name` yang diterima berupa 'Anshori Atmodiredjo'. `day` yang diterima berupa 'Sunday', sehingga akan mencari UKM apa saja yang tersedia di hari tersebut. Berdasarkan data yang diterima, UKM yang tersedia di hari tersebut adalah 'Mahitala' dan 'Korgala'
-
DELETE:
Input:
// studentActivitiesRegistration(data); studentActivitiesRegistration(["DELETE", "2"]);
Expected Output / Behavior:
{ message: "Successfully deleted student data with id 2"; }
Explanation:
`METHOD` yang diterima bernilai `DELETE`, sistem akan memproses penghapusan data student. `id` yang diterima bernilai '2'. Sehingga akan menghapus data student pada database dengan `id` yang diterima dan menampilkan pesan sesuai template.
Function addStudent akan menerima sebuah parameter berupa name dan day dalam bentuk string. Pada function ini kalian di minta untuk mendaftarkan data student yang diterima dalam parameter ke dalam database dengan format berikut:
| Name | Data Type |
|---|---|
| name | string |
| activities | array of objects |
name: merupakan sama student yang diterima pada parameter.activities: merupakan data UKM apa saja yang dapat diikuti oleh student berdasarkandayyang diterima dari paramter.
Kalian dapat menggunakan function getStudentActivities untuk mendapatkan data UKM yang terdaftar, lalu membandingkan hari yang diajukan student dengan hari yang tersedia dari masing-masing UKM. Yang perlu di perhatikan adalah setiap data dari UKM yang dapat diikuti oleh student dalam object yang memiliki key berupa name dan desc (id dan days tidak disertakan).
// Contoh:
{
name: "Mahitala",
desc: "Mahasiswa Pecinta Alam"
}Untuk melakukan create data kalian dapat menggunakan end-point /students.
Input:
// addStudent(name, day)
addStudent("Anshori Atmodiredjo", "Sunday");Expected Output / Behavior:
{
id: 2,
name: 'Anshori Atmodiredjo',
activities: [
{ name: 'Mahitala', desc: 'Mahasiswa Pecinta Alam' },
{ name: 'Korgala', desc: 'Korps Tenaga Sukarela' }
]
}Explanation:
`name` yang diterima berupa 'Anshori Atmodiredjo'.
`day` yang diterima berupa 'Sunday', sehingga akan mencari UKM apa saja yang tersedia di hari tersebut.
Berdasarkan data yang diterima, UKM yang tersedia di hari tersebut adalah 'Mahitala' dan 'Korgala'Function deleteStudent akan menerima sebuah parameter berupa id student dalam bentuk string. Pada function ini kalian di minta untuk menghapus data student yang sudah ada pada database sesuai dengan id yang diterima dalam parameter. Jika data berhasil di hapus maka akan mengembalikan message dalam bentuk object sebagai berikut:
"Successfully deleted student data with id <studentId>"Untuk melakukan delete data kalian dapat menggunakan endpoint /students
Input:
// deleteStudent(id)
deleteStudent("2");Expected Output / Behavior:
{
message: "Successfully deleted student data with id 2";
}Explanation:
`id` yang diterima bernilai '2'.
Sehingga akan menghapus data student pada database dengan `id` yang diterima dan menampilkan pesan sesuai template.