Spaces:
Sleeping
Sleeping
| from fastapi import APIRouter, Depends, HTTPException | |
| from app.db.supabase import supabase | |
| from app.schemas.blog import Blog, BlogCreate | |
| from app.dependencies.admin_auth import admin_auth | |
| router = APIRouter() | |
| def list_blogs(): | |
| res = supabase.table("blogs").select("*").order("published_date", desc=True).execute() | |
| return res.data | |
| def get_blog(blog_id: int): | |
| res = supabase.table("blogs").select("*").eq("id", blog_id).execute() | |
| if not res.data: | |
| raise HTTPException(status_code=404, detail="Blog not found") | |
| return res.data[0] | |
| def create_blog(blog: BlogCreate): | |
| data = blog.model_dump() | |
| data['published_date'] = data['published_date'].isoformat() # convert date to string | |
| res = supabase.table("blogs").insert(data).execute() | |
| if not res.data: | |
| raise HTTPException(status_code=400, detail="Failed to create blog") | |
| return res.data[0] | |
| def update_blog(blog_id: int, blog: BlogCreate): | |
| data = blog.model_dump() | |
| data['published_date'] = data['published_date'].isoformat() | |
| res = supabase.table("blogs").update(data).eq("id", blog_id).execute() | |
| if not res.data: | |
| raise HTTPException(status_code=404, detail="Blog not found or update failed") | |
| return res.data[0] | |
| def delete_blog(blog_id: int): | |
| res = supabase.table("blogs").delete().eq("id", blog_id).execute() | |
| if not res.data: | |
| raise HTTPException(status_code=404, detail="Blog not found or delete failed") | |
| return {"detail": "Blog deleted successfully"} | |