fix: ProjectMember unique constraint, task flush before action, clean models
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s

This commit is contained in:
markov 2026-02-25 11:10:48 +01:00
parent aedbe583c8
commit d2402dc213

View File

@ -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"),
)