mirror of
https://github.com/Shu-Ying/main_plugin_farm.git
synced 2026-10-30 06:09:59 +08:00
116 lines
2.6 KiB
Python
116 lines
2.6 KiB
Python
import asyncio
|
|
from typing import Any
|
|
|
|
from zhenxun.services.log import logger
|
|
|
|
from .database import (
|
|
CPlantManager,
|
|
CUserDB,
|
|
CUserItemDB,
|
|
CUserPlantCountDB,
|
|
CUserPlantDB,
|
|
CUserSeedDB,
|
|
CUserSignDB,
|
|
CUserSoilDB,
|
|
CUserStealDB,
|
|
g_pDBlocator,
|
|
)
|
|
|
|
|
|
class CDBService:
|
|
"""
|
|
数据库服务管理器
|
|
负责初始化和协调所有数据库服务
|
|
"""
|
|
|
|
def __init__(self):
|
|
self.m_manager: dict[str, Any] = {}
|
|
self.m_bInitialized = False
|
|
|
|
async def init(self):
|
|
if self.m_bInitialized:
|
|
logger.warning("真寻农场数据库服务已初始化")
|
|
return
|
|
|
|
m_manager = {
|
|
"plant": CPlantManager(),
|
|
"user": CUserDB(),
|
|
"userSoil": CUserSoilDB(),
|
|
"userPlant": CUserPlantDB(),
|
|
"userSeed": CUserSeedDB(),
|
|
"userItem": CUserItemDB(),
|
|
"userSteal": CUserStealDB(),
|
|
"userSign": CUserSignDB(),
|
|
"userPlantCount": CUserPlantCountDB(),
|
|
}
|
|
|
|
for name, manager in m_manager.items():
|
|
g_pDBlocator.register(name, manager)
|
|
self.m_manager[name] = manager
|
|
|
|
tasks = []
|
|
for name, manager in self.m_manager.items():
|
|
tasks.append(manager.init())
|
|
tasks.append(manager.initDB())
|
|
|
|
await asyncio.gather(*tasks)
|
|
|
|
g_pDBlocator.markInitialized()
|
|
self.m_bInitialized = True
|
|
|
|
logger.debug("真寻农场数据库服务初始化完成")
|
|
|
|
async def cleanup(self):
|
|
task = []
|
|
|
|
for manager in self.m_manager.values():
|
|
if hasattr(manager, "cleanup"):
|
|
task.append(manager.cleanup())
|
|
|
|
await asyncio.gather(*task)
|
|
self.m_manager.clear()
|
|
self.m_bInitialized = False
|
|
|
|
@property
|
|
def plant(self):
|
|
return self.m_manager["plant"]
|
|
|
|
@property
|
|
def user(self):
|
|
return self.m_manager["user"]
|
|
|
|
@property
|
|
def userSoil(self):
|
|
return self.m_manager["userSoil"]
|
|
|
|
@property
|
|
def userPlant(self):
|
|
return self.m_manager["userPlant"]
|
|
|
|
@property
|
|
def userSeed(self):
|
|
return self.m_manager["userSeed"]
|
|
|
|
@property
|
|
def userItem(self):
|
|
return self.m_manager["userItem"]
|
|
|
|
@property
|
|
def userSteal(self):
|
|
return self.m_manager["userSteal"]
|
|
|
|
@property
|
|
def userSign(self):
|
|
return self.m_manager["userSign"]
|
|
|
|
@property
|
|
def userPlantCount(self):
|
|
return self.m_manager["userPlantCount"]
|
|
|
|
@property
|
|
def initialized(self) -> bool:
|
|
return self.m_bInitialized
|
|
|
|
|
|
g_pDBService = CDBService()
|