migrate to table based tinydb

NOTE to migrate database install tinydb & run migrate.py

- added new functions to filter data with db queries
- in the storage module
This commit is contained in:
2025-08-27 20:39:04 +02:00
parent 0339da1668
commit 36f7f6d278
9 changed files with 2073 additions and 2335 deletions

View File

@@ -10,17 +10,17 @@ from webapp.services.ccookbook import (
)
# Storage
from webapp.storage.orders import (
load_orders, update_order,
cache_costs, cache_materials,
update_order, get_order_by_id,
cache_costs, cache_materials, load_pending
)
bp = Blueprint("cookbook", __name__, url_prefix="/api")
# ----------------------------- Helpers ----------------------------------------
def _now() -> str:
return time.strftime("%Y-%m-%dT%H:%M:%S%z", time.gmtime())
# ----------------------------- Helpers ----------------------------------------
def _arg(name: str, default: str = "") -> str:
v = request.args.get(name)
return v if v is not None else default
@@ -31,12 +31,6 @@ def _to_int(s: str, default: int = 0) -> int:
except Exception:
return default
def _order_by_id(order_id: str) -> Dict[str, Any] | None:
for o in load_orders():
if o.get("id") == order_id:
return o
return None
# ----------------------------- Endpoints Raw --------------------------------
@bp.get("/cookbook/build_cost")
@@ -113,7 +107,7 @@ def api_cache(order_id: str):
@bp.post("/order/<order_id>/refresh")
def api_refresh_one(order_id: str):
o = _order_by_id(order_id)
o = get_order_by_id(order_id)
if not o:
return jsonify({"error": "order not found"}), 404
bp_id = o.get("blueprint_type_id")
@@ -172,7 +166,7 @@ def api_refresh_one(order_id: str):
@bp.post("/orders/refresh_all")
def api_refresh_all():
orders = [o for o in load_orders() if o.get("status") == "open" and o.get("blueprint_type_id")]
orders = [o for o in load_pending() if o.get("blueprint_type_id")]
done = 0
for o in orders:
try:
@@ -195,8 +189,8 @@ def api_open_costs():
"""
items: List[Dict[str, Any]] = []
total = 0.0
for o in load_orders():
if o.get("status") != "open" or not o.get("blueprint_type_id"):
for o in load_pending():
if not o.get("blueprint_type_id"):
continue
entry: Dict[str, Any] = {
@@ -258,8 +252,8 @@ def api_open_materials():
if cost is not None:
row["cost"] += float(cost or 0)
for o in load_orders():
if o.get("status") != "open" or not o.get("blueprint_type_id"):
for o in load_pending():
if not o.get("blueprint_type_id"):
continue
mats = o.get("materials")