46 lines
2.5 KiB
Python
46 lines
2.5 KiB
Python
# Mengimpor modul bawaan Python 'os' untuk manipulasi path direktori dan file sistem operasi
|
|
import os
|
|
# Mengimpor BaseSettings dan SettingsConfigDict dari pydantic_settings untuk manajemen variabel lingkungan (.env) yang bertipe data aman (type-safe)
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
# Mendefinisikan class Settings yang mewarisi BaseSettings untuk menyimpan semua konfigurasi global aplikasi
|
|
class Settings(BaseSettings):
|
|
# ================= Pengaturan Aplikasi (App Settings) =================
|
|
# Nama aplikasi yang ditampilkan pada dokumentasi Swagger / OpenAPI
|
|
APP_NAME: str = "FastAPI TA Alumni"
|
|
# Mode debug: bernilai True saat proses pengembangan untuk menampilkan detail log error
|
|
DEBUG: bool = True
|
|
# Prefix rute utama untuk semua endpoint REST API (versi 1)
|
|
API_PREFIX: str = "/api/v1"
|
|
|
|
# ================= Pengaturan Database (Database Settings) =================
|
|
# URL koneksi database MySQL menggunakan driver pymysql (format: mysql+pymysql://user:password@host:port/nama_database)
|
|
DATABASE_URL: str = "mysql+pymysql://root:@localhost:3306/tracerstudy_db"
|
|
|
|
# ================= Pengaturan Keamanan & JWT (Security Settings) =================
|
|
# Kunci rahasia (secret key) yang digunakan untuk mengenkripsi dan memverifikasi signature token JWT
|
|
JWT_SECRET_KEY: str = "436ad82810a95059d9c87d4982a514d87455ee4a4c16d68b6d773fb62b661d9a"
|
|
# Algoritma kriptografi yang digunakan untuk menandatangani token JWT (HMAC-SHA256)
|
|
JWT_ALGORITHM: str = "HS256"
|
|
# Masa berlaku akses token JWT dalam satuan menit (1440 menit = 24 jam)
|
|
ACCESS_TOKEN_EXPIRE_MINUTES: int = 1440
|
|
|
|
# ================= Konfigurasi Pembacaan File .env =================
|
|
# Konfigurasi Pydantic untuk menentukan lokasi pembacaan file .env
|
|
model_config = SettingsConfigDict(
|
|
# Menentukan path file .env yang berada 3 level di atas file ini (root direktori Backend/)
|
|
env_file=os.path.join(
|
|
# Mendapatkan direktori root Backend/ secara dinamis dari path file ini (__file__)
|
|
os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))),
|
|
".env"
|
|
),
|
|
# Encoding karakter file .env menggunakan format utf-8
|
|
env_file_encoding="utf-8",
|
|
# Mengabaikan variabel tambahan yang ada di .env jika tidak didefinisikan di class Settings
|
|
extra="ignore"
|
|
)
|
|
|
|
# Menginstansiasi objek settings agar dapat diimpor dan digunakan secara langsung di seluruh modul sistem
|
|
settings = Settings()
|
|
|