92 lines
1.7 KiB
Python
92 lines
1.7 KiB
Python
from fastapi import FastAPI
|
|
from pydantic import BaseModel
|
|
|
|
from database import fetch_all
|
|
from events import create_event
|
|
from auth import create_user
|
|
|
|
class UserCreate(BaseModel):
|
|
username: str
|
|
password: str
|
|
|
|
class EventCreate(BaseModel):
|
|
room_id: int
|
|
creator_id: int
|
|
type: str
|
|
title: str
|
|
description: str
|
|
start_time: str
|
|
end_time: str
|
|
visibility: str
|
|
status: str
|
|
min_people: int
|
|
|
|
|
|
app = FastAPI(
|
|
title="Calendar API",
|
|
description="Room based agenda system",
|
|
version="0.1"
|
|
)
|
|
|
|
|
|
@app.get("/")
|
|
def home():
|
|
return {
|
|
"status": "online",
|
|
"service": "Calendar API"
|
|
}
|
|
|
|
|
|
@app.get("/database")
|
|
def database_status():
|
|
tables = fetch_all(
|
|
"SELECT name FROM sqlite_master WHERE type='table';"
|
|
)
|
|
|
|
return {
|
|
"tables": [table["name"] for table in tables]
|
|
}
|
|
|
|
|
|
@app.post("/events")
|
|
def api_create_event(event: EventCreate):
|
|
|
|
event_id = create_event(
|
|
room_id=event.room_id,
|
|
creator_id=event.creator_id,
|
|
type=event.type,
|
|
title=event.title,
|
|
description=event.description,
|
|
start_time=event.start_time,
|
|
end_time=event.end_time,
|
|
visibility=event.visibility,
|
|
status=event.status,
|
|
min_people=event.min_people
|
|
)
|
|
|
|
return {
|
|
"status": "created",
|
|
"event_id": event_id
|
|
}
|
|
|
|
|
|
@app.get("/events")
|
|
def get_events():
|
|
events = fetch_all("SELECT * FROM events;")
|
|
|
|
return {
|
|
"events": [dict(event) for event in events]
|
|
}
|
|
|
|
@app.post("/create-user")
|
|
def api_create_user(user: UserCreate):
|
|
|
|
user_id = create_user(
|
|
username=user.username,
|
|
password=user.password
|
|
)
|
|
|
|
return {
|
|
"status": "created",
|
|
"user_id": user_id
|
|
} |