first commit
This commit is contained in:
commit
4b98219bf7
144 changed files with 31561 additions and 0 deletions
33
backend/api/routes/floor_layout.py
Normal file
33
backend/api/routes/floor_layout.py
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy import text
|
||||
from core.database import get_session
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("")
|
||||
async def get_floor_layout(site_id: str, db: AsyncSession = Depends(get_session)):
|
||||
row = await db.execute(
|
||||
text("SELECT value FROM site_config WHERE site_id = :site_id AND key = 'floor_layout'"),
|
||||
{"site_id": site_id},
|
||||
)
|
||||
result = row.fetchone()
|
||||
if result is None:
|
||||
raise HTTPException(status_code=404, detail="No floor layout saved for this site")
|
||||
return result[0]
|
||||
|
||||
|
||||
@router.put("")
|
||||
async def save_floor_layout(site_id: str, layout: dict, db: AsyncSession = Depends(get_session)):
|
||||
await db.execute(
|
||||
text("""
|
||||
INSERT INTO site_config (site_id, key, value, updated_at)
|
||||
VALUES (:site_id, 'floor_layout', CAST(:value AS jsonb), NOW())
|
||||
ON CONFLICT (site_id, key)
|
||||
DO UPDATE SET value = EXCLUDED.value, updated_at = NOW()
|
||||
"""),
|
||||
{"site_id": site_id, "value": __import__("json").dumps(layout)},
|
||||
)
|
||||
await db.commit()
|
||||
return {"ok": True}
|
||||
Loading…
Add table
Add a link
Reference in a new issue