venkata1995 commited on
Commit
cec4217
·
verified ·
1 Parent(s): 5945503

Update app/main.py

Browse files
Files changed (1) hide show
  1. app/main.py +32 -7
app/main.py CHANGED
@@ -1,15 +1,18 @@
1
- from fastapi import FastAPI, HTTPException
 
2
  from pydantic import BaseModel
3
  from supabase import create_client, Client
4
  import os
5
-
6
- app = FastAPI()
7
 
8
  SUPABASE_URL = os.getenv("SUPABASE_URL")
9
  SUPABASE_KEY = os.getenv("SUPABASE_KEY")
10
-
11
  supabase: Client = create_client(SUPABASE_URL, SUPABASE_KEY)
12
 
 
 
 
13
  class Task(BaseModel):
14
  title: str
15
  completed: bool = False
@@ -27,11 +30,33 @@ def get_tasks():
27
  @app.patch("/tasks/{task_id}")
28
  def update_task(task_id: str, completed: bool):
29
  response = supabase.table("tasks").update({"completed": completed}).eq("id", task_id).execute()
30
- if response.data:
31
- return response.data[0]
32
- raise HTTPException(status_code=404, detail="Task not found")
33
 
34
  @app.delete("/tasks/{task_id}")
35
  def delete_task(task_id: str):
36
  supabase.table("tasks").delete().eq("id", task_id).execute()
37
  return {"detail": "Task deleted"}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ from fastapi.responses import HTMLResponse
3
  from pydantic import BaseModel
4
  from supabase import create_client, Client
5
  import os
6
+ import gradio as gr
7
+ import requests
8
 
9
  SUPABASE_URL = os.getenv("SUPABASE_URL")
10
  SUPABASE_KEY = os.getenv("SUPABASE_KEY")
 
11
  supabase: Client = create_client(SUPABASE_URL, SUPABASE_KEY)
12
 
13
+ app = FastAPI()
14
+
15
+ ### --- Task API --- ###
16
  class Task(BaseModel):
17
  title: str
18
  completed: bool = False
 
30
  @app.patch("/tasks/{task_id}")
31
  def update_task(task_id: str, completed: bool):
32
  response = supabase.table("tasks").update({"completed": completed}).eq("id", task_id).execute()
33
+ return response.data
 
 
34
 
35
  @app.delete("/tasks/{task_id}")
36
  def delete_task(task_id: str):
37
  supabase.table("tasks").delete().eq("id", task_id).execute()
38
  return {"detail": "Task deleted"}
39
+
40
+ ### --- Gradio frontend logic --- ###
41
+ API_URL = "http://localhost:7860"
42
+
43
+ def get_tasks_ui():
44
+ r = requests.get(f"{API_URL}/tasks/")
45
+ return [f"{t['title']} - {'✔️' if t['completed'] else '❌'}" for t in r.json()]
46
+
47
+ def add_task_ui(title):
48
+ if not title.strip():
49
+ return "Title cannot be empty", get_tasks_ui()
50
+ requests.post(f"{API_URL}/tasks/", json={"title": title, "completed": False})
51
+ return "", get_tasks_ui()
52
+
53
+ with gr.Blocks() as demo:
54
+ gr.Markdown("## 📝 Task List (Supabase + FastAPI)")
55
+ task_input = gr.Textbox(label="Add Task", placeholder="Buy groceries...")
56
+ add_btn = gr.Button("Add")
57
+ task_output = gr.Textbox(label="Current Tasks", lines=10)
58
+
59
+ add_btn.click(add_task_ui, inputs=task_input, outputs=[task_input, task_output])
60
+ demo.load(get_tasks_ui, outputs=task_output)
61
+
62
+ app = gr.mount_gradio_app(app, demo, path="/")