File size: 2,325 Bytes
0a542d1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
from typing import List, Optional
import uuid

app = FastAPI()

# Enable CORS
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # Untuk production, ganti dengan domain frontend Anda
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

# Model data mahasiswa
class Mahasiswa(BaseModel):
    id: Optional[str] = None
    nama: str
    alamat: str
    jenis_kelamin: str
    prodi: str

# Database sementara (in-memory)
mahasiswa_db = []

# Endpoint untuk mendapatkan semua data mahasiswa
@app.get("/mahasiswa", response_model=List[Mahasiswa])
async def get_all_mahasiswa():
    return mahasiswa_db

# Endpoint untuk mendapatkan mahasiswa berdasarkan ID
@app.get("/mahasiswa/{mahasiswa_id}", response_model=Mahasiswa)
async def get_mahasiswa(mahasiswa_id: str):
    for mahasiswa in mahasiswa_db:
        if mahasiswa.id == mahasiswa_id:
            return mahasiswa
    raise HTTPException(status_code=404, detail="Mahasiswa tidak ditemukan")

# Endpoint untuk menambahkan mahasiswa baru
@app.post("/mahasiswa", response_model=Mahasiswa)
async def create_mahasiswa(mahasiswa: Mahasiswa):
    mahasiswa.id = str(uuid.uuid4())
    mahasiswa_db.append(mahasiswa)
    return mahasiswa

# Endpoint untuk mengupdate data mahasiswa
@app.put("/mahasiswa/{mahasiswa_id}", response_model=Mahasiswa)
async def update_mahasiswa(mahasiswa_id: str, updated_mahasiswa: Mahasiswa):
    for i, mahasiswa in enumerate(mahasiswa_db):
        if mahasiswa.id == mahasiswa_id:
            updated_mahasiswa.id = mahasiswa_id
            mahasiswa_db[i] = updated_mahasiswa
            return updated_mahasiswa
    raise HTTPException(status_code=404, detail="Mahasiswa tidak ditemukan")

# Endpoint untuk menghapus data mahasiswa
@app.delete("/mahasiswa/{mahasiswa_id}")
async def delete_mahasiswa(mahasiswa_id: str):
    for i, mahasiswa in enumerate(mahasiswa_db):
        if mahasiswa.id == mahasiswa_id:
            del mahasiswa_db[i]
            return {"message": "Mahasiswa berhasil dihapus"}
    raise HTTPException(status_code=404, detail="Mahasiswa tidak ditemukan")

# Root endpoint
@app.get("/")
async def root():
    return {"message": "API Pendaftaran Mahasiswa"}