редактирование ящика

This commit is contained in:
2025-12-09 09:16:01 +03:00
parent 307f970d28
commit a81dbae85e
9 changed files with 111 additions and 22 deletions
+23 -9
View File
@@ -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