This commit is contained in:
debu-2 2026-10-02 22:39:04 +05:30
parent d272ae0bd3
commit ff01efe4bb
17 changed files with 1378 additions and 21 deletions

View file

@ -109,6 +109,12 @@ class UserAccount(Base):
agent_message_dispatches: Mapped[list["AgentMessageDispatchLog"]] = relationship(
back_populates="user", cascade="all, delete-orphan"
)
urmiport_report_groups: Mapped[list["UrmiportReportGroup"]] = relationship(
back_populates="user", cascade="all, delete-orphan"
)
urmiport_reports: Mapped[list["UrmiportReport"]] = relationship(
back_populates="user", cascade="all, delete-orphan"
)
class PasswordCredential(Base):
@ -609,6 +615,49 @@ class AgentMessageDispatchLog(Base):
template: Mapped[AgentMessageTemplate] = relationship()
class UrmiportReportGroup(Base):
__tablename__ = "urmiport_report_groups"
__table_args__ = (UniqueConstraint("user_id", "slug", name="uq_urmiport_group_user_slug"),)
id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
user_id: Mapped[uuid.UUID] = mapped_column(
ForeignKey("user_accounts.id", ondelete="CASCADE"), index=True
)
slug: Mapped[str] = mapped_column(String(50), index=True)
display_name: Mapped[str | None] = mapped_column(String(120), nullable=True)
default_access: Mapped[str] = mapped_column(String(16), default="public", index=True)
password_hash: Mapped[str | None] = mapped_column(String(500), nullable=True)
id_mode: Mapped[str] = mapped_column(String(16), default="auto")
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
user: Mapped[UserAccount] = relationship(back_populates="urmiport_report_groups")
reports: Mapped[list["UrmiportReport"]] = relationship(
back_populates="group", cascade="all, delete-orphan"
)
class UrmiportReport(Base):
__tablename__ = "urmiport_reports"
__table_args__ = (UniqueConstraint("group_id", "report_id", name="uq_urmiport_group_report_id"),)
id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
user_id: Mapped[uuid.UUID] = mapped_column(
ForeignKey("user_accounts.id", ondelete="CASCADE"), index=True
)
group_id: Mapped[uuid.UUID] = mapped_column(
ForeignKey("urmiport_report_groups.id", ondelete="CASCADE"), index=True
)
report_id: Mapped[str] = mapped_column(String(120), index=True)
html_body: Mapped[str] = mapped_column(Text)
access_mode: Mapped[str] = mapped_column(String(16), default="public", index=True)
password_hash: Mapped[str | None] = mapped_column(String(500), nullable=True)
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True), server_default=func.now(), onupdate=func.now()
)
user: Mapped[UserAccount] = relationship(back_populates="urmiport_reports")
group: Mapped[UrmiportReportGroup] = relationship(back_populates="reports")
class PlatformSetting(Base):
"""Runtime overrides for platform credentials (admin-editable)."""