feat: Update version handling in config and backup services

This commit is contained in:
shiyu
2025-08-27 19:05:58 +08:00
parent fd02a4bbe5
commit 627b13426d
3 changed files with 15 additions and 11 deletions
+3 -3
View File
@@ -2,7 +2,7 @@ import httpx
import time import time
from fastapi import APIRouter, Depends, Form from fastapi import APIRouter, Depends, Form
from typing import Annotated from typing import Annotated
from services.config import ConfigCenter from services.config import ConfigCenter, VERSION
from services.auth import get_current_active_user, User, has_users from services.auth import get_current_active_user, User, has_users
from api.response import success from api.response import success
router = APIRouter(prefix="/api/config", tags=["config"]) router = APIRouter(prefix="/api/config", tags=["config"])
@@ -38,7 +38,7 @@ async def get_all_config(
@router.get("/status") @router.get("/status")
async def get_system_status(): async def get_system_status():
system_info = { system_info = {
"version": "v1.0.0", "version": VERSION,
"title": await ConfigCenter.get("APP_NAME", "Foxel"), "title": await ConfigCenter.get("APP_NAME", "Foxel"),
"logo": await ConfigCenter.get("APP_LOGO", "/logo.svg"), "logo": await ConfigCenter.get("APP_LOGO", "/logo.svg"),
"is_initialized": await has_users() "is_initialized": await has_users()
@@ -58,7 +58,7 @@ async def get_latest_version():
if current_time - latest_version_cache["timestamp"] < 3600 and latest_version_cache["data"]: if current_time - latest_version_cache["timestamp"] < 3600 and latest_version_cache["data"]:
return success(latest_version_cache["data"]) return success(latest_version_cache["data"])
try: try:
async with httpx.AsyncClient(timeout=10.0, proxy="http://127.0.0.1:7897") as client: async with httpx.AsyncClient(timeout=10.0) as client:
resp = await client.get( resp = await client.get(
"https://api.github.com/repos/DrizzleTime/Foxel/releases/latest", "https://api.github.com/repos/DrizzleTime/Foxel/releases/latest",
follow_redirects=True, follow_redirects=True,
+11 -7
View File
@@ -1,4 +1,3 @@
import json
from tortoise.transactions import in_transaction from tortoise.transactions import in_transaction
from models.database import ( from models.database import (
StorageAdapter, StorageAdapter,
@@ -8,6 +7,8 @@ from models.database import (
ShareLink, ShareLink,
Configuration, Configuration,
) )
from services.config import VERSION
class BackupService: class BackupService:
@staticmethod @staticmethod
@@ -24,10 +25,13 @@ class BackupService:
configs = await Configuration.all().values() configs = await Configuration.all().values()
for share in shares: for share in shares:
share["created_at"] = share["created_at"].isoformat() if share.get("created_at") else None share["created_at"] = share["created_at"].isoformat(
share["expires_at"] = share["expires_at"].isoformat() if share.get("expires_at") else None ) if share.get("created_at") else None
share["expires_at"] = share["expires_at"].isoformat(
) if share.get("expires_at") else None
return { return {
"version": VERSION,
"storage_adapters": list(adapters), "storage_adapters": list(adapters),
"mounts": list(mounts), "mounts": list(mounts),
"user_accounts": list(users), "user_accounts": list(users),
@@ -54,7 +58,7 @@ class BackupService:
[Configuration(**c) for c in data["configurations"]], [Configuration(**c) for c in data["configurations"]],
using_db=conn using_db=conn
) )
if data.get("user_accounts"): if data.get("user_accounts"):
await UserAccount.bulk_create( await UserAccount.bulk_create(
[UserAccount(**u) for u in data["user_accounts"]], [UserAccount(**u) for u in data["user_accounts"]],
@@ -66,13 +70,13 @@ class BackupService:
[StorageAdapter(**a) for a in data["storage_adapters"]], [StorageAdapter(**a) for a in data["storage_adapters"]],
using_db=conn using_db=conn
) )
if data.get("mounts"): if data.get("mounts"):
await Mount.bulk_create( await Mount.bulk_create(
[Mount(**m) for m in data["mounts"]], [Mount(**m) for m in data["mounts"]],
using_db=conn using_db=conn
) )
if data.get("automation_tasks"): if data.get("automation_tasks"):
await AutomationTask.bulk_create( await AutomationTask.bulk_create(
[AutomationTask(**t) for t in data["automation_tasks"]], [AutomationTask(**t) for t in data["automation_tasks"]],
@@ -83,4 +87,4 @@ class BackupService:
await ShareLink.bulk_create( await ShareLink.bulk_create(
[ShareLink(**s) for s in data["share_links"]], [ShareLink(**s) for s in data["share_links"]],
using_db=conn using_db=conn
) )
+1 -1
View File
@@ -4,7 +4,7 @@ from typing import Any, Optional, Dict
from dotenv import load_dotenv from dotenv import load_dotenv
from models.database import Configuration from models.database import Configuration
load_dotenv(dotenv_path=".env") load_dotenv(dotenv_path=".env")
VERSION = "v1.0.0"
class ConfigCenter: class ConfigCenter:
_cache: Dict[str, Any] = {} _cache: Dict[str, Any] = {}