Bugfixes & improved database context handling
This commit is contained in:
@@ -5,6 +5,7 @@ from cpl.configuration import ConfigurationABC
|
||||
from cpl.console import Console
|
||||
from cpl.dependency_injection import ServiceProviderABC
|
||||
from cpl.logging import LoggerABC
|
||||
from model.user_repo_abc import UserRepoABC
|
||||
|
||||
|
||||
class Application(ApplicationABC):
|
||||
@@ -22,3 +23,4 @@ class Application(ApplicationABC):
|
||||
self._logger.debug(__name__, f'Host: {self._configuration.environment.host_name}')
|
||||
self._logger.debug(__name__, f'Environment: {self._configuration.environment.environment_name}')
|
||||
self._logger.debug(__name__, f'Customer: {self._configuration.environment.customer}')
|
||||
self._services.get_service(UserRepoABC).add_test_user()
|
||||
|
14
src/tests/custom/database/src/model/city_model.py
Normal file
14
src/tests/custom/database/src/model/city_model.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from sqlalchemy import Column, Integer, String
|
||||
|
||||
from cpl.database import DatabaseModel
|
||||
|
||||
|
||||
class CityModel(DatabaseModel):
|
||||
__tablename__ = 'Cities'
|
||||
Id = Column(Integer, primary_key=True, nullable=False, autoincrement=True)
|
||||
Name = Column(String(64), nullable=False)
|
||||
ZIP = Column(String(5), nullable=False)
|
||||
|
||||
def __init__(self, name: str, zip_code: str):
|
||||
self.Name = name
|
||||
self.ZIP = zip_code
|
18
src/tests/custom/database/src/model/user_model.py
Normal file
18
src/tests/custom/database/src/model/user_model.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from sqlalchemy import Column, Integer, String, ForeignKey
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from cpl.database import DatabaseModel
|
||||
from .city_model import CityModel
|
||||
|
||||
|
||||
class UserModel(DatabaseModel):
|
||||
__tablename__ = 'Users'
|
||||
Id = Column(Integer, primary_key=True, nullable=False, autoincrement=True)
|
||||
Name = Column(String(64), nullable=False)
|
||||
City_Id = Column(Integer, ForeignKey('Cities.Id'), nullable=False)
|
||||
City = relationship("CityModel")
|
||||
|
||||
def __init__(self, name: str, city: CityModel):
|
||||
self.Name = name
|
||||
self.City_Id = city.Id
|
||||
self.City = city
|
23
src/tests/custom/database/src/model/user_repo.py
Normal file
23
src/tests/custom/database/src/model/user_repo.py
Normal file
@@ -0,0 +1,23 @@
|
||||
from cpl.database.context import DatabaseContextABC
|
||||
from .city_model import CityModel
|
||||
from .user_model import UserModel
|
||||
from .user_repo_abc import UserRepoABC
|
||||
|
||||
|
||||
class UserRepo(UserRepoABC):
|
||||
|
||||
def __init__(self, db_context: DatabaseContextABC):
|
||||
UserRepoABC.__init__(self)
|
||||
|
||||
self._session = db_context.session
|
||||
self._user_query = db_context.session.query(UserModel)
|
||||
|
||||
def create(self): pass
|
||||
|
||||
def add_test_user(self):
|
||||
city = CityModel('Haren', '49733')
|
||||
city2 = CityModel('Meppen', '49716')
|
||||
self._session.add(city2)
|
||||
user = UserModel('TestUser', city)
|
||||
self._session.add(user)
|
||||
self._session.commit()
|
7
src/tests/custom/database/src/model/user_repo_abc.py
Normal file
7
src/tests/custom/database/src/model/user_repo_abc.py
Normal file
@@ -0,0 +1,7 @@
|
||||
from abc import ABC, abstractmethod
|
||||
|
||||
|
||||
class UserRepoABC(ABC):
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
@@ -4,6 +4,8 @@ from cpl.database import DatabaseSettings
|
||||
from cpl.dependency_injection import ServiceProviderABC, ServiceCollectionABC
|
||||
from cpl.logging import LoggerABC, Logger
|
||||
from model.db_context import DBContext
|
||||
from model.user_repo import UserRepo
|
||||
from model.user_repo_abc import UserRepoABC
|
||||
|
||||
|
||||
class Startup(StartupABC):
|
||||
@@ -30,6 +32,8 @@ class Startup(StartupABC):
|
||||
db_settings: DatabaseSettings = self._configuration.get_configuration(DatabaseSettings)
|
||||
self._services.add_db_context(DBContext, db_settings)
|
||||
|
||||
self._services.add_singleton(UserRepoABC, UserRepo)
|
||||
|
||||
self._services.add_singleton(LoggerABC, Logger)
|
||||
return self._services.build_service_provider()
|
||||
|
||||
|
Reference in New Issue
Block a user