feat: task
This commit is contained in:
+43
-1
@@ -5,9 +5,10 @@ import flask
|
||||
import flask_limiter
|
||||
import flask_limiter.util
|
||||
import gunicorn.app.base
|
||||
import tortoise
|
||||
|
||||
from app import PKG_NAME
|
||||
from app.models.comment import Comment
|
||||
from app.models import Comment, Task
|
||||
|
||||
if typing.TYPE_CHECKING:
|
||||
from app.params import Parameters
|
||||
@@ -50,6 +51,47 @@ class Server(gunicorn.app.base.BaseApplication):
|
||||
await Comment.create(content=data["content"])
|
||||
return ("", 204)
|
||||
|
||||
@self.app.route("/api/lists/<list_name>/tasks", methods=["GET"])
|
||||
async def get_tasks(list_name: str) -> list:
|
||||
return await Task.filter(list=list_name).values()
|
||||
|
||||
@self.app.route("/api/lists/<list_name>/tasks", methods=["POST"])
|
||||
async def post_task(list_name: str) -> typing.Any:
|
||||
data = flask.request.get_json()
|
||||
data["list"] = list_name
|
||||
parsed_data = Task.validate_create(data)
|
||||
if parsed_data is None:
|
||||
flask.abort(400)
|
||||
return (await Task.create(**parsed_data)).get().values()
|
||||
|
||||
@self.app.route("/api/lists/<list_name>/tasks/<task_uuid>", methods=["PUT"])
|
||||
async def put_task(list_name: str, task_uuid: str) -> typing.Any:
|
||||
data = flask.request.get_json()
|
||||
data["list"] = list_name
|
||||
parsed_data = Task.validate_update(data)
|
||||
if parsed_data is None:
|
||||
flask.abort(400)
|
||||
try:
|
||||
task = await Task.get(id=task_uuid)
|
||||
await task.update_from_dict(parsed_data)
|
||||
return task.get().values()
|
||||
except tortoise.exceptions.ObjectDoesNotExistError:
|
||||
flask.abort(404)
|
||||
|
||||
@self.app.route("/api/lists/<list_name>/tasks/<task_uuid>", methods=["DELETE"])
|
||||
async def delete_task(list_name: str, task_uuid: str) -> typing.Any:
|
||||
data = flask.request.get_json()
|
||||
data["list"] = list_name
|
||||
parsed_data = Task.validate_update(data)
|
||||
if parsed_data is None:
|
||||
flask.abort(400)
|
||||
try:
|
||||
task = await Task.get(id=task_uuid)
|
||||
await task.delete()
|
||||
except tortoise.exceptions.ObjectDoesNotExistError:
|
||||
flask.abort(404)
|
||||
return ""
|
||||
|
||||
return self
|
||||
|
||||
@typing.override
|
||||
|
||||
Reference in New Issue
Block a user