From 571186151b8c44c725d1694f2265850e00a9819b Mon Sep 17 00:00:00 2001 From: Vladislav Syrochkin Date: Wed, 20 Aug 2025 14:42:20 +0500 Subject: [PATCH] refactor(api): remove db tables and fix import paths --- api/api/db/__init__.py | 7 -- api/api/db/alembic/env.py | 2 +- api/api/db/logic/account.py | 2 +- api/api/db/logic/auth.py | 2 +- api/api/db/logic/keyring.py | 2 +- api/api/db/logic/list_events.py | 2 +- api/api/db/logic/process_schema.py | 2 +- api/api/db/sql_types.py | 18 ---- api/api/db/tables/__init__.py | 1 - api/api/db/tables/account.py | 65 ----------- api/api/db/tables/events.py | 33 ------ api/api/db/tables/process.py | 107 ------------------- api/api/endpoints/account.py | 2 +- api/api/endpoints/keyring.py | 2 +- api/api/endpoints/list_events.py | 2 +- api/api/endpoints/process_schema.py | 2 +- api/api/schemas/account/account.py | 2 +- api/api/schemas/account/account_keyring.py | 2 +- api/api/schemas/endpoints/account.py | 2 +- api/api/schemas/endpoints/account_keyring.py | 2 +- api/api/schemas/endpoints/list_events.py | 2 +- api/api/schemas/endpoints/process_schema.py | 2 +- api/api/schemas/events/list_events.py | 2 +- api/api/schemas/process/node_link.py | 2 +- api/api/schemas/process/process_schema.py | 2 +- api/api/schemas/process/ps_node.py | 2 +- api/api/services/auth.py | 2 +- api/api/services/user_role_validation.py | 2 +- api/api/utils/init.py | 2 +- 29 files changed, 23 insertions(+), 254 deletions(-) delete mode 100644 api/api/db/sql_types.py delete mode 100644 api/api/db/tables/__init__.py delete mode 100644 api/api/db/tables/account.py delete mode 100644 api/api/db/tables/events.py delete mode 100644 api/api/db/tables/process.py diff --git a/api/api/db/__init__.py b/api/api/db/__init__.py index 4a7a5d2..e69de29 100644 --- a/api/api/db/__init__.py +++ b/api/api/db/__init__.py @@ -1,7 +0,0 @@ -from sqlalchemy import MetaData - -metadata = MetaData() - -__all__ = [ - "metadata", -] diff --git a/api/api/db/alembic/env.py b/api/api/db/alembic/env.py index 190c21d..b27c51c 100644 --- a/api/api/db/alembic/env.py +++ b/api/api/db/alembic/env.py @@ -7,7 +7,7 @@ from sqlalchemy import pool from alembic import context -from api.db import metadata, tables +from orm import metadata, tables # this is the Alembic Config object, which provides # access to the values within the .ini file in use. diff --git a/api/api/db/logic/account.py b/api/api/db/logic/account.py index 039b9ca..08eb51e 100644 --- a/api/api/db/logic/account.py +++ b/api/api/db/logic/account.py @@ -6,7 +6,7 @@ from typing import Optional from sqlalchemy import insert, select, func, or_, and_, asc, desc from sqlalchemy.ext.asyncio import AsyncConnection -from api.db.tables.account import account_table +from orm.tables.account import account_table from api.schemas.account.account import User from api.schemas.endpoints.account import all_user_adapter, AllUser, AllUserResponse, UserCreate, UserFilterDTO diff --git a/api/api/db/logic/auth.py b/api/api/db/logic/auth.py index bb02986..f3b940f 100644 --- a/api/api/db/logic/auth.py +++ b/api/api/db/logic/auth.py @@ -4,7 +4,7 @@ from sqlalchemy import select, update from sqlalchemy.ext.asyncio import AsyncConnection from enum import Enum -from api.db.tables.account import account_table, account_keyring_table, KeyType, KeyStatus +from orm.tables.account import account_table, account_keyring_table, KeyType, KeyStatus from api.schemas.account.account import User from api.schemas.account.account_keyring import AccountKeyring diff --git a/api/api/db/logic/keyring.py b/api/api/db/logic/keyring.py index f4dd70d..fc1af7f 100644 --- a/api/api/db/logic/keyring.py +++ b/api/api/db/logic/keyring.py @@ -6,7 +6,7 @@ from sqlalchemy import insert, select, update from sqlalchemy.dialects.mysql import insert as mysql_insert from sqlalchemy.ext.asyncio import AsyncConnection -from api.db.tables.account import account_keyring_table, KeyStatus, KeyType +from orm.tables.account import account_keyring_table, KeyStatus, KeyType from api.schemas.account.account_keyring import AccountKeyring from api.utils.hasher import hasher diff --git a/api/api/db/logic/list_events.py b/api/api/db/logic/list_events.py index f1cfd4b..85a7cef 100644 --- a/api/api/db/logic/list_events.py +++ b/api/api/db/logic/list_events.py @@ -7,7 +7,7 @@ from datetime import datetime, timezone from sqlalchemy import insert, select, func, or_, and_, asc, desc from sqlalchemy.ext.asyncio import AsyncConnection -from api.db.tables.events import list_events_table +from orm.tables.events import list_events_table from api.schemas.events.list_events import ListEvent diff --git a/api/api/db/logic/process_schema.py b/api/api/db/logic/process_schema.py index 907be98..b1f9019 100644 --- a/api/api/db/logic/process_schema.py +++ b/api/api/db/logic/process_schema.py @@ -6,7 +6,7 @@ from datetime import datetime, timezone from sqlalchemy import insert, select, func, or_, and_, asc, desc from sqlalchemy.ext.asyncio import AsyncConnection -from api.db.tables.process import process_schema_table +from orm.tables.process import process_schema_table from api.schemas.process.process_schema import ProcessSchema diff --git a/api/api/db/sql_types.py b/api/api/db/sql_types.py deleted file mode 100644 index f988d5a..0000000 --- a/api/api/db/sql_types.py +++ /dev/null @@ -1,18 +0,0 @@ -__all__ = ["BigIntegerPK", "SAEnum", "UnsignedInt"] - -from typing import Any - -from sqlalchemy import BigInteger, Enum, Integer -from sqlalchemy.dialects import mysql - - -# class SAEnum(Enum): -# def __init__(self, *enums: object, **kw: Any): -# validate_strings = kw.pop("validate_strings", True) -# super().__init__(*enums, **kw, validate_strings=validate_strings) - - -# # https://docs.sqlalchemy.org/en/20/dialects/sqlite.html#allowing-autoincrement-behavior-sqlalchemy-types-other-than-integer-integer - -# BigIntegerPK = BigInteger().with_variant(Integer, "sqlite") -UnsignedInt = Integer().with_variant(mysql.INTEGER(unsigned=True), "mysql") diff --git a/api/api/db/tables/__init__.py b/api/api/db/tables/__init__.py deleted file mode 100644 index 944212d..0000000 --- a/api/api/db/tables/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import account, events, process diff --git a/api/api/db/tables/account.py b/api/api/db/tables/account.py deleted file mode 100644 index 9131884..0000000 --- a/api/api/db/tables/account.py +++ /dev/null @@ -1,65 +0,0 @@ -import enum - -from sqlalchemy import Table, Column, String, Enum as SQLAEnum, JSON, ForeignKey, DateTime, Index -from sqlalchemy.sql import func - -from api.db.sql_types import UnsignedInt -from api.db import metadata - - -class AccountRole(enum.StrEnum): - OWNER = "OWNER" - ADMIN = "ADMIN" - EDITOR = "EDITOR" - VIEWER = "VIEWER" - - -class AccountStatus(enum.StrEnum): - ACTIVE = "ACTIVE" - DISABLED = "DISABLED" - BLOCKED = "BLOCKED" - DELETED = "DELETED" - - -account_table = Table( - "account", - metadata, - Column("id", UnsignedInt, primary_key=True, autoincrement=True), - Column("name", String(100), nullable=False), - Column("login", String(100), nullable=False), - Column("email", String(100), nullable=True), - Column("bind_tenant_id", String(40), nullable=True), - Column("role", SQLAEnum(AccountRole), nullable=False), - Column("meta", JSON, default={}), - Column("creator_id", UnsignedInt, ForeignKey("account.id"), nullable=True), - Column("created_at", DateTime(timezone=True), server_default=func.now()), - Column("status", SQLAEnum(AccountStatus), nullable=False), - Index("idx_login", "login"), - Index("idx_name", "name"), -) - - -class KeyType(enum.StrEnum): - PASSWORD = "PASSWORD" - ACCESS_TOKEN = "ACCESS_TOKEN" - REFRESH_TOKEN = "REFRESH_TOKEN" - API_KEY = "API_KEY" - - -class KeyStatus(enum.StrEnum): - ACTIVE = "ACTIVE" - EXPIRED = "EXPIRED" - DELETED = "DELETED" - - -account_keyring_table = Table( - "account_keyring", - metadata, - Column("owner_id", UnsignedInt, ForeignKey("account.id"), primary_key=True, nullable=False), - Column("key_type", SQLAEnum(KeyType), primary_key=True, nullable=False), - Column("key_id", String(40), primary_key=True, default=None), - Column("key_value", String(512), nullable=False), - Column("created_at", DateTime(timezone=True), server_default=func.now()), - Column("expiry", DateTime(timezone=True), nullable=True), - Column("status", SQLAEnum(KeyStatus), nullable=False), -) diff --git a/api/api/db/tables/events.py b/api/api/db/tables/events.py deleted file mode 100644 index 8b60caf..0000000 --- a/api/api/db/tables/events.py +++ /dev/null @@ -1,33 +0,0 @@ -import enum - -from sqlalchemy import Table, Column, String, Enum as SQLAEnum, JSON, ForeignKey, DateTime -from sqlalchemy.sql import func - -from api.db.sql_types import UnsignedInt - -from api.db import metadata - - -class EventState(enum.StrEnum): - AUTO = "AUTO" - DESCRIPTED = "DESCRIPTED" - - -class EventStatus(enum.StrEnum): - ACTIVE = "ACTIVE" - DISABLED = "DISABLED" - DELETED = "DELETED" - - -list_events_table = Table( - "list_events", - metadata, - Column("id", UnsignedInt, primary_key=True, autoincrement=True), - Column("name", String(40, collation="latin1_bin"), nullable=False, unique=True), - Column("title", String(64), nullable=False), - Column("creator_id", UnsignedInt, ForeignKey("account.id"), nullable=False), - Column("created_at", DateTime(timezone=True), server_default=func.now()), - Column("schema", JSON, default={}), - Column("state", SQLAEnum(EventState), nullable=False), - Column("status", SQLAEnum(EventStatus), nullable=False), -) diff --git a/api/api/db/tables/process.py b/api/api/db/tables/process.py deleted file mode 100644 index 7f9beec..0000000 --- a/api/api/db/tables/process.py +++ /dev/null @@ -1,107 +0,0 @@ -import enum - -from sqlalchemy import ( - Table, - Column, - String, - Text, - Enum as SQLAEnum, - JSON, - ForeignKey, - DateTime, - Index, - PrimaryKeyConstraint, -) -from sqlalchemy.sql import func -from enum import Enum - -from api.db.sql_types import UnsignedInt - -from api.db import metadata - - -class ProcessStatus(enum.StrEnum): - ACTIVE = "ACTIVE" - STOPPING = "STOPPING" - STOPPED = "STOPPED" - DELETED = "DELETED" - - -process_schema_table = Table( - "process_schema", - metadata, - Column("id", UnsignedInt, primary_key=True, autoincrement=True), - Column("title", String(100), nullable=False), - Column("description", Text, nullable=False), - Column("owner_id", UnsignedInt, ForeignKey("account.id"), nullable=False), - Column("creator_id", UnsignedInt, ForeignKey("account.id"), nullable=False), - Column("created_at", DateTime(timezone=True), server_default=func.now()), - Column("settings", JSON, default={}), - Column("status", SQLAEnum(ProcessStatus), nullable=False), - Index( - "idx_owner_id", - "owner_id", - ), -) - -process_version_archive_table = Table( - "process_version_archive", - metadata, - Column("id", UnsignedInt, autoincrement=True, nullable=False), - Column("ps_id", UnsignedInt, ForeignKey("process_schema.id"), nullable=False), - Column("version", UnsignedInt, default=1, nullable=False), - Column("snapshot", JSON, default={}), - Column("owner_id", UnsignedInt, ForeignKey("account.id"), nullable=False), - Column("created_at", DateTime(timezone=True), server_default=func.now()), - Column("is_last", UnsignedInt, default=0), - PrimaryKeyConstraint("id", "version"), -) - - -class NodeStatus(enum.StrEnum): - ACTIVE = "ACTIVE" - DISABLED = "DISABLED" - DELETED = "DELETED" - - -class NodeType(Enum): - TYPE1 = "Type1" - TYPE2 = "Type2" - TYPE3 = "Type3" - - -ps_node_table = Table( - "ps_node", - metadata, - Column("id", UnsignedInt, autoincrement=True, primary_key=True, nullable=False), - Column("ps_id", UnsignedInt, ForeignKey("process_schema.id"), nullable=False), - Column("node_type", SQLAEnum(NodeType), nullable=False), - Column("settings", JSON, default={}), - Column("creator_id", UnsignedInt, ForeignKey("account.id"), nullable=False), - Column("created_at", DateTime(timezone=True), server_default=func.now()), - Column("status", SQLAEnum(NodeStatus), nullable=False), - Index("idx_ps_id", "ps_id"), -) - - -class NodeLinkStatus(enum.StrEnum): - ACTIVE = "ACTIVE" - STOPPING = "STOPPING" - STOPPED = "STOPPED" - DELETED = "DELETED" - - -node_link_table = Table( - "node_link", - metadata, - Column("id", UnsignedInt, autoincrement=True, primary_key=True, nullable=False), - Column("link_name", String(20), nullable=False), - Column("node_id", UnsignedInt, ForeignKey("ps_node.id"), nullable=False), - Column("next_node_id", UnsignedInt, ForeignKey("ps_node.id"), nullable=False), - Column("settings", JSON, default={}), - Column("creator_id", UnsignedInt, ForeignKey("account.id"), nullable=False), - Column("created_at", DateTime(timezone=True), server_default=func.now()), - Column("status", SQLAEnum(NodeLinkStatus), nullable=False), - Index("idx_node_id", "node_id"), - Index("idx_next_node_id", "next_node_id"), -) diff --git a/api/api/endpoints/account.py b/api/api/endpoints/account.py index 7506314..87ec25c 100644 --- a/api/api/endpoints/account.py +++ b/api/api/endpoints/account.py @@ -12,7 +12,7 @@ from api.db.logic.account import ( update_user_by_id, ) from api.db.logic.keyring import create_password_key, update_password_key -from api.db.tables.account import AccountStatus +from orm.tables.account import AccountStatus from api.schemas.account.account import User from api.schemas.base import bearer_schema from api.schemas.endpoints.account import AllUserResponse, UserCreate, UserUpdate, UserFilterDTO diff --git a/api/api/endpoints/keyring.py b/api/api/endpoints/keyring.py index 487627c..f564e81 100644 --- a/api/api/endpoints/keyring.py +++ b/api/api/endpoints/keyring.py @@ -16,7 +16,7 @@ from api.db.connection.session import get_connection_dep from api.db.logic.keyring import get_key_by_id, create_key, update_key_by_id -from api.db.tables.account import KeyStatus +from orm.tables.account import KeyStatus from api.schemas.base import bearer_schema from api.schemas.endpoints.account_keyring import AccountKeyringUpdate diff --git a/api/api/endpoints/list_events.py b/api/api/endpoints/list_events.py index b730af8..684fad3 100644 --- a/api/api/endpoints/list_events.py +++ b/api/api/endpoints/list_events.py @@ -18,7 +18,7 @@ from api.db.logic.list_events import ( from api.schemas.events.list_events import ListEvent -from api.db.tables.events import EventStatus +from orm.tables.events import EventStatus from api.schemas.base import bearer_schema diff --git a/api/api/endpoints/process_schema.py b/api/api/endpoints/process_schema.py index eee11b8..083f30d 100644 --- a/api/api/endpoints/process_schema.py +++ b/api/api/endpoints/process_schema.py @@ -17,7 +17,7 @@ from api.db.logic.process_schema import ( from api.schemas.process.process_schema import ProcessSchema -from api.db.tables.process import ProcessStatus +from orm.tables.process import ProcessStatus from api.schemas.base import bearer_schema diff --git a/api/api/schemas/account/account.py b/api/api/schemas/account/account.py index 28635d5..cc763eb 100644 --- a/api/api/schemas/account/account.py +++ b/api/api/schemas/account/account.py @@ -2,7 +2,7 @@ import datetime from datetime import datetime from typing import Optional from pydantic import EmailStr, Field -from api.db.tables.account import AccountRole, AccountStatus +from orm.tables.account import AccountRole, AccountStatus from api.schemas.base import Base diff --git a/api/api/schemas/account/account_keyring.py b/api/api/schemas/account/account_keyring.py index 2827f94..ca16de7 100644 --- a/api/api/schemas/account/account_keyring.py +++ b/api/api/schemas/account/account_keyring.py @@ -2,7 +2,7 @@ import datetime from typing import Optional from pydantic import Field from datetime import datetime -from api.db.tables.account import KeyType, KeyStatus +from orm.tables.account import KeyType, KeyStatus from api.schemas.base import Base diff --git a/api/api/schemas/endpoints/account.py b/api/api/schemas/endpoints/account.py index 9fa15c2..aea961a 100644 --- a/api/api/schemas/endpoints/account.py +++ b/api/api/schemas/endpoints/account.py @@ -3,7 +3,7 @@ from typing import List, Optional, Dict from pydantic import EmailStr, Field, TypeAdapter -from api.db.tables.account import AccountRole, AccountStatus +from orm.tables.account import AccountRole, AccountStatus from api.schemas.base import Base diff --git a/api/api/schemas/endpoints/account_keyring.py b/api/api/schemas/endpoints/account_keyring.py index 49eab9e..2d02d2d 100644 --- a/api/api/schemas/endpoints/account_keyring.py +++ b/api/api/schemas/endpoints/account_keyring.py @@ -1,6 +1,6 @@ from typing import Optional from pydantic import Field -from api.db.tables.account import KeyType, KeyStatus +from orm.tables.account import KeyType, KeyStatus from api.schemas.base import Base diff --git a/api/api/schemas/endpoints/list_events.py b/api/api/schemas/endpoints/list_events.py index 6f41a3e..f84798e 100644 --- a/api/api/schemas/endpoints/list_events.py +++ b/api/api/schemas/endpoints/list_events.py @@ -4,7 +4,7 @@ from datetime import datetime from api.schemas.base import Base -from api.db.tables.events import EventState, EventStatus +from orm.tables.events import EventState, EventStatus class ListEventUpdate(Base): diff --git a/api/api/schemas/endpoints/process_schema.py b/api/api/schemas/endpoints/process_schema.py index acafea8..b14589e 100644 --- a/api/api/schemas/endpoints/process_schema.py +++ b/api/api/schemas/endpoints/process_schema.py @@ -4,7 +4,7 @@ from datetime import datetime from api.schemas.base import Base -from api.db.tables.process import ProcessStatus +from orm.tables.process import ProcessStatus class ProcessSchemaUpdate(Base): diff --git a/api/api/schemas/events/list_events.py b/api/api/schemas/events/list_events.py index 5538a26..4a3ae6b 100644 --- a/api/api/schemas/events/list_events.py +++ b/api/api/schemas/events/list_events.py @@ -3,7 +3,7 @@ from typing import Dict, Any from datetime import datetime from api.schemas.base import Base -from api.db.tables.events import EventState, EventStatus +from orm.tables.events import EventState, EventStatus class ListEvent(Base): diff --git a/api/api/schemas/process/node_link.py b/api/api/schemas/process/node_link.py index 5ad9e1d..e5e9005 100644 --- a/api/api/schemas/process/node_link.py +++ b/api/api/schemas/process/node_link.py @@ -3,7 +3,7 @@ from typing import Dict, Any from datetime import datetime from api.schemas.base import Base -from api.db.tables.process import NodeStatus +from orm.tables.process import NodeStatus class MyModel(Base): diff --git a/api/api/schemas/process/process_schema.py b/api/api/schemas/process/process_schema.py index ad1f920..89feddf 100644 --- a/api/api/schemas/process/process_schema.py +++ b/api/api/schemas/process/process_schema.py @@ -3,7 +3,7 @@ from typing import Dict, Any from datetime import datetime from api.schemas.base import Base -from api.db.tables.process import ProcessStatus +from orm.tables.process import ProcessStatus class ProcessSchema(Base): diff --git a/api/api/schemas/process/ps_node.py b/api/api/schemas/process/ps_node.py index 742c2d5..28ae0dc 100644 --- a/api/api/schemas/process/ps_node.py +++ b/api/api/schemas/process/ps_node.py @@ -2,7 +2,7 @@ from datetime import datetime from typing import Dict, Any from api.schemas.base import Base -from api.db.tables.process import NodeType, NodeStatus +from orm.tables.process import NodeType, NodeStatus class Ps_Node(Base): diff --git a/api/api/services/auth.py b/api/api/services/auth.py index d4b0161..981026f 100644 --- a/api/api/services/auth.py +++ b/api/api/services/auth.py @@ -4,7 +4,7 @@ from fastapi import HTTPException, Request from sqlalchemy.ext.asyncio import AsyncConnection from api.db.logic.auth import get_user -from api.db.tables.account import AccountStatus +from orm.tables.account import AccountStatus from api.schemas.endpoints.account import AllUser from api.utils.hasher import hasher diff --git a/api/api/services/user_role_validation.py b/api/api/services/user_role_validation.py index 1fc952d..8a5df48 100644 --- a/api/api/services/user_role_validation.py +++ b/api/api/services/user_role_validation.py @@ -3,7 +3,7 @@ from fastapi import ( status, ) from api.db.logic.account import get_user_by_login -from api.db.tables.account import AccountRole +from orm.tables.account import AccountRole async def db_user_role_validation(connection, current_user): diff --git a/api/api/utils/init.py b/api/api/utils/init.py index bc93be1..b35ec44 100644 --- a/api/api/utils/init.py +++ b/api/api/utils/init.py @@ -2,7 +2,7 @@ import asyncio import os from api.db.connection.session import get_connection -from api.db.tables.account import account_keyring_table, account_table, AccountRole, KeyStatus, KeyType +from orm.tables.account import account_keyring_table, account_table, AccountRole, KeyStatus, KeyType from api.utils.hasher import hasher from api.utils.key_id_gen import KeyIdGenerator