feat: modules dependencies
This commit is contained in:
@@ -12,8 +12,16 @@ if TYPE_CHECKING:
|
||||
project_module = Table(
|
||||
'project_module',
|
||||
BaseModel.metadata,
|
||||
Column('project_id', ForeignKey('projects.id')),
|
||||
Column('module_id', ForeignKey('modules.id')),
|
||||
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),
|
||||
)
|
||||
|
||||
|
||||
@@ -26,6 +34,24 @@ class Module(BaseModel):
|
||||
icon_name: Mapped[Optional[str]] = mapped_column(unique=True, nullable=False)
|
||||
is_deleted: Mapped[bool] = mapped_column(default=False)
|
||||
|
||||
depends_on: Mapped[list['Module']] = relationship(
|
||||
'Module',
|
||||
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(
|
||||
'Module',
|
||||
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(
|
||||
'Project',
|
||||
uselist=True,
|
||||
|
||||
Reference in New Issue
Block a user