summaryrefslogtreecommitdiff
path: root/apirouters/tasks.py
diff options
context:
space:
mode:
Diffstat (limited to 'apirouters/tasks.py')
-rw-r--r--apirouters/tasks.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/apirouters/tasks.py b/apirouters/tasks.py
new file mode 100644
index 0000000..806de91
--- /dev/null
+++ b/apirouters/tasks.py
@@ -0,0 +1,42 @@
+from typing import Annotated
+from fastapi import APIRouter, Depends
+
+from ..modules.database import cursor, conn
+from ..modules.ships import Ship
+from ..modules import task_type
+from .agents import auth_agent, Agent
+
+router = APIRouter()
+
+
+@router.get("/tasks")
+async def get_tasks(agent: Annotated[Agent, Depends(auth_agent)]):
+ ships = []
+ for ship in agent.ships.values():
+ ship.load_task()
+ ships.append({"symbol": ship.symbol, "task": ship.task})
+
+ return {"ships": ships}
+
+
+@router.get("/task/{ship_symbol}")
+async def get_tasks(ship_symbol: str, agent: Annotated[Agent, Depends(auth_agent)]):
+ for current_ship in agent.ships.values():
+ if current_ship.symbol == ship_symbol:
+ current_ship.load_task()
+ return {"symbol": current_ship.symbol, "task": current_ship.task}
+
+ return {"error": "Unknown ship symbol."}
+
+
+@router.post("/task/{ship_symbol}/set/{task_type}")
+async def get_tasks(ship_symbol: str, task: str, agent: Annotated[Agent, Depends(auth_agent)]):
+ if task not in task_type.task_types:
+ return {"error": "Invalid task."}
+
+ for current_ship in agent.ships.values():
+ if current_ship.symbol == ship_symbol:
+ current_ship.set_task(task)
+ return {"symbol": current_ship.symbol, "task": current_ship.task}
+
+ return {"error": "Unknown ship symbol."}