summaryrefslogtreecommitdiffstats
path: root/back/app.py
diff options
context:
space:
mode:
Diffstat (limited to 'back/app.py')
-rw-r--r--back/app.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/back/app.py b/back/app.py
index 0d7bbee..2b8cf6f 100644
--- a/back/app.py
+++ b/back/app.py
@@ -19,6 +19,7 @@ if is_debug:
def now_ms() -> int:
from datetime import datetime
+
return floor(datetime.utcnow().timestamp() * 1000)
@@ -33,7 +34,7 @@ class Todo:
def marshal(self) -> str:
self_dict = dict()
for field in fields(self):
- self_dict.update({ field.name: getattr(self, field.name) })
+ self_dict.update({field.name: getattr(self, field.name)})
return json.dumps(self_dict)
@classmethod
@@ -49,7 +50,7 @@ class Todo:
# types representation
if type(json_obj[field.name]) == field.type:
raise TypeError(f"Todo.{field.name} must be instance of {field.type}")
- self_dict.update({ field.name: json_obj[field.name] })
+ self_dict.update({field.name: json_obj[field.name]})
cls.verify_json(self_dict)
return cls(**self_dict)
@@ -71,12 +72,15 @@ class Todo:
async def init_redis(app, loop):
app.db = await create_redis_pool("redis://localhost")
+
@app.listener("after_server_stop")
async def close_redis(app, loop):
from asyncio import sleep
+
app.db.close()
await app.db.wait_closed()
+
@app.post("/new-todo")
async def new_todo(req):
todo = Todo.unmarshal_safe(req.json)
@@ -85,21 +89,24 @@ async def new_todo(req):
return response_json(dict(status="ok", id=id))
+
@app.post("/delete-todo")
async def delete_todo(req):
id = req.json["id"]
await req.app.db.delete(f"upnet:todo:{id}")
return response_json(dict(status="ok", was=id))
+
@app.get("/todos")
async def get_todos(req):
all_todos_keys = await req.app.db.keys("upnet:todo:*")
# TODO: await all together
- todos = [asdict(await Todo.from_redis(req.app.db, todo_id))
- for todo_id in all_todos_keys
+ todos = [
+ asdict(await Todo.from_redis(req.app.db, todo_id)) for todo_id in all_todos_keys
]
- return response_json({ "todos": todos })
+ return response_json({"todos": todos})
+
if __name__ == "__main__":
app.go_fast(host="0.0.0.0", port=8000, debug=is_debug)