TIF_E41253310/Backend/app/models/prodi.py

37 lines
1.9 KiB
Python

# Mengimpor tipe data kolom dari SQLAlchemy: Column (definisi kolom), Integer (angka bulat), String (teks pendek), DateTime (waktu/tanggal)
from sqlalchemy import Column, Integer, String, DateTime
# Mengimpor modul fungsi SQL bawaan (func) untuk mengambil timestamp saat ini seperti NOW()
from sqlalchemy.sql import func
# Mengimpor kelas basis Base dari modul base agar model Prodi terdaftar di metadata SQLAlchemy
from app.models.base import Base
# Mendefinisikan model ORM untuk tabel data Program Studi (Prodi)
class Prodi(Base):
# Nama tabel fisik di dalam database MySQL
__tablename__ = "prodi"
# Kolom ID sebagai primary key bertipe integer dengan pengindeksan (index) untuk mempercepat pencarian data
id = Column(Integer, primary_key=True, index=True)
# Kolom kode program studi (contoh: "55301" untuk D3 MIF, "57401" untuk D4 TIF), bersifat unik (unique=True) dan wajib diisi (nullable=False)
kode_prodi = Column(String(10), unique=True, nullable=False)
# Kolom nama lengkap program studi (contoh: "Teknik Informatika"), maksimal 150 karakter dan wajib diisi
nama_prodi = Column(String(150), nullable=False)
# Kolom jenjang pendidikan (contoh: "D3", "D4", "S1"), maksimal 5 karakter dan tidak boleh kosong
jenjang = Column(String(5), nullable=False)
# Kolom nama jurusan induk fakultas/jurusan (contoh: "Teknologi Informasi"), maksimal 100 karakter
jurusan = Column(String(100))
# Kolom waktu pembuatan record, otomatis diisi dengan timestamp saat data pertama kali disimpan (server_default=func.now())
created_at = Column(DateTime(timezone=True), server_default=func.now())
# Kolom waktu pembaruan record, otomatis diperbarui setiap kali ada perubahan data (onupdate=func.now())
updated_at = Column(
DateTime(timezone=True),
server_default=func.now(),
onupdate=func.now()
)