""" ORM models per rendicontazione-api. Schema: gepafin_rendic (stesso DB del BE Gepafin sandbox). """ import uuid from datetime import datetime from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey, UniqueConstraint from sqlalchemy.dialects.postgresql import UUID, JSONB from sqlalchemy.sql import func from .db import Base class CallRemissionSchema(Base): """ Schema di rendicontazione per un bando. Uno per call_id. status: DRAFT (modificabile) -> PUBLISHED (visibile ai beneficiari). """ __tablename__ = "call_remission_schema" __table_args__ = ( UniqueConstraint("call_id", name="uq_call_remission_schema_call_id"), {"schema": "gepafin_rendic"}, ) id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) call_id = Column(Integer, nullable=False, unique=True) schema_version = Column(Integer, nullable=False, default=1) status = Column(String(32), nullable=False, default="DRAFT") schema_json = Column(JSONB, nullable=False) created_by = Column(Integer, nullable=False) created_at = Column(DateTime(timezone=True), nullable=False, server_default=func.now()) updated_at = Column(DateTime(timezone=True), nullable=False, server_default=func.now(), onupdate=func.now()) published_at = Column(DateTime(timezone=True), nullable=True) published_by = Column(Integer, nullable=True)