TIF_E41253310/Backend/app/config/config.py

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()