21 lines
1,003 B
Python
21 lines
1,003 B
Python
from sqlalchemy import Boolean, ForeignKey, Integer, String
|
|
from sqlalchemy.dialects.postgresql import JSONB
|
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
|
|
|
from .base import Base, TimestampMixin
|
|
|
|
|
|
class SnapshotPolicy(Base, TimestampMixin):
|
|
__tablename__ = "snapshot_policies"
|
|
|
|
id: Mapped[int] = mapped_column(Integer(), autoincrement=True, primary_key=True)
|
|
object_id: Mapped[int] = mapped_column(
|
|
Integer(), ForeignKey("objects.id", ondelete="CASCADE"), nullable=False, index=True
|
|
)
|
|
category: Mapped[str] = mapped_column(String(50), nullable=False)
|
|
action_type: Mapped[str] = mapped_column(String(100), nullable=False)
|
|
params: Mapped[dict] = mapped_column(JSONB(), nullable=False, server_default="{}")
|
|
label: Mapped[str] = mapped_column(String(255), nullable=False)
|
|
is_active: Mapped[bool] = mapped_column(Boolean(), nullable=False, server_default="true")
|
|
|
|
object: Mapped["Object"] = relationship("Object", backref="snapshot_policies")
|