mirror of
https://github.com/0x5t4l1n/AURHub.git
synced 2026-05-26 11:25:50 +00:00
Updated frontend
This commit is contained in:
@@ -9,7 +9,19 @@ import time
|
||||
import json
|
||||
from typing import Optional
|
||||
|
||||
# Determine writable database path based on install directory type
|
||||
is_system_install = os.path.dirname(os.path.dirname(__file__)).startswith("/usr")
|
||||
if is_system_install:
|
||||
xdg_data_home = os.environ.get("XDG_DATA_HOME")
|
||||
if xdg_data_home:
|
||||
data_dir = os.path.join(xdg_data_home, "archstore")
|
||||
else:
|
||||
data_dir = os.path.join(os.path.expanduser("~"), ".local", "share", "archstore")
|
||||
os.makedirs(data_dir, exist_ok=True)
|
||||
DB_PATH = os.path.join(data_dir, "archstore.db")
|
||||
else:
|
||||
DB_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "archstore.db")
|
||||
|
||||
CACHE_TTL = 900 # 15 minutes in seconds
|
||||
|
||||
|
||||
|
||||
+35
-10
@@ -12,6 +12,8 @@ sys.path.insert(0, os.path.dirname(__file__))
|
||||
from contextlib import asynccontextmanager
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
from fastapi.responses import FileResponse
|
||||
from database.db import db
|
||||
from api.routes import packages, updates, categories
|
||||
|
||||
@@ -55,16 +57,6 @@ app.include_router(updates.router)
|
||||
app.include_router(categories.router)
|
||||
|
||||
|
||||
@app.get("/")
|
||||
async def root():
|
||||
"""Health check endpoint."""
|
||||
return {
|
||||
"name": "ArchStore API",
|
||||
"version": "1.0.0",
|
||||
"status": "running",
|
||||
}
|
||||
|
||||
|
||||
@app.get("/api/health")
|
||||
async def health():
|
||||
"""Detailed health check."""
|
||||
@@ -80,3 +72,36 @@ async def clear_cache():
|
||||
"""Clear all cached data."""
|
||||
await db.clear_cache()
|
||||
return {"status": "ok", "message": "Cache cleared"}
|
||||
|
||||
|
||||
# Frontend Static Files Serving for Production / Desktop Launch
|
||||
STATIC_DIR = "/usr/share/archstore/frontend"
|
||||
if not os.path.exists(STATIC_DIR):
|
||||
STATIC_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), "frontend", "dist")
|
||||
|
||||
if os.path.exists(STATIC_DIR):
|
||||
assets_dir = os.path.join(STATIC_DIR, "assets")
|
||||
if os.path.exists(assets_dir):
|
||||
app.mount("/assets", StaticFiles(directory=assets_dir), name="assets")
|
||||
|
||||
@app.get("/{fallback_path:path}")
|
||||
async def serve_frontend(fallback_path: str):
|
||||
# Serve favicon or other root files directly if they exist
|
||||
file_path = os.path.join(STATIC_DIR, fallback_path)
|
||||
if fallback_path and os.path.exists(file_path) and os.path.isfile(file_path):
|
||||
return FileResponse(file_path)
|
||||
# Otherwise fallback to index.html for React SPA routing
|
||||
index_path = os.path.join(STATIC_DIR, "index.html")
|
||||
if os.path.exists(index_path):
|
||||
return FileResponse(index_path)
|
||||
else:
|
||||
@app.get("/")
|
||||
async def root():
|
||||
"""Health check fallback when static files are missing."""
|
||||
return {
|
||||
"name": "ArchStore API",
|
||||
"version": "1.0.0",
|
||||
"status": "running",
|
||||
"info": "Frontend static files not found. Run dev server on port 5173."
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user