Added first version of database and orm

This commit is contained in:
2020-12-11 21:48:46 +01:00
parent ee60be9880
commit 03ba1d1847
17 changed files with 183 additions and 20 deletions

View File

14
src/tests_dev/db/city.py Normal file
View File

@@ -0,0 +1,14 @@
from sqlalchemy import Column, Integer, String
from sh_edraft.database.model import DBModel
class City(DBModel):
__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_dev/db/user.py Normal file
View File

@@ -0,0 +1,18 @@
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship
from sh_edraft.database.model import DBModel
from tests_dev.db.city import City as CityModel
class User(DBModel):
__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("City")
def __init__(self, name: str, city: CityModel):
self.Name = name
self.City_Id = city.Id
self.City = city

View File

@@ -0,0 +1,23 @@
from sh_edraft.database.context.base import DatabaseContextBase
from tests_dev.db.city import City
from tests_dev.db.user import User
from tests_dev.db.user_repo_base import UserRepoBase
class UserRepo(UserRepoBase):
def __init__(self, db_context: DatabaseContextBase):
UserRepoBase.__init__(self)
self._session = db_context.session
self._user_query = db_context.session.query(User)
def create(self): pass
def add_test_user(self):
city = City('Haren', '49733')
city2 = City('Meppen', '49716')
self._session.add(city2)
user = User('TestUser', city)
self._session.add(user)
self._session.commit()

View File

@@ -0,0 +1,10 @@
from abc import abstractmethod
from sh_edraft.service.base import ServiceBase
class UserRepoBase(ServiceBase):
@abstractmethod
def __init__(self):
ServiceBase.__init__(self)

View File

@@ -1,15 +1,17 @@
from typing import Optional
from sh_edraft.configuration.base import ConfigurationBase
from sh_edraft.database.connection import DatabaseConnection
from sh_edraft.database.connection.base import DatabaseConnectionBase
from sh_edraft.database.context import DatabaseContext
from sh_edraft.database.model import DatabaseSettings
from sh_edraft.hosting import ApplicationHost
from sh_edraft.hosting.base import ApplicationBase
from sh_edraft.logging import Logger
from sh_edraft.logging.base import LoggerBase
from sh_edraft.service.providing.base import ServiceProviderBase
from sh_edraft.utils.credential_manager import CredentialManager
from sh_edraft.utils import CredentialManager
from tests_dev.db.user_repo import UserRepo
from tests_dev.db.user_repo_base import UserRepoBase
class Program(ApplicationBase):
@@ -38,10 +40,12 @@ class Program(ApplicationBase):
def create_services(self):
# Create and connect to database
db_settings: DatabaseSettings = self._configuration.get_configuration(DatabaseSettings)
self._services.add_singleton(DatabaseConnectionBase, DatabaseConnection)
db: DatabaseConnectionBase = self._services.get_service(DatabaseConnectionBase)
self._services.add_db_context(DatabaseContext)
db: DatabaseContext = self._services.get_db_context()
db.connect(CredentialManager.build_string(db_settings.connection_string, db_settings.credentials))
self._services.add_scoped(UserRepoBase, UserRepo)
# Add and create logger
self._services.add_singleton(LoggerBase, Logger)
self._logger = self._services.get_service(LoggerBase)
@@ -51,3 +55,4 @@ class Program(ApplicationBase):
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(UserRepoBase).add_test_user()