Skip to content

Commit 0863b6c

Browse files
committed
refactor: TT-357 refactor imports and module database
1 parent 2eed400 commit 0863b6c

File tree

11 files changed

+79
-64
lines changed

11 files changed

+79
-64
lines changed

V2/tests/api/azure/activity_azure_endpoints_test.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import pytest
2-
import typing
32
import json
43
import uuid
54
from faker import Faker
65

76
import azure.functions as func
7+
import sqlalchemy
88

99
import time_entries._application._activities as azure_activities
1010
import time_entries._domain as domain
@@ -34,8 +34,17 @@ def _create_fake_database() -> domain.ActivitiesDao:
3434
'tenant_id': 'cc925a5d-9644-4a4f-8d99-0bee49aadd05',
3535
},
3636
]
37-
38-
query = db_fake.activity.insert()
37+
activity = sqlalchemy.Table('activity', db_fake.metadata,
38+
sqlalchemy.Column('name', sqlalchemy.String),
39+
sqlalchemy.Column('id', infrastructure.GUID(), primary_key=True, default=uuid.uuid4),
40+
sqlalchemy.Column('description', sqlalchemy.String),
41+
sqlalchemy.Column('deleted', sqlalchemy.String),
42+
sqlalchemy.Column('status', sqlalchemy.String),
43+
sqlalchemy.Column('tenant_id', sqlalchemy.String),
44+
extend_existing=True,
45+
)
46+
47+
query = activity.insert()
3948
db_fake.get_session().execute(query, demo_data)
4049
return db_fake, demo_data
4150

V2/tests/integration/daos/activities_sql_dao_test.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import pytest
22
import uuid
33

4+
import sqlalchemy
5+
46
import time_entries._domain as domain
57
import time_entries._infrastructure as infrastructure
68

@@ -27,7 +29,16 @@ def _create_fake_database(with_data: bool) -> domain.ActivitiesDao:
2729
},
2830
]
2931
if with_data:
30-
query = db_fake.activity.insert()
32+
activity = sqlalchemy.Table('activity', db_fake.metadata,
33+
sqlalchemy.Column('name', sqlalchemy.String),
34+
sqlalchemy.Column('id', infrastructure.GUID(), primary_key=True, default=uuid.uuid4),
35+
sqlalchemy.Column('description', sqlalchemy.String),
36+
sqlalchemy.Column('deleted', sqlalchemy.String),
37+
sqlalchemy.Column('status', sqlalchemy.String),
38+
sqlalchemy.Column('tenant_id', sqlalchemy.String),
39+
extend_existing=True,
40+
)
41+
query = activity.insert()
3142
db_fake.get_session().execute(query, demo_data)
3243
return db_fake
3344

V2/time_entries/_application/_activities/_delete_activity.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import json
22
import logging
33

4-
from time_entries._infrastructure import ActivitiesSQLDao, DB
5-
from time_entries._domain import ActivityService, _use_cases
6-
74
import azure.functions as func
85

9-
DATABASE = DB()
6+
from ... import _domain
7+
from ... import _infrastructure
8+
9+
DATABASE = _infrastructure.DB()
1010

1111

1212
def delete_activity(req: func.HttpRequest) -> func.HttpResponse:
@@ -23,13 +23,13 @@ def delete_activity(req: func.HttpRequest) -> func.HttpResponse:
2323

2424

