Files
plant_codex/plant_backend/main.py
The Creature Conservancy 3521fdd033 bump
2025-03-17 18:32:33 -04:00

73 lines
2.3 KiB
Python

from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware
import psycopg2
import psycopg2.extras
import logging
from typing import Dict, Any
from datetime import datetime
logger = logging.getLogger('uvicorn.error')
logger.setLevel(logging.DEBUG)
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # Allows all origins
allow_credentials=True,
allow_methods=["*"], # Allows all methods
allow_headers=["*"], # Allows all headers
)
db_conn = psycopg2.connect(dbname='codices',user='postgres',password='1597')
postgres_url = "http://localhost:5432"
@app.get("/api/")
async def root():
return {"message": "Hello World!"}
@app.get('/api/plants/all')
def get_plant_list():
cur = db_conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
cur.execute('select * from plants.watering_status')
results = [dict(x) for x in cur.fetchall()]
cur.close()
return results
@app.post('/api/plants/update')
def update_plant(data: Dict[str, Any]):
flag_deleted = False
action = 'Watered'
if data['action'] == 'UNDO_WATER':
flag_deleted = True
value_place = (data['plant_name'], data['plant_location'], action, datetime.now().date(), flag_deleted)
with db_conn.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur:
cur.execute("INSERT INTO plants.care_transactions (plant_name, plant_location, action, record_date, flag_deleted) VALUES (%s, %s, %s, %s, %s)",value_place)
db_conn.commit()
# cur.close()
# body = req.json() # Parse incoming JSON payload
# print(body)
return_this = {'success':True}
logger.info(return_this)
return return_this
@app.post('/api/plants/inventory_update')
def update_plant(data: Dict[str, Any]):
value_place = (data['plant_name'], data['plant_location'], data['watering_interval_days'])
with db_conn.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur:
cur.execute("INSERT INTO plants.inventory_transactions (plant_name, plant_location, watering_interval_days) values (%s, %s, %s)", value_place)
db_conn.commit()
# cur.close()
# body = req.json() # Parse incoming JSON payload
# print(body)
return_this = {'success':True}
logger.info(return_this)
return return_this