initial commit
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
import logging
|
||||
|
||||
from beanie import init_beanie
|
||||
from pymongo import AsyncMongoClient
|
||||
from pymongo.asynchronous.collection import AsyncCollection
|
||||
|
||||
from elm.types import User, Transaction
|
||||
from elm.types.ConfigurationTypes import DatabaseConfiguration
|
||||
|
||||
logger = logging.getLogger(__name__.split(".")[-1])
|
||||
logger.setLevel(logging.DEBUG)
|
||||
|
||||
|
||||
class DuplicationError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class NoDatabaseConnectionError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class DatabaseService:
|
||||
def __init__(self, db_config: DatabaseConfiguration) -> None:
|
||||
self._db_config = db_config
|
||||
self._client = None
|
||||
self._database = None
|
||||
self._users = None
|
||||
|
||||
async def initialize(self) -> None:
|
||||
if self._client is None:
|
||||
self._client = AsyncMongoClient(self._db_config.database_address)
|
||||
self._database = self._client[self._db_config.database_name]
|
||||
self._users: AsyncCollection = self._database["users"]
|
||||
await init_beanie(
|
||||
database=self._database,
|
||||
document_models=[User, Transaction]
|
||||
)
|
||||
Reference in New Issue
Block a user