31 lines
976 B
Python
31 lines
976 B
Python
from __future__ import annotations
|
|
|
|
import uuid
|
|
from datetime import datetime
|
|
|
|
from sqlalchemy import DateTime, ForeignKey, Integer, JSON
|
|
from sqlalchemy.dialects.postgresql import JSONB, UUID
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
from cpv3.db.base import Base, utcnow
|
|
|
|
STATE_JSON_TYPE = JSON().with_variant(JSONB(), "postgresql")
|
|
|
|
|
|
class ProjectWorkspace(Base):
|
|
__tablename__ = "project_workspaces"
|
|
|
|
project_id: Mapped[uuid.UUID] = mapped_column(
|
|
UUID(as_uuid=True),
|
|
ForeignKey("projects.id", ondelete="CASCADE"),
|
|
primary_key=True,
|
|
)
|
|
revision: Mapped[int] = mapped_column(Integer, default=0, nullable=False)
|
|
state: Mapped[dict] = mapped_column(STATE_JSON_TYPE, default=dict, nullable=False)
|
|
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utcnow)
|
|
updated_at: Mapped[datetime] = mapped_column(
|
|
DateTime(timezone=True),
|
|
default=utcnow,
|
|
onupdate=utcnow,
|
|
)
|