редактирование ящика
This commit is contained in:
+23
-9
@@ -1,4 +1,4 @@
|
||||
from sqlalchemy import delete, update
|
||||
from sqlalchemy import delete
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.ext.asyncio import create_async_engine, async_sessionmaker
|
||||
from sqlalchemy.exc import InvalidRequestError
|
||||
@@ -17,6 +17,7 @@ Base = declarative_base()
|
||||
|
||||
class CRUD:
|
||||
|
||||
@staticmethod
|
||||
async def create(db_data, refresh: bool = False):
|
||||
try:
|
||||
is_lst = isinstance(db_data, list)
|
||||
@@ -43,9 +44,10 @@ class CRUD:
|
||||
logger.debug("Запись создана")
|
||||
return db_data if refresh else None
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка создания: {str(e)}", exc_debug=True)
|
||||
logger.error(f"Ошибка создания: {str(e)}", exc_info=True)
|
||||
return None
|
||||
|
||||
@staticmethod
|
||||
async def read(query, all: bool = False):
|
||||
try:
|
||||
async with SessionLocal() as db:
|
||||
@@ -58,9 +60,10 @@ class CRUD:
|
||||
else results.unique().scalars().first()
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка чтения: {str(e)}", exc_debug=True)
|
||||
logger.error(f"Ошибка чтения: {str(e)}", exc_info=True)
|
||||
return None
|
||||
|
||||
@staticmethod
|
||||
async def delete(db_data) -> bool:
|
||||
def itemdebug(instance):
|
||||
from sqlalchemy import inspect
|
||||
@@ -98,18 +101,29 @@ class CRUD:
|
||||
return True
|
||||
except Exception as e:
|
||||
await db.rollback()
|
||||
logger.error(f"Ошибка удаления: {str(e)}", exc_debug=True)
|
||||
logger.error(f"Ошибка удаления: {str(e)}", exc_info=True)
|
||||
return False
|
||||
|
||||
async def update(db_data, id, **kwargs):
|
||||
@staticmethod
|
||||
async def update(model, id: int, **kwargs):
|
||||
from sqlalchemy import update as sa_update
|
||||
|
||||
async with SessionLocal() as db:
|
||||
try:
|
||||
query = update(db_data).where(db_data.id == id).values(**kwargs)
|
||||
item = await db.execute(query)
|
||||
query = (
|
||||
sa_update(model)
|
||||
.where(model.id == id)
|
||||
.values(**kwargs)
|
||||
.execution_options(synchronize_session="fetch")
|
||||
)
|
||||
await db.execute(query)
|
||||
await db.commit()
|
||||
|
||||
logger.debug("Запись обновлена")
|
||||
return await db.get(db_data, id)
|
||||
|
||||
return await db.get(model, id)
|
||||
|
||||
except Exception as e:
|
||||
await db.rollback()
|
||||
logger.error(f"Ошибка обновления: {str(e)}", exc_debug=True)
|
||||
logger.error(f"Ошибка обновления: {str(e)}", exc_info=True)
|
||||
return None
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -42,7 +42,7 @@ class ToolboxHandler:
|
||||
return {}
|
||||
try:
|
||||
user_id = kwargs.pop("user_id", None)
|
||||
editedToolbox = await toolbox.edit(**kwargs)
|
||||
editedToolbox = await toolbox.edit(toolboxId, **kwargs)
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка обновления тулбокса: {str(e)}")
|
||||
return {}
|
||||
|
||||
Binary file not shown.
@@ -27,5 +27,6 @@ class Toolbox(Base):
|
||||
async def save(self):
|
||||
return await CRUD.create(self, refresh=True)
|
||||
|
||||
@staticmethod
|
||||
async def edit(id: int, **kwargs):
|
||||
return await CRUD.update(Toolbox, id, **kwargs)
|
||||
|
||||
Reference in New Issue
Block a user