feat: CRUD ProcessSchema #16

Merged
ivan.dev merged 8 commits from VORKOUT-17 into master 2025-08-05 21:37:07 +05:00
19 changed files with 466 additions and 134 deletions
Showing only changes of commit 2030d54b2c - Show all commits

View File

@@ -80,7 +80,6 @@ async def get_user_by_login(connection: AsyncConnection, login: str) -> Optional
if not user_data: if not user_data:
return None return None
return User.model_validate(user_data) return User.model_validate(user_data)

View File

@@ -122,9 +122,6 @@ async def get_listevents_by_name(connection: AsyncConnection, name: str) -> Opti
if not listevents_data: if not listevents_data:
return None return None
return ListEvent.model_validate(listevents_data) return ListEvent.model_validate(listevents_data)

View File

@@ -13,6 +13,7 @@ from api.schemas.process.process_schema import ProcessSchema
from api.schemas.endpoints.process_schema import all_process_schema_adapter, AllProcessSchemaResponse from api.schemas.endpoints.process_schema import all_process_schema_adapter, AllProcessSchemaResponse
ivan.dev marked this conversation as resolved Outdated

Может, переименуем processschema в process_schema, а то как-то 3 s странновато выглядят?

Может, переименуем `processschema` в `process_schema`, а то как-то 3 s странновато выглядят?
async def get_process_schema_page_by_creator_id( async def get_process_schema_page_by_creator_id(
connection: AsyncConnection, creator_id: int, page: int, limit: int connection: AsyncConnection, creator_id: int, page: int, limit: int
) -> Optional[AllProcessSchemaResponse]: ) -> Optional[AllProcessSchemaResponse]:
@@ -39,9 +40,7 @@ async def get_process_schema_page_by_creator_id(
) )
count_query = ( count_query = (
select(func.count()) select(func.count()).select_from(process_schema_table).where(process_schema_table.c.creator_id == creator_id)
.select_from(process_schema_table)
.where(process_schema_table.c.creator_id == creator_id)
) )
result = await connection.execute(query) result = await connection.execute(query)
@@ -94,7 +93,6 @@ async def get_process_schema_page(connection: AsyncConnection, page, limit) -> O
total_count = count_result.scalar() total_count = count_result.scalar()
total_pages = math.ceil(total_count / limit) total_pages = math.ceil(total_count / limit)
validated_process_schema = all_process_schema_adapter.validate_python(events_data) validated_process_schema = all_process_schema_adapter.validate_python(events_data)
return AllProcessSchemaResponse( return AllProcessSchemaResponse(
@@ -106,7 +104,6 @@ async def get_process_schema_page(connection: AsyncConnection, page, limit) -> O
) )
async def get_process_schema_by_title(connection: AsyncConnection, title: str) -> Optional[ProcessSchema]: async def get_process_schema_by_title(connection: AsyncConnection, title: str) -> Optional[ProcessSchema]:
""" """
Получает process schema по title. Получает process schema по title.
@@ -121,6 +118,7 @@ async def get_process_schema_by_title(connection: AsyncConnection, title: str) -
return ProcessSchema.model_validate(processschema_data) return ProcessSchema.model_validate(processschema_data)
async def get_process_schema_by_id(connection: AsyncConnection, id: int) -> Optional[ProcessSchema]: async def get_process_schema_by_id(connection: AsyncConnection, id: int) -> Optional[ProcessSchema]:
ivan.dev marked this conversation as resolved Outdated

Тут можно упростить, написал ниже