2525
def _delete(activity_id: str) -> str:
26-
activity_use_case = _use_cases.DeleteActivityUseCase(
26+
activity_use_case = _domain._use_cases.DeleteActivityUseCase(
2727
_create_activity_service(DATABASE)
2828
)
2929
activity = activity_use_case.delete_activity(activity_id)
3030
return json.dumps(activity.__dict__) if activity else b'Not found'
3131

3232

33-
def _create_activity_service(db: DB):
34-
activity_sql = ActivitiesSQLDao(db)
35-
return ActivityService(activity_sql)
33+
def _create_activity_service(db: _infrastructure.DB):
34+
activity_sql = _infrastructure.ActivitiesSQLDao(db)
35+
return _domain.ActivityService(activity_sql)

V2/time_entries/_application/_activities/_get_activities.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import json
22
import logging
33

4-
from time_entries._infrastructure import ActivitiesSQLDao, DB
5-
from time_entries._domain import ActivityService, _use_cases
6-
74
import azure.functions as func
85

9-
DATABASE = DB()
6+
from ... import _domain
7+
from ... import _infrastructure
8+
9+
DATABASE = _infrastructure.DB()
1010

1111

1212
def get_activities(req: func.HttpRequest) -> func.HttpResponse:
@@ -29,7 +29,7 @@ def get_activities(req: func.HttpRequest) -> func.HttpResponse:
2929

3030

3131
def _get_by_id(activity_id: str) -> str:
32-
activity_use_case = _use_cases.GetActivityUseCase(
32+
activity_use_case = _domain._use_cases.GetActivityUseCase(
3333
_create_activity_service(DATABASE)
3434
)
3535
activity = activity_use_case.get_activity_by_id(activity_id)
@@ -38,7 +38,7 @@ def _get_by_id(activity_id: str) -> str:
3838

3939

4040
def _get_all() -> str:
41-
activities_use_case = _use_cases.GetActivitiesUseCase(
41+
activities_use_case = _domain._use_cases.GetActivitiesUseCase(
4242
_create_activity_service(DATABASE)
4343
)
4444
return json.dumps(
@@ -49,6 +49,6 @@ def _get_all() -> str:
4949
)
5050

5151

52-
def _create_activity_service(db: DB):
53-
activity_sql = ActivitiesSQLDao(db)
54-
return ActivityService(activity_sql)
52+
def _create_activity_service(db: _infrastructure.DB):
53+
activity_sql = _infrastructure.ActivitiesSQLDao(db)
54+
return _domain.ActivityService(activity_sql)
Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
from time_entries._infrastructure import ActivitiesSQLDao, DB
2-
from time_entries._domain import ActivityService, Activity, _use_cases
3-
4-
import azure.functions as func
51
import dataclasses
62
import json
73
import logging
84

9-
DATABASE = DB()
5+
import azure.functions as func
6+
7+
from ... import _domain
8+
from ... import _infrastructure
9+
10+
DATABASE = _infrastructure.DB()
1011

1112

1213
def update_activity(req: func.HttpRequest) -> func.HttpResponse:
@@ -15,7 +16,7 @@ def update_activity(req: func.HttpRequest) -> func.HttpResponse:
1516
)
1617
activity_id = req.route_params.get('id')
1718
activity_data = req.get_json() if req.get_body() else {}
18-
activity_keys = [field.name for field in dataclasses.fields(Activity)]
19+
activity_keys = [field.name for field in dataclasses.fields(_domain.Activity)]
1920

2021
if all(key in activity_keys for key in activity_data.keys()):
2122
response = _update(activity_id, activity_data)
@@ -30,13 +31,13 @@ def update_activity(req: func.HttpRequest) -> func.HttpResponse:
3031

3132

3233
def _update(activity_id: str, activity_data: dict) -> str:
33-
activity_use_case = _use_cases.UpdateActivityUseCase(
34+
activity_use_case = _domain._use_cases.UpdateActivityUseCase(
3435
_create_activity_service(DATABASE)
3536
)
3637
activity = activity_use_case.update_activity(activity_id, activity_data)
3738
return json.dumps(activity.__dict__) if activity else b'Not Found'
3839

3940

40-
def _create_activity_service(db: DB):
41-
activity_sql = ActivitiesSQLDao(db)
42-
return ActivityService(activity_sql)
41+
def _create_activity_service(db: _infrastructure.DB):
42+
activity_sql = _infrastructure.ActivitiesSQLDao(db)
43+
return _domain.ActivityService(activity_sql)

V2/time_entries/_domain/_persistence_contracts/_activities_dao.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,4 @@ def update(self, id: str, new_activity: dict) -> Activity:
2222

2323
@abc.abstractmethod
2424
def create_activity(self, activity_data: dict) -> Activity:
25-
pass
26-
27-
@abc.abstractmethod
28-
def delete(self, id: str) -> Activity:
29-
pass
25+
pass
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
from ._data_persistence import ActivitiesSQLDao
22
from ._data_persistence import DB
3+
from ._data_persistence import GUID
34
from ._data_persistence import Config
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
from ._activities_sql_dao import ActivitiesSQLDao
2-
from ._db import DB
2+
from ._db import DB, GUID
33
from ._config import Config

V2/time_entries/_infrastructure/_data_persistence/_activities_sql_dao.py

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,37 @@
11
import dataclasses
22
import typing
3+
import uuid
34

5+
import sqlalchemy
46
import sqlalchemy.sql as sql
57

68
import time_entries._domain as domain
9+
from . import _db
10+
711
class ActivitiesSQLDao(domain.ActivitiesDao):
812

9-
def __init__(self,database):
13+
def __init__(self, database: _db.DB):
1014
self.activity_keys = [
1115
field.name for field in dataclasses.fields(domain.Activity)
1216
]
1317
self.db = database
18+
self.activity = sqlalchemy.Table('activity', self.db.metadata,
19+
sqlalchemy.Column('id',_db.GUID() , primary_key=True,default= uuid.uuid4),
20+
sqlalchemy.Column('name', sqlalchemy.String),
21+
sqlalchemy.Column('description', sqlalchemy.String),
22+
sqlalchemy.Column('deleted', sqlalchemy.String),
23+
sqlalchemy.Column('status', sqlalchemy.String),
24+
sqlalchemy.Column('tenant_id', sqlalchemy.String),
25+
extend_existing=True,
26+
)
1427

1528
def get_by_id(self, activity_id: str) -> domain.Activity:
16-
query = sql.select(self.db.activity).where(self.db.activity.c.id == activity_id)
29+
query = sql.select(self.activity).where(self.activity.c.id == activity_id)
1730
activity = self.db.get_session().execute(query).one_or_none()
1831
return self.__create_activity_dto(dict(activity)) if activity else None
1932

2033
def get_all(self) -> typing.List[domain.Activity]:
21-
query = sql.select(self.db.activity)
34+
query = sql.select(self.activity)
2235
result = self.db.get_session().execute(query)
2336
return [
2437
self.__create_activity_dto(dict(activity))
@@ -28,18 +41,18 @@ def get_all(self) -> typing.List[domain.Activity]:
2841
def create_activity(self, activity_data: dict) -> domain.Activity:
2942
activity_data.pop('id', None)
3043
activity_data.update({"status":"active"})
31-
query = self.db.activity.insert().values(activity_data)
44+
query = self.activity.insert().values(activity_data)
3245
activity = self.db.get_session().execute(query)
3346
return self.__create_activity_dto(activity.last_inserted_params())
3447

3548
def delete(self, activity_id: str) -> domain.Activity:
36-
query = self.db.activity.update().where(self.db.activity.c.id == activity_id).values(status = 'inactive')
49+
query = self.activity.update().where(self.activity.c.id == activity_id).values(status = 'inactive')
3750
self.db.get_session().execute(query)
3851
return self.get_by_id(activity_id);
3952

4053
def update(self, activity_id: str, new_activity: dict) -> domain.Activity:
4154
new_activity.pop('id', None)
42-
query = self.db.activity.update().where(self.db.activity.c.id==activity_id).values(new_activity)
55+
query = self.activity.update().where(self.activity.c.id==activity_id).values(new_activity)
4356
self.db.get_session().execute(query)
4457
return self.get_by_id(activity_id)
4558

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import typing
22
import os
33

4-
_CONFIG_FILE = '.env'
54

65

76
class Config(typing.NamedTuple):
@@ -11,13 +10,5 @@ class Config(typing.NamedTuple):
1110
DB_NAME: str
1211

1312

14-
def load_config():
15-
with open(_CONFIG_FILE, 'r') as config_file:
16-
configs = {
17-
config.split('=')[0]: config.split('=')[1].replace('\n', '')
18-
for config in config_file.readlines()
19-
}
20-
return Config(**configs)
21-
2213
def load_config_os():
2314
return Config(os.environ.get("DB_CONNECTION_STRING"),os.environ.get("DB_USER"),os.environ.get("DB_PASS"),os.environ.get("DB_NAME"))

0 commit comments

Comments
 (0)