refactor: renamed built_in_modules into modules

This commit is contained in:
2025-10-21 12:35:22 +04:00
parent 83f3b55f49
commit 62aeebf079
13 changed files with 137 additions and 137 deletions

View File

@ -3,10 +3,10 @@ from sqlalchemy.orm import configure_mappers
from modules.fulfillment_base.models import * # noqa: F401
from .base import BaseModel as BaseModel
from .board import Board as Board
from .built_in_module import ( # noqa: F401
BuiltInModule as BuiltInModule,
project_built_in_module as project_built_in_module,
built_in_module_dependencies as built_in_module_dependencies,
from .module import ( # noqa: F401
Module as Module,
project_module as project_module,
module_dependencies as module_dependencies,
)
from .deal import Deal as Deal
from .deal_group import DealGroup as DealGroup

View File

@ -1,79 +0,0 @@
import enum
from typing import TYPE_CHECKING
from sqlalchemy import Table, Column, ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from models.base import BaseModel
if TYPE_CHECKING:
from models import Project
project_built_in_module = Table(
"project_built_in_module",
BaseModel.metadata,
Column("project_id", ForeignKey("projects.id"), primary_key=True),
Column("module_id", ForeignKey("built_in_modules.id"), primary_key=True),
)
built_in_module_dependencies = Table(
"built_in_module_dependencies",
BaseModel.metadata,
Column("module_id", ForeignKey("built_in_modules.id"), primary_key=True),
Column("depends_on_id", ForeignKey("built_in_modules.id"), primary_key=True),
)
class BuiltInModule(BaseModel):
__tablename__ = "built_in_modules"
id: Mapped[int] = mapped_column(primary_key=True)
key: Mapped[str] = mapped_column(unique=True)
label: Mapped[str] = mapped_column()
description: Mapped[str] = mapped_column()
is_deleted: Mapped[bool] = mapped_column(default=False)
depends_on: Mapped[list["BuiltInModule"]] = relationship(
secondary=built_in_module_dependencies,
primaryjoin="BuiltInModule.id == built_in_module_dependencies.c.module_id",
secondaryjoin="BuiltInModule.id == built_in_module_dependencies.c.depends_on_id",
back_populates="depended_on_by",
lazy="immediate",
)
depended_on_by: Mapped[list["BuiltInModule"]] = relationship(
secondary="built_in_module_dependencies",
primaryjoin="BuiltInModule.id == built_in_module_dependencies.c.depends_on_id",
secondaryjoin="BuiltInModule.id == built_in_module_dependencies.c.module_id",
back_populates="depends_on",
lazy="noload",
)
projects: Mapped[list["Project"]] = relationship(
uselist=True,
secondary="project_built_in_module",
back_populates="built_in_modules",
lazy="noload",
)
tabs: Mapped[list["BuiltInModuleTab"]] = relationship(
lazy="immediate", backref="module", cascade="all, delete-orphan"
)
class DeviceType(enum.StrEnum):
MOBILE = "mobile"
DESKTOP = "desktop"
BOTH = "both"
class BuiltInModuleTab(BaseModel):
__tablename__ = "built_in_module_tab"
id: Mapped[int] = mapped_column(primary_key=True)
key: Mapped[str] = mapped_column(unique=True)
label: Mapped[str] = mapped_column()
icon_name: Mapped[str] = mapped_column()
module_id: Mapped[int] = mapped_column(ForeignKey("built_in_modules.id"))
device: Mapped[DeviceType] = mapped_column(default=DeviceType.BOTH)

79
models/module.py Normal file
View File

@ -0,0 +1,79 @@
import enum
from typing import TYPE_CHECKING
from sqlalchemy import Table, Column, ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from models.base import BaseModel
if TYPE_CHECKING:
from models import Project
project_module = Table(
"project_module",
BaseModel.metadata,
Column("project_id", ForeignKey("projects.id"), primary_key=True),
Column("module_id", ForeignKey("modules.id"), primary_key=True),
)
module_dependencies = Table(
"module_dependencies",
BaseModel.metadata,
Column("module_id", ForeignKey("modules.id"), primary_key=True),
Column("depends_on_id", ForeignKey("modules.id"), primary_key=True),
)
class Module(BaseModel):
__tablename__ = "modules"
id: Mapped[int] = mapped_column(primary_key=True)
key: Mapped[str] = mapped_column(unique=True)
label: Mapped[str] = mapped_column()
description: Mapped[str] = mapped_column()
is_deleted: Mapped[bool] = mapped_column(default=False)
depends_on: Mapped[list["Module"]] = relationship(
secondary=module_dependencies,
primaryjoin="Module.id == module_dependencies.c.module_id",
secondaryjoin="Module.id == module_dependencies.c.depends_on_id",
back_populates="depended_on_by",
lazy="immediate",
)
depended_on_by: Mapped[list["Module"]] = relationship(
secondary="module_dependencies",
primaryjoin="Module.id == module_dependencies.c.depends_on_id",
secondaryjoin="Module.id == module_dependencies.c.module_id",
back_populates="depends_on",
lazy="noload",
)
projects: Mapped[list["Project"]] = relationship(
uselist=True,
secondary="project_module",
back_populates="modules",
lazy="noload",
)
tabs: Mapped[list["ModuleTab"]] = relationship(
lazy="immediate", backref="module", cascade="all, delete-orphan"
)
class DeviceType(enum.StrEnum):
MOBILE = "mobile"
DESKTOP = "desktop"
BOTH = "both"
class ModuleTab(BaseModel):
__tablename__ = "module_tab"
id: Mapped[int] = mapped_column(primary_key=True)
key: Mapped[str] = mapped_column(unique=True)
label: Mapped[str] = mapped_column()
icon_name: Mapped[str] = mapped_column()
module_id: Mapped[int] = mapped_column(ForeignKey("modules.id"))
device: Mapped[DeviceType] = mapped_column(default=DeviceType.BOTH)

View File

@ -6,7 +6,7 @@ from models.base import BaseModel
from models.mixins import SoftDeleteMixin, CreatedAtMixin, IdMixin
if TYPE_CHECKING:
from models import Board, BuiltInModule, DealTag
from models import Board, Module, DealTag
class Project(BaseModel, IdMixin, SoftDeleteMixin, CreatedAtMixin):
@ -19,11 +19,11 @@ class Project(BaseModel, IdMixin, SoftDeleteMixin, CreatedAtMixin):
lazy="noload",
)
built_in_modules: Mapped[list["BuiltInModule"]] = relationship(
secondary="project_built_in_module",
modules: Mapped[list["Module"]] = relationship(
secondary="project_module",
back_populates="projects",
lazy="selectin",
order_by="asc(BuiltInModule.id)",
order_by="asc(Module.id)",
)
tags: Mapped[list["DealTag"]] = relationship(