29 lines
1015 B
Python
29 lines
1015 B
Python
from webapi.config.site_settings import site_settings
|
|
from beanie import init_beanie
|
|
from motor.motor_asyncio import AsyncIOMotorClient
|
|
from backend.models import backend_models
|
|
from common.probes import ProbeResult
|
|
import asyncio
|
|
|
|
client = AsyncIOMotorClient(site_settings.MONGODB_URI, serverSelectionTimeoutMS=60000)
|
|
|
|
def register(app):
|
|
app.debug = "mongo_debug"
|
|
app.title = "mongo_name"
|
|
|
|
@app.on_event("startup")
|
|
async def start_database():
|
|
await initiate_database()
|
|
|
|
async def check_database_initialized() -> ProbeResult:
|
|
try:
|
|
await asyncio.wait_for(client.server_info(), timeout=5)
|
|
return ProbeResult(success=True, message="service has been initialized and ready to serve")
|
|
except Exception:
|
|
return ProbeResult(success=False, message="service is not initialized yet", data={"error": "database is not ready"})
|
|
|
|
async def initiate_database():
|
|
await init_beanie(
|
|
database=client[site_settings.MONGODB_NAME], document_models=backend_models
|
|
)
|