Тут можно упростить, написал ниже
""" """
Получает processschema по id. Получает processschema по id.
@@ -129,13 +127,13 @@ async def get_process_schema_by_id(connection: AsyncConnection, id: int) -> Opti
processschema_db_cursor = await connection.execute(query) processschema_db_cursor = await connection.execute(query)
processschema_data = processschema_db_cursor.mappings().one_or_none() processschema_data = processschema_db_cursor.mappings().one_or_none()
if not processschema_data: if not processschema_data:
return None return None
return ProcessSchema.model_validate(processschema_data) return ProcessSchema.model_validate(processschema_data)
async def update_process_schema_by_id(connection: AsyncConnection, update_values, processschema): async def update_process_schema_by_id(connection: AsyncConnection, update_values, processschema):
""" """
Вносит изменеия в нужное поле таблицы process_schema_table. Вносит изменеия в нужное поле таблицы process_schema_table.
@@ -146,7 +144,10 @@ async def update_process_schema_by_id(connection: AsyncConnection, update_values
await connection.commit() await connection.commit()
ivan.dev marked this conversation as resolved Outdated

Давай тут перейдем к схеме попроще

processschema_data = processschema_db_cursor.mappings().one_or_none()
if not processschema_data:
    return None
Давай тут перейдем к схеме попроще ```python processschema_data = processschema_db_cursor.mappings().one_or_none() if not processschema_data: return None ```
async def create_process_schema(connection: AsyncConnection, processschema: ProcessSchema, creator_id: int) -> Optional[ProcessSchema]:
async def create_process_schema(
connection: AsyncConnection, processschema: ProcessSchema, creator_id: int
) -> Optional[ProcessSchema]:
""" """
Создает нове поле в таблице process_schema_table. Создает нове поле в таблице process_schema_table.
""" """

View File

@@ -98,7 +98,6 @@ async def update_account(
if user_update.password is not None: if user_update.password is not None:
await update_password_key(connection, user.id, user_update.password) await update_password_key(connection, user.id, user_update.password)
updated_values = user_update.model_dump(by_alias=True, exclude_none=True) updated_values = user_update.model_dump(by_alias=True, exclude_none=True)
if not updated_values: if not updated_values:

View File

@@ -17,7 +17,7 @@ from api.db.logic.processschema import (
get_process_schema_by_id, get_process_schema_by_id,
update_process_schema_by_id, update_process_schema_by_id,
get_process_schema_page_by_creator_id, get_process_schema_page_by_creator_id,
get_process_schema_page get_process_schema_page,
) )
from api.schemas.process.process_schema import ProcessSchema from api.schemas.process.process_schema import ProcessSchema
@@ -42,6 +42,7 @@ api_router = APIRouter(
tags=["process schema"], tags=["process schema"],
) )
@api_router.get("", dependencies=[Depends(bearer_schema)], response_model=AllProcessSchemaResponse) @api_router.get("", dependencies=[Depends(bearer_schema)], response_model=AllProcessSchemaResponse)
async def get_all_process_schema( async def get_all_process_schema(
page: int = 1, page: int = 1,
@@ -87,6 +88,7 @@ async def get_process_schema(
return processschema_validation return processschema_validation
@api_router.post("", dependencies=[Depends(bearer_schema)], response_model=ProcessSchema) @api_router.post("", dependencies=[Depends(bearer_schema)], response_model=ProcessSchema)
async def create_processschema( async def create_processschema(
processschema: ProcessSchemaUpdate, processschema: ProcessSchemaUpdate,
@@ -134,6 +136,7 @@ async def update_process_schema(
return processschema return processschema
@api_router.delete("/{processschema_id}", dependencies=[Depends(bearer_schema)], response_model=ProcessSchema) @api_router.delete("/{processschema_id}", dependencies=[Depends(bearer_schema)], response_model=ProcessSchema)
async def delete_process_schema( async def delete_process_schema(
processschema_id: int, processschema_id: int,

View File

@@ -47,7 +47,6 @@ async def update_profile(
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Account not found") raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Account not found")
if user_update.role is None and user_update.login is None: if user_update.role is None and user_update.login is None:
updated_values = user_update.model_dump(by_alias=True, exclude_none=True) updated_values = user_update.model_dump(by_alias=True, exclude_none=True)
if updated_values is None: if updated_values is None:

View File

@@ -14,6 +14,7 @@ class ProcessSchemaUpdate(Base):
settings: Optional[Dict[str, Any]] = None settings: Optional[Dict[str, Any]] = None
status: Optional[ProcessStatus] = None status: Optional[ProcessStatus] = None
class AllProcessSchema(Base): class AllProcessSchema(Base):
id: int id: int
title: str = Field(..., max_length=100) title: str = Field(..., max_length=100)

View File

@@ -5,6 +5,7 @@ from datetime import datetime
from api.schemas.base import Base from api.schemas.base import Base
from api.db.tables.process import ProcessStatus from api.db.tables.process import ProcessStatus
class ProcessSchema(Base): class ProcessSchema(Base):
id: int id: int
title: str = Field(..., max_length=100) title: str = Field(..., max_length=100)

View File

@@ -4,6 +4,7 @@ from typing import Dict, Any
from api.schemas.base import Base from api.schemas.base import Base
from api.db.tables.process import NodeType, NodeStatus from api.db.tables.process import NodeType, NodeStatus
class Ps_Node(Base): class Ps_Node(Base):
id: int id: int
ps_id: int ps_id: int

View File

@@ -9,6 +9,7 @@ from api.db.tables.events import EventState, EventStatus
from api.schemas.endpoints.process_schema import ProcessSchemaUpdate from api.schemas.endpoints.process_schema import ProcessSchemaUpdate
from api.db.tables.process import ProcessStatus from api.db.tables.process import ProcessStatus
def update_user_data_changes(update_data: UserUpdate, user) -> Optional[dict]: def update_user_data_changes(update_data: UserUpdate, user) -> Optional[dict]:
""" """
Сравнивает данные для обновления с текущими значениями пользователя. Сравнивает данные для обновления с текущими значениями пользователя.
@@ -110,6 +111,7 @@ def update_listevents_data_changes(update_data: ListEventUpdate, listevents) ->
return changes if changes else None return changes if changes else None
def update_processschema_data_changes(update_data: ProcessSchemaUpdate, processschema) -> Optional[dict]: def update_processschema_data_changes(update_data: ProcessSchemaUpdate, processschema) -> Optional[dict]:
""" """
Сравнивает данные для обновления с текущими значениями processschema. Сравнивает данные для обновления с текущими значениями processschema.