-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path03_db.py
28 lines (22 loc) · 803 Bytes
/
03_db.py
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
from fasthtml.common import *
def render(todo):
tid = f'todo-{todo.id}'
toggle = A('Toggle', hx_get=f'/toggle/{todo.id}', target_id=tid)
delete = A('Delete', hx_delete=f'/{todo.id}', hx_swap='outerHTML', target_id=tid)
return Li(toggle, delete, todo.title + (" ✅" if todo.done else ""), id=tid)
app,rt,todos,Todo = fast_app('todos.db', live=True, render=render,
id=int, title=str, done=bool, pk='id')
@rt("/")
def get():
# todos.insert(Todo(title="Make dinner", done=False))
# items = [Li(o) for o in todos()]
return Titled("Todos", Ul(*todos()))
@rt('/{tid}')
def delete(tid:int): todos.delete(tid)
@rt("/toggle/{tid}")
def get(tid:int):
todo = todos[tid]
todo.done = not todo.done
todos.update(todo)
return todo
serve()