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

@@ -5,7 +5,7 @@ from api.endpoints.keyring import api_router as keyring_router
from api.endpoints.listevents import api_router as listevents_router from api.endpoints.listevents import api_router as listevents_router
from api.endpoints.processschema import api_router as processschema_router from api.endpoints.processschema import api_router as processschema_router
list_of_routes = [auth_router, profile_router, account_router, keyring_router, listevents_router,processschema_router] list_of_routes = [auth_router, profile_router, account_router, keyring_router, listevents_router, processschema_router]
__all__ = [ __all__ = [
"list_of_routes", "list_of_routes",

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

@@ -2,7 +2,8 @@ from datetime import datetime
from typing import Dict, Any 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

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.