mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
import boto3
|
|
from fastapi import APIRouter, Depends, BackgroundTasks
|
|
from backend.app.dependencies import validate_token
|
|
from backend.app.plan.schemas import PlanTriggerRequest
|
|
from backend.app.config import get_settings
|
|
from utils.logger import setup_logger
|
|
|
|
logger = setup_logger()
|
|
|
|
router = APIRouter(
|
|
prefix="/plan",
|
|
tags=["plan"],
|
|
dependencies=[Depends(validate_token)],
|
|
responses={404: {"description": "Not found"}}
|
|
)
|
|
|
|
sqs_client = boto3.client("sqs")
|
|
|
|
|
|
@router.post("/trigger", status_code=202)
|
|
async def trigger_plan_entrypoint(body: PlanTriggerRequest, background_tasks: BackgroundTasks):
|
|
"""
|
|
Entry point for triggering the plan engine via SQS.
|
|
"""
|
|
logger.info("API triggered with body: %s", body)
|
|
|
|
settings = get_settings()
|
|
|
|
# Serialize the PlanTriggerRequest into JSON
|
|
try:
|
|
message_body = body.model_dump_json()
|
|
except Exception as e:
|
|
logger.error("Failed to serialize request body: %s", e)
|
|
return {"message": "Invalid request"}, 400
|
|
|
|
try:
|
|
response = sqs_client.send_message(
|
|
QueueUrl=settings.ENGINE_SQS_URL,
|
|
MessageBody=message_body
|
|
)
|
|
logger.info(f"SQS message sent. Message ID: {response.get('MessageId')}")
|
|
except Exception as e:
|
|
logger.error("Failed to send SQS message: %s", e)
|
|
return {"message": "Failed to trigger engine"}, 500
|
|
|
|
return {"message": "Plan job accepted"}
|