- migrate_virtual.py: all 15 wp_rmp_disc_virtual_* tables → Postgres (~700 rows).
- app/virtual.py (public): GET /virtual/scene (geometry + slim front covers enriched
from discogs_full), /virtual/crate/{id}/records (digging), /virtual/locate (locate-stock).
Replaces payload.php — no WordPress bootstrap.
- webstore/index.html: walkable raw Three.js store (room/racks/crates from the data,
pointer-lock FPS, click-to-dig hook), served same-origin at /store.
- Proven: 51 racks, 346 crates, 277 covers; locate release→crate works.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
23 lines
742 B
Python
23 lines
742 B
Python
import pathlib
|
|
|
|
from fastapi import FastAPI
|
|
from fastapi.staticfiles import StaticFiles
|
|
|
|
from . import __version__
|
|
from .wowplatter_v1 import router as wowplatter_v1_router
|
|
from .virtual import router as virtual_router
|
|
|
|
app = FastAPI(title="RECORDGOD", version=__version__)
|
|
app.include_router(wowplatter_v1_router)
|
|
app.include_router(virtual_router)
|
|
|
|
# Serve the raw Three.js storefront same-origin (so /store can fetch /virtual/scene, no CORS).
|
|
WEBSTORE = pathlib.Path(__file__).resolve().parent.parent / "webstore"
|
|
if WEBSTORE.is_dir():
|
|
app.mount("/store", StaticFiles(directory=str(WEBSTORE), html=True), name="store")
|
|
|
|
|
|
@app.get("/healthz")
|
|
async def healthz():
|
|
return {"ok": True, "service": "recordgod", "version": __version__}
|