Skip to content

Commit 738d610

Browse files
committed
Added /raw/region/info
1 parent 3075b8c commit 738d610

File tree

6 files changed

+76
-14
lines changed

6 files changed

+76
-14
lines changed

app/core/nice/svt/ascensionAdd.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,9 @@ def get_nice_ascensionAdd(
8181
**base_settings_id,
8282
suffix=strParam["changeGraphSuffix"],
8383
)
84-
ascensionAdd["charaGraphChange"]["ascension"][limit.limitCount] = (
85-
asset_url
86-
)
84+
ascensionAdd["charaGraphChange"]["ascension"][
85+
limit.limitCount
86+
] = asset_url
8787
if "changeIconCommonReleaseId" in strParam:
8888
nice_release = [
8989
get_nice_common_release(cr)

app/redis/helpers/repo_version.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from typing import Optional
22

33
from ...config import Settings
4-
from ...schemas.common import Region, RepoInfo
4+
from ...schemas.common import Region, RegionInfo, RepoInfo
55
from .. import Redis
66

77

@@ -22,3 +22,21 @@ async def set_repo_version(redis: Redis, region: Region, repo_info: RepoInfo) ->
2222
redis_key = f"{settings.redis_prefix}:repo_version:{region.name}"
2323
redis_data = repo_info.json()
2424
await redis.set(redis_key, redis_data)
25+
26+
27+
async def get_region_version(redis: Redis, region: Region) -> Optional[RegionInfo]:
28+
redis_key = f"{settings.redis_prefix}:region_version:{region.name}"
29+
item_redis = await redis.get(redis_key)
30+
31+
if not item_redis: # pragma: no cover
32+
return None
33+
34+
return RegionInfo.model_validate_json(item_redis)
35+
36+
37+
async def set_region_version(
38+
redis: Redis, region: Region, repo_info: RegionInfo
39+
) -> None:
40+
redis_key = f"{settings.redis_prefix}:region_version:{region.name}"
41+
redis_data = repo_info.model_dump_json()
42+
await redis.set(redis_key, redis_data)

app/routers/raw.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
from fastapi import APIRouter, Depends, Query, Response
1+
from fastapi import APIRouter, Depends, HTTPException, Query, Response
22
from fastapi_cache.decorator import cache
33

44
from ..config import Settings
55
from ..core import raw, search
66
from ..db.helpers.cc import get_cc_id
77
from ..db.helpers.svt import get_ce_id, get_svt_id
88
from ..redis import Redis
9-
from ..schemas.common import Region, ReverseDepth
9+
from ..redis.helpers.repo_version import get_region_version
10+
from ..schemas.common import Region, RegionInfo, ReverseDepth
1011
from ..schemas.enums import AiType
1112
from ..schemas.raw import (
1213
AiCollection,
@@ -58,6 +59,23 @@
5859
router = APIRouter(prefix="/raw", tags=["raw"])
5960

6061

62+
@router.get(
63+
"/{region}/info",
64+
response_model=RegionInfo,
65+
response_model_exclude_unset=True,
66+
responses=get_error_code([400, 404]),
67+
)
68+
async def get_region_repo_info(
69+
region: Region,
70+
redis: Redis = Depends(get_redis),
71+
) -> Response:
72+
region_info = await get_region_version(redis, region)
73+
if region_info:
74+
return item_response(region_info)
75+
76+
raise HTTPException(status_code=404, detail="Region repo info not found.")
77+
78+
6179
svt_expand_lore_description = """
6280
- **expand**: Add expanded skill objects to mstSvt.expandedClassPassive
6381
from the skill IDs in mstSvt.classPassive.

app/schemas/common.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,20 @@ class RepoInfo(BaseModelORJson):
1818
timestamp: int
1919

2020

21+
class RegioinAssetBundle(BaseModelORJson):
22+
folderName: str
23+
animalName: str
24+
zooName: str
25+
26+
27+
class RegionInfo(RepoInfo):
28+
serverHash: str
29+
serverTimestamp: int
30+
dataVer: int | None = None
31+
dateVer: int | None = None
32+
assetbundle: RegioinAssetBundle | None = None
33+
34+
2135
class Region(StrEnum):
2236
"""Region Enum"""
2337

app/tasks.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,16 @@
4545
from .export.constants import export_constants
4646
from .models.raw import mstSvtExtra
4747
from .redis import Redis
48-
from .redis.helpers.repo_version import get_repo_version, set_repo_version
48+
from .redis.helpers.repo_version import (
49+
get_region_version,
50+
get_repo_version,
51+
set_region_version,
52+
set_repo_version,
53+
)
4954
from .redis.load import load_redis_data, load_svt_extra_redis
5055
from .routers.utils import list_string
5156
from .schemas.base import BaseModelORJson
52-
from .schemas.common import Language, Region, RepoInfo
57+
from .schemas.common import Language, Region, RegionInfo, RepoInfo
5358
from .schemas.enums import ALL_ENUMS, TRAIT_NAME
5459
from .schemas.gameenums import NiceItemType, SvtType
5560
from .schemas.nice import (
@@ -603,10 +608,11 @@ async def generate_exports(
603608
orjson.loads(info_path.read_bytes())
604609
)
605610

606-
export_info = await load_export_info(region, region_path[region])
607-
if repo_info:
608-
export_info = repo_info.model_dump(mode="json") | export_info
609-
await dump_normal(export_path, "info", export_info)
611+
export_info = await get_region_version(redis, region)
612+
if export_info:
613+
await dump_normal(
614+
export_path, "info", export_info.model_dump(mode="json")
615+
)
610616

611617
if enable_webhook:
612618
await report_webhooks(region_path, "export")
@@ -647,7 +653,7 @@ async def generate_exports(
647653
logger.info(f"Exported {region} data in {run_time:.2f}s.")
648654

649655

650-
async def load_export_info(
656+
async def get_region_info(
651657
region: Region, region_folder: DirectoryPath
652658
) -> dict[str, Any]:
653659
export_info: dict[str, Any] = {}
@@ -684,6 +690,12 @@ async def update_master_repo_info(
684690
)
685691
await set_repo_version(redis, region, repo_info)
686692

693+
region_info = await get_region_info(region, region_path[region])
694+
region_info = repo_info.model_dump(mode="json") | region_info
695+
await set_region_version(
696+
redis, region, RegionInfo.model_validate(region_info)
697+
)
698+
687699

688700
async def clear_redis_cache(
689701
redis: Redis,

scripts/extract_enums.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -775,7 +775,7 @@ def cs_enum_to_ts(cs_enums: list[str], raw_class: str, nice_class: str) -> list[
775775
"NiceBuffConditionType",
776776
"Condition Type for Conditional Battle Buff",
777777
"BUFF_CONDITION_TYPE",
778-
)
778+
),
779779
]
780780

781781

0 commit comments

Comments
 (0)