from lomas_core.error_handler import InternalServerException
from lomas_core.models.config import DBConfig, MongoDBConfig
from lomas_server.admin_database.admin_database import AdminDatabase
from lomas_server.admin_database.mongodb_database import AdminMongoDatabase
from lomas_server.admin_database.utils import get_mongodb_url
[docs]
def admin_database_factory(config: DBConfig) -> AdminDatabase:
"""Instantiates and returns database type described in config.
Args:
config (DBConfig): An instance of DBconfig.
Raises:
InternalServerException: If the specified database type
is not supported.
Returns:
AdminDatabase: A instance of the correct type of AdminDatabase.
"""
match config:
case MongoDBConfig():
db_url = get_mongodb_url(config)
db_name = config.db_name
return AdminMongoDatabase(db_url, db_name)
case _:
raise InternalServerException("Database type not supported.")