Global

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:

(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