cache tenant database

This commit is contained in:
2025-02-24 16:57:25 +09:00
parent c0672f2487
commit a8027a05bb
2 changed files with 9 additions and 8 deletions

View File

@@ -1,8 +1,8 @@
import time import time
from typing import Any from typing import Any
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from app.db.cruddb import domainService from app.db.cruddb import domainService,tenantService
from app.db.cruddb import tenantService from app.db.session import Database
class MemoryCache: class MemoryCache:
def __init__(self, max_cache_size: int = 100, ttl: int = 60): def __init__(self, max_cache_size: int = 100, ttl: int = 60):
@@ -60,12 +60,13 @@ class tenantCache:
def __init__(self): def __init__(self):
self.memoryCache = MemoryCache(max_cache_size=50, ttl=120) self.memoryCache = MemoryCache(max_cache_size=50, ttl=120)
def get_tenant_db(self,db: Session, tenantid: str): def get_tenant_db(self,db: Session, tenantid: str):
if not self.memoryCache.get(f"TENANT_{tenantid}"): if not self.memoryCache.get(f"TENANT_{tenantid}"):
tenant = tenantService.get_tenant(db,tenantid) tenant = tenantService.get_tenant(db,tenantid)
if tenant: if tenant:
self.memoryCache.set(f"TENANT_{tenantid}",tenant.db) database = Database(tenant.db)
return self.memoryCache.get(f"TENANT_{tenantid}") self.memoryCache.set(f"TENANT_{tenantid}",database)
return self.memoryCache.get(f"TENANT_{tenantid}")
tenantCacheService =tenantCache() tenantCacheService =tenantCache()

View File

@@ -1,13 +1,13 @@
from fastapi import Depends,Request from fastapi import Depends,Request
from app.db.session import get_tenant_db,get_user_db from app.db.session import get_tenant_db
from app.core import tenantCacheService from app.core import tenantCacheService
from app.db.session import tenantdb from app.db.session import tenantdb
def get_db(request: Request,tenant:str = "1",tenantdb = Depends(get_tenant_db)): def get_db(request: Request,tenant:str = "1",tenantdb = Depends(get_tenant_db)):
db_url = tenantCacheService.get_tenant_db(tenantdb,tenant) database = tenantCacheService.get_tenant_db(tenantdb,tenant)
db = get_user_db(db_url)
try: try:
db = database.get_db()
request.state.tenant = tenant request.state.tenant = tenant
request.state.db = db request.state.db = db
yield db yield db