Members
(constant) loanValidation :Object
Validasi untuk peminjaman buku. Validasi ini memastikan bahwa data
yang diterima untuk proses peminjaman buku sesuai dengan format yang
benar.
Type:
- Object
Properties:
Name | Type | Description |
---|---|---|
student_id |
number | ID mahasiswa yang meminjam buku, wajib ada dan harus berupa angka |
book_id |
number | ID buku yang akan dipinjam, wajib ada dan harus berupa angka |
notes |
string | Catatan peminjaman buku yang bersifat opsional, panjang maksimal 100 karakter dan bisa kosong |
- Source:
(constant) logger :winston.Logger
Logger instance yang dikonfigurasi menggunakan Winston. Konfigurasi:
- Level log: `info` - Format: JSON dengan indentasi 1 spasi -
Transport: Output ke konsol Penggunaan: - Gunakan metode seperti
`logger.info`, `logger.error`, atau `logger.warn` untuk mencatat log
dengan level yang sesuai.
Type:
- winston.Logger
Properties:
Name | Type | Description |
---|---|---|
level |
string | Level logging default untuk logger ini (default: "info"). |
format |
winston.Logform.Format | Format logging yang digunakan (default: JSON dengan indentasi 1 spasi). |
transports |
Array.<winston.transport> | Transportasi logging yang digunakan (default: Console transport). |
- Source:
- See:
-
- https://github.com/winstonjs/winston Dokumentasi resmi Winston
(constant) loginUserValidation :Object
Validasi untuk login pengguna. Validasi ini memastikan bahwa data
yang diterima untuk proses login pengguna sesuai dengan format yang
benar.
Type:
- Object
Properties:
Name | Type | Description |
---|---|---|
email |
string | Alamat email pengguna, wajib ada dan harus berupa email yang valid |
password |
string | Kata sandi pengguna, wajib ada dan tidak dibatasi panjangnya |
- Source:
(constant) newBookValidation :Object
Validasi untuk menambahkan buku baru. Validasi ini memastikan bahwa
data yang diterima untuk buku baru memenuhi semua persyaratan,
termasuk validasi untuk id, judul, deskripsi, penulis, ISBN, ID
penerbit, genre, dan stok.
Type:
- Object
Properties:
Name | Type | Description |
---|---|---|
id |
Object | ID buku yang harus berupa angka dan wajib ada |
title |
string | Judul buku yang harus berupa string dengan panjang maksimal 255 karakter dan wajib ada |
description |
string | Deskripsi buku yang bersifat opsional dan maksimal 255 karakter |
author |
string | Penulis buku yang harus berupa string dengan panjang maksimal 255 karakter dan wajib ada |
isbn |
string | ISBN buku yang harus berupa string dengan panjang maksimal 255 karakter dan wajib ada |
publisherBookId |
number | ID penerbit yang harus berupa angka dan wajib ada |
genres |
Array.<number> | Daftar ID genre yang harus berupa array angka dan wajib ada |
stok |
number | Jumlah stok buku yang harus berupa angka dan minimal 0 |
- Source:
(constant) prismaClient
Instance PrismaClient yang dikonfigurasi untuk logging. Konfigurasi
logging: - query: Log untuk semua query yang dijalankan. - error:
Log untuk semua error yang terjadi. - info: Log untuk informasi
tambahan. - warn: Log untuk peringatan. Event handler: - `error`:
Log error menggunakan logger. - `info`: Log informasi menggunakan
logger. - `warn`: Log peringatan menggunakan logger.
- Source:
(constant) registrationUserValidation :Object
Validasi untuk registrasi pengguna baru. Validasi ini memastikan
bahwa data yang diterima untuk proses registrasi pengguna baru
sesuai dengan format yang benar.
Type:
- Object
Properties:
Name | Type | Description |
---|---|---|
name |
string | Nama pengguna, wajib ada dan memiliki panjang maksimal 100 karakter |
email |
string | Alamat email pengguna, wajib ada dan harus berupa email yang valid |
password |
string | Kata sandi pengguna, wajib ada dan tidak dibatasi panjangnya |
gender |
string | Jenis kelamin pengguna, wajib ada dan hanya boleh bernilai "Male" atau "Female" |
- Source:
(constant) removeBookValidationById :Object
Validasi untuk menghapus buku berdasarkan ID. Validasi ini
memastikan bahwa ID buku yang akan dihapus adalah berupa angka dan
wajib ada.
Type:
- Object
Properties:
Name | Type | Description |
---|---|---|
id |
Object | ID buku yang akan dihapus, yang harus berupa angka dan wajib ada |
- Source:
(constant) returnValidation :Object
Validasi untuk pengembalian buku. Validasi ini memastikan bahwa data
yang diterima untuk proses pengembalian buku sesuai dengan format
yang benar.
Type:
- Object
Properties:
Name | Type | Description |
---|---|---|
student_id |
number | ID mahasiswa yang mengembalikan buku, wajib ada dan harus berupa angka |
book_id |
number | ID buku yang akan dikembalikan, wajib ada dan harus berupa angka |
- Source:
(constant) updateBookValidation :Object
Validasi untuk memperbarui buku. Validasi ini memastikan bahwa data
yang diterima untuk memperbarui buku memenuhi semua persyaratan yang
sama dengan validasi untuk buku baru, termasuk validasi untuk id,
judul, deskripsi, penulis, ISBN, ID penerbit, genre, dan stok.
Type:
- Object
Properties:
Name | Type | Description |
---|---|---|
id |
Object | ID buku yang harus berupa angka dan wajib ada |
title |
string | Judul buku yang harus berupa string dengan panjang maksimal 255 karakter dan wajib ada |
description |
string | Deskripsi buku yang bersifat opsional dan maksimal 255 karakter |
author |
string | Penulis buku yang harus berupa string dengan panjang maksimal 255 karakter dan wajib ada |
isbn |
string | ISBN buku yang harus berupa string dengan panjang maksimal 255 karakter dan wajib ada |
publisherBookId |
number | ID penerbit yang harus berupa angka dan wajib ada |
genres |
Array.<number> | Daftar ID genre yang harus berupa array angka dan wajib ada |
stok |
number | Jumlah stok buku yang harus berupa angka dan minimal 0 |
- Source:
Methods
(async) addNewBook(req, res, next) → {void}
Menambahkan buku baru melalui layanan admin. Fungsi ini menerima
request untuk menambahkan buku baru, kemudian memanggil layanan
`adminService.addNewBook()` untuk memproses data buku yang dikirim
melalui request. Setelah itu, mengirimkan respons dengan status 200
dan data buku yang berhasil ditambahkan. Jika terjadi error, error
tersebut diteruskan ke middleware error handler.
Parameters:
Name | Type | Description |
---|---|---|
req |
express.Request | Request objek yang berisi data buku yang akan ditambahkan. |
res |
express.Response | Response objek untuk mengirimkan hasil operasi ke client. |
next |
express.NextFunction | Fungsi middleware untuk meneruskan error ke handler berikutnya. |
- Source:
Returns:
Mengirimkan respons JSON dengan status 200 jika berhasil, atau error
jika gagal.
- Type
- void
(async) addNewBook(req, res) → {string}
Menambahkan buku baru ke dalam database. Menggunakan data yang
diterima melalui body request untuk membuat buku baru. Jika buku
dengan judul yang sama sudah ada, maka akan mengembalikan kesalahan.
Setiap genre buku akan ditambahkan ke dalam tabel penghubung antara
genre dan buku.
Parameters:
Name | Type | Description |
---|---|---|
req |
object | Request objek yang berisi data buku untuk ditambahkan |
res |
object | Response objek yang akan mengirimkan hasil operasi ke client |
- Source:
Throws:
-
400 - Jika buku sudah ada
- Type
- ResponseError
Returns:
200 - Pesan sukses buku berhasil ditambahkan
- Type
- string
authMiddleware(req, res, next) → {void}
Middleware untuk memverifikasi token JWT pada header authorization.
Fungsi ini memeriksa keberadaan dan validitas token JWT yang
dikirimkan dalam header authorization. Jika token tidak ada, telah
kedaluwarsa, atau tidak valid, middleware ini akan mengembalikan
respons dengan status 401. Jika token valid, middleware ini akan
melanjutkan eksekusi ke middleware berikutnya.
Parameters:
Name | Type | Description |
---|---|---|
req |
express.Request | Request objek yang berisi header authorization. |
res |
express.Response | Response objek untuk mengirimkan hasil operasi ke client. |
next |
express.NextFunction | Fungsi middleware untuk meneruskan eksekusi ke middleware berikutnya. |
- Source:
Returns:
Mengirimkan respons JSON dengan status 401 jika token tidak valid
atau kedaluwarsa, atau melanjutkan ke middleware berikutnya jika
valid.
- Type
- void
capitalizeWord(input) → {string}
Mengubah setiap kata dalam kalimat menjadi huruf kapital di awalnya.
Fungsi ini menerima sebuah string, memecahnya menjadi kata-kata
berdasarkan spasi, kemudian mengubah huruf pertama dari setiap kata
menjadi kapital. Hasilnya adalah kalimat dengan setiap kata dimulai
dengan huruf kapital.
Parameters:
Name | Type | Description |
---|---|---|
input |
string | Kalimat atau string yang ingin diubah kapitalnya. |
- Source:
Returns:
Kalimat dengan setiap kata dimulai dengan huruf kapital.
- Type
- string
errorMiddleware(err, req, res, next) → {void}
Middleware untuk menangani error dalam aplikasi. Middleware ini
menangani error yang dilemparkan oleh aplikasi. Jika error yang
dilemparkan adalah instance dari `ResponseError`, status dan pesan
error akan dikirimkan sesuai dengan status yang diberikan. Jika
error bukan `ResponseError`, akan mengembalikan respons error dengan
status 500 dan pesan error yang disediakan.
Parameters:
Name | Type | Description |
---|---|---|
err |
Error | Error yang terjadi selama eksekusi request. |
req |
express.Request | Request objek yang berisi informasi permintaan. |
res |
express.Response | Response objek untuk mengirimkan hasil operasi ke client. |
next |
express.NextFunction | Fungsi untuk melanjutkan eksekusi middleware berikutnya. |
- Source:
Returns:
Mengirimkan respons error dalam bentuk JSON sesuai dengan status
error.
- Type
- void
generateJWT(name, role, expiresInopt) → {string}
Membuat JSON Web Token (JWT) untuk pengguna. Fungsi ini membuat
token JWT berdasarkan nama pengguna, peran, dan waktu kedaluwarsa.
Token ini dapat digunakan untuk autentikasi dan otorisasi dalam
aplikasi.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
name |
string | Nama pengguna yang akan disematkan dalam token. | ||
role |
string | Peran pengguna yang akan disematkan dalam token (contoh: 'admin', 'user'). | ||
expiresIn |
string | <optional> |
"24h" | Waktu kedaluwarsa token (default: "24h"). |
- Source:
Returns:
Token JWT yang telah dibuat.
- Type
- string
(async) getBookById(req, res, next) → {void}
Controller untuk mendapatkan buku berdasarkan ID. Fungsi ini
mengambil ID buku dari parameter request, memanggil
`publicService.getBookById()` untuk mendapatkan buku berdasarkan ID.
Jika buku ditemukan, mengirimkan respons dengan status 200 dan data
buku. Jika tidak ditemukan, mengirimkan respons dengan status 404.
Parameters:
Name | Type | Description |
---|---|---|
req |
express.Request | Request objek yang berisi parameter ID buku. |
res |
express.Response | Response objek untuk mengirimkan hasil operasi ke client. |
next |
express.NextFunction | Fungsi middleware untuk meneruskan error ke handler berikutnya. |
- Source:
Returns:
Mengirimkan respons JSON dengan status 200 dan data buku jika
berhasil, atau 404 jika tidak ditemukan.
- Type
- void
(async) getBookById(id) → {Promise.<object>}
Mendapatkan detail buku berdasarkan ID Fungsi untuk mengambil data
detail buku berdasarkan ID. Jika buku tidak ditemukan atau sudah
dihapus, maka akan mengembalikan pesan kesalahan.
Parameters:
Name | Type | Description |
---|---|---|
id |
string | ID buku yang akan dicari |
- Source:
Throws:
-
400 - Jika buku tidak ditemukan atau sudah dihapus
- Type
- ResponseError
Returns:
Detail buku yang ditemukan
- Type
- Promise.<object>
(async) getBookList(req, res, next) → {void}
Controller untuk mendapatkan daftar buku. Fungsi ini memanggil
`publicService.getBookList()` untuk mendapatkan semua buku yang
tersedia. Setelah berhasil, mengirimkan respons dengan status 200
dan daftar buku.
Parameters:
Name | Type | Description |
---|---|---|
req |
express.Request | Request objek yang diterima dari client. |
res |
express.Response | Response objek untuk mengirimkan hasil operasi ke client. |
next |
express.NextFunction | Fungsi middleware untuk meneruskan error ke handler berikutnya. |
- Source:
Returns:
Mengirimkan respons JSON dengan status 200 dan data buku jika
berhasil, atau error jika gagal.
- Type
- void
(async) getBookList(req, res) → {Promise.<Array.<object>>}
Mendapatkan daftar buku Fungsi untuk mengambil semua daftar buku
yang tersedia. Buku yang sudah dihapus akan diabaikan, dan informasi
terkait genre serta penerbit buku akan ditambahkan.
Parameters:
Name | Type | Description |
---|---|---|
req |
object | Request objek yang berisi permintaan daftar buku |
res |
object | Response objek yang akan mengirimkan hasil operasi ke client |
- Source:
Returns:
Daftar buku yang tersedia
- Type
- Promise.<Array.<object>>
(async) loanBook(req, res, next) → {void}
Controller untuk meminjam buku. Fungsi ini menerima request untuk
meminjam buku dan memanggil `publicService.loanBook()` untuk
memproses transaksi peminjaman. Setelah berhasil, mengirimkan
respons dengan status 200 dan data peminjaman.
Parameters:
Name | Type | Description |
---|---|---|
req |
express.Request | Request objek yang berisi data peminjaman buku. |
res |
express.Response | Response objek untuk mengirimkan hasil operasi ke client. |
next |
express.NextFunction | Fungsi middleware untuk meneruskan error ke handler berikutnya. |
- Source:
Returns:
Mengirimkan respons JSON dengan status 200 dan data peminjaman jika
berhasil, atau error jika gagal.
- Type
- void
(async) loanBook(req, res) → {Promise.<object>}
Meminjamkan buku Fungsi untuk meminjam buku. Mengecek apakah buku
masih tersedia, apakah pengguna sudah meminjam buku yang sama, dan
apakah stok buku mencukupi. Jika semua validasi lulus, transaksi
peminjaman akan diproses dan stok buku akan dikurangi.
Parameters:
Name | Type | Description |
---|---|---|
req |
object | Request objek yang berisi data peminjaman buku |
res |
object | Response objek yang akan mengirimkan hasil operasi ke client |
- Source:
Throws:
-
-
400 - Jika buku sudah dipinjam atau stok buku habis
- Type
- ResponseError
-
-
-
404 - Jika buku tidak ditemukan atau sudah dihapus
- Type
- ResponseError
-
Returns:
Data peminjaman yang berhasil
- Type
- Promise.<object>
(async) login(req, res, next) → {void}
Controller untuk login pengguna. Fungsi ini menangani request login,
dengan memanggil `publicService.login()` untuk memproses data login.
Setelah berhasil, mengirimkan respons dengan status 200 dan data
pengguna yang berhasil login.
Parameters:
Name | Type | Description |
---|---|---|
req |
express.Request | Request objek yang berisi data login. |
res |
express.Response | Response objek untuk mengirimkan hasil operasi ke client. |
next |
express.NextFunction | Fungsi middleware untuk meneruskan error ke handler berikutnya. |
- Source:
Returns:
Mengirimkan respons JSON dengan status 200 dan data pengguna jika
berhasil, atau error jika gagal.
- Type
- void
(async) login(req, res) → {Promise.<string>}
Login pengguna Fungsi untuk memverifikasi email dan password
pengguna. Jika data yang dimasukkan salah, maka akan mengembalikan
pesan kesalahan. Jika berhasil, akan mengembalikan token JWT untuk
otentikasi lebih lanjut.
Parameters:
Name | Type | Description |
---|---|---|
req |
object | Request objek yang berisi data login pengguna |
res |
object | Response objek yang akan mengirimkan hasil operasi ke client |
- Source:
Throws:
-
400 - Jika email atau password salah
- Type
- ResponseError
Returns:
Token JWT untuk otentikasi pengguna
- Type
- Promise.<string>
(async) registrasi(req, res, next) → {void}
Controller untuk registrasi pengguna. Fungsi ini menangani request
registrasi pengguna baru, dengan memanggil
`publicService.registrasi()` untuk memproses data registrasi.
Setelah berhasil, mengirimkan respons dengan status 200 dan pesan
sukses.
Parameters:
Name | Type | Description |
---|---|---|
req |
express.Request | Request objek yang berisi data registrasi. |
res |
express.Response | Response objek untuk mengirimkan hasil operasi ke client. |
next |
express.NextFunction | Fungsi middleware untuk meneruskan error ke handler berikutnya. |
- Source:
Returns:
Mengirimkan respons JSON dengan status 200 jika berhasil, atau error
jika gagal.
- Type
- void
(async) registrasi(req, res) → {Promise.<object>}
Registrasi pengguna baru Fungsi untuk melakukan registrasi akun
pengguna baru. Mengecek apakah email yang dimasukkan sudah ada. Jika
sudah ada, maka akan mengembalikan pesan kesalahan. Jika tidak,
password akan di-hash dan akun pengguna baru akan dibuat dengan data
yang diterima dari body request.
Parameters:
Name | Type | Description |
---|---|---|
req |
object | Request objek yang berisi data pengguna yang akan didaftarkan |
res |
object | Response objek yang akan mengirimkan hasil operasi ke client |
- Source:
Throws:
-
400 - Jika email sudah terdaftar
- Type
- ResponseError
Returns:
Data pengguna yang baru saja terdaftar
- Type
- Promise.<object>
(async) removeBook(req, res) → {string}
Menghapus buku dari database. Menggunakan data yang diterima melalui
body request untuk menghapus buku berdasarkan ID. Jika buku tidak
ditemukan, maka akan mengembalikan kesalahan. Data waktu terakhir
diperbarui akan disertakan saat penghapusan.
Parameters:
Name | Type | Description |
---|---|---|
req |
object | Request objek yang berisi ID buku yang akan dihapus |
res |
object | Response objek yang akan mengirimkan hasil operasi ke client |
- Source:
Throws:
-
404 - Jika buku tidak ditemukan
- Type
- ResponseError
Returns:
200 - Pesan sukses buku berhasil dihapus
- Type
- string
(async) returnBook(req, res, next) → {void}
Controller untuk mengembalikan buku. Fungsi ini menerima request
untuk mengembalikan buku dan memanggil `publicService.returnBook()`
untuk memproses pengembalian buku. Setelah berhasil, mengirimkan
respons dengan status 200 dan pesan pengembalian.
Parameters:
Name | Type | Description |
---|---|---|
req |
express.Request | Request objek yang berisi data pengembalian buku. |
res |
express.Response | Response objek untuk mengirimkan hasil operasi ke client. |
next |
express.NextFunction | Fungsi middleware untuk meneruskan error ke handler berikutnya. |
- Source:
Returns:
Mengirimkan respons JSON dengan status 200 dan pesan pengembalian
jika berhasil, atau error jika gagal.
- Type
- void
(async) returnBook(req, res) → {Promise.<object>}
Mengembalikan buku Fungsi untuk mengembalikan buku yang sudah
dipinjam. Mengecek apakah buku yang dikembalikan benar-benar
dipinjam oleh pengguna dan memperbarui stok buku yang dikembalikan.
Parameters:
Name | Type | Description |
---|---|---|
req |
object | Request objek yang berisi data pengembalian buku |
res |
object | Response objek yang akan mengirimkan hasil operasi ke client |
- Source:
Throws:
-
400 - Jika buku yang dikembalikan tidak pernah dipinjam
- Type
- ResponseError
Returns:
Pesan sukses pengembalian buku
- Type
- Promise.<object>
rolesMiddleware(req, res, next) → {void}
Middleware untuk memeriksa peran pengguna berdasarkan token JWT.
Fungsi ini memverifikasi token JWT yang dikirim dalam header
`Authorization` dan memeriksa peran pengguna yang tercantum dalam
payload token. Jika peran pengguna adalah `Admin`, maka permintaan
dilanjutkan ke middleware berikutnya. Jika peran tidak sesuai,
middleware ini mengembalikan respons dengan status 403. Jika token
tidak ada atau tidak valid, middleware ini mengembalikan respons
dengan status 401.
Parameters:
Name | Type | Description |
---|---|---|
req |
express.Request | Request objek yang berisi header authorization. |
res |
express.Response | Response objek untuk mengirimkan hasil operasi ke client. |
next |
express.NextFunction | Fungsi middleware untuk melanjutkan eksekusi ke middleware berikutnya. |
- Source:
Returns:
Mengirimkan respons status 401 atau 403 jika token tidak valid atau
peran tidak sesuai, atau melanjutkan eksekusi ke middleware
berikutnya jika peran sesuai.
- Type
- void
(async) updateBook(req, res) → {string}
Memperbarui data buku yang sudah ada di database. Menggunakan data
yang diterima melalui body request untuk memperbarui buku yang sudah
ada. Jika buku dengan judul yang sama sudah ada, maka akan
mengembalikan kesalahan. Genre buku yang lama akan dihapus dan genre
baru akan ditambahkan.
Parameters:
Name | Type | Description |
---|---|---|
req |
object | Request objek yang berisi data buku yang akan diperbarui |
res |
object | Response objek yang akan mengirimkan hasil operasi ke client |
- Source:
Throws:
-
400 - Jika buku sudah ada
- Type
- ResponseError
Returns:
200 - Pesan sukses buku berhasil diperbarui
- Type
- string
validate(schema, request) → {Object}
Fungsi untuk memvalidasi request menggunakan schema Joi. Fungsi ini
akan menerima schema validasi dan data request, kemudian memvalidasi
data request terhadap schema tersebut. Jika data tidak valid, fungsi
ini akan melemparkan error dengan status 400 dan pesan error yang
diberikan oleh Joi. Jika data valid, fungsi ini akan mengembalikan
nilai yang sudah divalidasi.
Parameters:
Name | Type | Description |
---|---|---|
schema |
Object | Schema Joi yang digunakan untuk memvalidasi data request. |
request |
Object | Data request yang akan divalidasi. |
- Source:
Throws:
-
Jika data tidak valid, melemparkan error dengan status 400 dan pesan error dari Joi.
- Type
- ResponseError
Returns:
Data yang sudah divalidasi sesuai dengan schema yang diberikan.
- Type
- Object
verifyJWT(token) → {object}
Memverifikasi dan mendekode token JWT. Fungsi ini memverifikasi
keaslian token JWT dan mendekode payloadnya. Jika token tidak valid
atau telah kedaluwarsa, akan melemparkan error.
Parameters:
Name | Type | Description |
---|---|---|
token |
string | Token JWT yang ingin diverifikasi. |
- Source:
Throws:
-
Jika token tidak valid atau telah kedaluwarsa.
- Type
- Error
Returns:
Payload yang terdekode dari token jika valid.
- Type
- object