Skip to content

Commit 9e0eba9

Browse files
authored
Merge pull request #18 from sumaro2101/develop
dao options
2 parents 5395452 + 1aff990 commit 9e0eba9

File tree

2 files changed

+38
-9
lines changed

2 files changed

+38
-9
lines changed

api_v1/users/dao.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from config.models import User
2+
from config.dao import BaseDAO
3+
4+
5+
class UserDAO(BaseDAO):
6+
"""
7+
DAO для CRUD пользователя
8+
"""
9+
model = User

config/dao/base_dao.py

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class BaseDAO:
2626
items = ModelDAO.find_all_items_by_args(
2727
session = session,
2828
one_to_many = (Model.tag,),
29+
many_to_many = (Model.users, Model.stations,)
2930
name='model',
3031
)
3132
# Создание сущности
@@ -108,15 +109,34 @@ async def add(cls,
108109
session: AsyncSession,
109110
**values,
110111
) -> BaseModel:
111-
async with session.begin():
112-
instance = cls.model(**values)
113-
session.add(instance=instance)
114-
try:
115-
await session.commit()
116-
except SQLAlchemyError as ex:
117-
await session.rollback()
118-
raise ex
119-
return instance
112+
instance = cls.model(**values)
113+
session.add(instance=instance)
114+
try:
115+
await session.commit()
116+
except SQLAlchemyError as ex:
117+
await session.rollback()
118+
raise ex
119+
return instance
120+
121+
@classmethod
122+
async def update(cls,
123+
session: AsyncSession,
124+
instance: BaseModel,
125+
**values,
126+
) -> BaseModel:
127+
[setattr(instance, name, value)
128+
for name, value
129+
in values.items()]
130+
await session.commit()
131+
return instance
132+
133+
@classmethod
134+
async def delete(cls,
135+
session: AsyncSession,
136+
instance: BaseModel,
137+
) -> None:
138+
await session.delete(instance)
139+
await session.commit()
120140

121141

122142
def struct_options_statment(model: BaseModel,

0 commit comments

Comments
 (0)