Added first version of database and orm
This commit is contained in:
0
src/tests_dev/db/__init__.py
Normal file
0
src/tests_dev/db/__init__.py
Normal file
14
src/tests_dev/db/city.py
Normal file
14
src/tests_dev/db/city.py
Normal 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
18
src/tests_dev/db/user.py
Normal 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
|
||||
23
src/tests_dev/db/user_repo.py
Normal file
23
src/tests_dev/db/user_repo.py
Normal 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()
|
||||
10
src/tests_dev/db/user_repo_base.py
Normal file
10
src/tests_dev/db/user_repo_base.py
Normal 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)
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user