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