|
|
from fastapi import FastAPI, HTTPException |
|
|
from fastapi.middleware.cors import CORSMiddleware |
|
|
from pydantic import BaseModel |
|
|
from typing import List, Optional |
|
|
import uuid |
|
|
|
|
|
app = FastAPI() |
|
|
|
|
|
|
|
|
app.add_middleware( |
|
|
CORSMiddleware, |
|
|
allow_origins=["*"], |
|
|
allow_credentials=True, |
|
|
allow_methods=["*"], |
|
|
allow_headers=["*"], |
|
|
) |
|
|
|
|
|
|
|
|
class Mahasiswa(BaseModel): |
|
|
id: Optional[str] = None |
|
|
nama: str |
|
|
alamat: str |
|
|
jenis_kelamin: str |
|
|
prodi: str |
|
|
|
|
|
|
|
|
mahasiswa_db = [] |
|
|
|
|
|
|
|
|
@app.get("/mahasiswa", response_model=List[Mahasiswa]) |
|
|
async def get_all_mahasiswa(): |
|
|
return mahasiswa_db |
|
|
|
|
|
|
|
|
@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") |
|
|
|
|
|
|
|
|
@app.post("/mahasiswa", response_model=Mahasiswa) |
|
|
async def create_mahasiswa(mahasiswa: Mahasiswa): |
|
|
mahasiswa.id = str(uuid.uuid4()) |
|
|
mahasiswa_db.append(mahasiswa) |
|
|
return 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") |
|
|
|
|
|
|
|
|
@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") |
|
|
|
|
|
|
|
|
@app.get("/") |
|
|
async def root(): |
|
|
return {"message": "API Pendaftaran Mahasiswa"} |
|
|
|