fix: ProjectMember unique constraint, task flush before action, clean models
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
This commit is contained in:
parent
aedbe583c8
commit
d2402dc213
@ -3,7 +3,7 @@
|
|||||||
import uuid
|
import uuid
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey, Integer, String, Text
|
from sqlalchemy import ForeignKey, Integer, String, Text, UniqueConstraint
|
||||||
from sqlalchemy.dialects.postgresql import ARRAY, UUID
|
from sqlalchemy.dialects.postgresql import ARRAY, UUID
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||||
|
|
||||||
@ -32,15 +32,20 @@ class Project(Base):
|
|||||||
|
|
||||||
|
|
||||||
class ProjectMember(Base):
|
class ProjectMember(Base):
|
||||||
|
"""Many-to-many: project ↔ member with role."""
|
||||||
__tablename__ = "project_members"
|
__tablename__ = "project_members"
|
||||||
|
|
||||||
project_id: Mapped[uuid.UUID] = mapped_column(
|
project_id: Mapped[uuid.UUID] = mapped_column(
|
||||||
UUID(as_uuid=True), ForeignKey("projects.id", ondelete="CASCADE"), primary_key=True
|
UUID(as_uuid=True), ForeignKey("projects.id", ondelete="CASCADE"), nullable=False
|
||||||
)
|
)
|
||||||
member_id: Mapped[uuid.UUID] = mapped_column(
|
member_id: Mapped[uuid.UUID] = mapped_column(
|
||||||
UUID(as_uuid=True), ForeignKey("members.id", ondelete="CASCADE"), primary_key=True
|
UUID(as_uuid=True), ForeignKey("members.id", ondelete="CASCADE"), nullable=False
|
||||||
)
|
)
|
||||||
role: Mapped[str] = mapped_column(String(20), default=MemberRole.MEMBER) # owner | member
|
role: Mapped[str] = mapped_column(String(20), default=MemberRole.MEMBER) # owner | member
|
||||||
|
|
||||||
project: Mapped["Project"] = relationship(back_populates="members")
|
project: Mapped["Project"] = relationship(back_populates="members")
|
||||||
member: Mapped["Member"] = relationship()
|
member: Mapped["Member"] = relationship()
|
||||||
|
|
||||||
|
__table_args__ = (
|
||||||
|
UniqueConstraint("project_id", "member_id", name="uq_project_member"),
|
||||||
|
)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user