governance_template.py 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. """SQLAlchemy mappings for governance domain templates."""
  2. from __future__ import annotations
  3. from sqlalchemy.dialects.postgresql import JSONB, UUID
  4. from app import db
  5. from app.core.common.identifiers import new_governance_uid
  6. class GovernanceDomainTemplate(db.Model):
  7. __tablename__ = "governance_domain_templates"
  8. __table_args__ = {"schema": "public"}
  9. uid = db.Column(UUID(as_uuid=False), primary_key=True, default=new_governance_uid)
  10. template_code = db.Column(db.String(64), unique=True, nullable=False)
  11. name = db.Column(db.String(200), nullable=False)
  12. lifecycle_status = db.Column(db.String(20), nullable=False)
  13. current_version = db.Column(db.Integer, nullable=False)
  14. content_hash = db.Column(db.String(64), nullable=False)
  15. definition = db.Column(JSONB, nullable=False)
  16. created_at = db.Column(db.DateTime(timezone=True), nullable=False)
  17. updated_at = db.Column(db.DateTime(timezone=True), nullable=False)
  18. class GovernanceDomainTemplateVersion(db.Model):
  19. __tablename__ = "governance_domain_template_versions"
  20. __table_args__ = (
  21. db.UniqueConstraint("template_uid", "version"),
  22. {"schema": "public"},
  23. )
  24. uid = db.Column(UUID(as_uuid=False), primary_key=True, default=new_governance_uid)
  25. template_uid = db.Column(
  26. UUID(as_uuid=False),
  27. db.ForeignKey("public.governance_domain_templates.uid"),
  28. nullable=False,
  29. )
  30. version = db.Column(db.Integer, nullable=False)
  31. content_hash = db.Column(db.String(64), nullable=False)
  32. definition = db.Column(JSONB, nullable=False)
  33. actor_uid = db.Column(UUID(as_uuid=False), nullable=False)
  34. created_at = db.Column(db.DateTime(timezone=True), nullable=False)
  35. class GovernanceObjectType(db.Model):
  36. __tablename__ = "governance_object_types"
  37. __table_args__ = (
  38. db.UniqueConstraint("template_uid", "type_code"),
  39. {"schema": "public"},
  40. )
  41. uid = db.Column(UUID(as_uuid=False), primary_key=True, default=new_governance_uid)
  42. template_uid = db.Column(
  43. UUID(as_uuid=False),
  44. db.ForeignKey("public.governance_domain_templates.uid"),
  45. nullable=False,
  46. )
  47. type_code = db.Column(db.String(64), nullable=False)
  48. name = db.Column(db.String(200), nullable=False)
  49. lifecycle_status = db.Column(db.String(20), nullable=False)
  50. current_version = db.Column(db.Integer, nullable=False)
  51. stable_uid_prefix = db.Column(db.String(16), nullable=False)
  52. source_identity_fields = db.Column(JSONB, nullable=False)
  53. definition = db.Column(JSONB, nullable=False)
  54. created_at = db.Column(db.DateTime(timezone=True), nullable=False)
  55. updated_at = db.Column(db.DateTime(timezone=True), nullable=False)
  56. class GovernanceDomainTemplateImport(db.Model):
  57. __tablename__ = "governance_domain_template_imports"
  58. __table_args__ = {"schema": "public"}
  59. uid = db.Column(UUID(as_uuid=False), primary_key=True, default=new_governance_uid)
  60. template_uid = db.Column(
  61. UUID(as_uuid=False),
  62. db.ForeignKey("public.governance_domain_templates.uid"),
  63. nullable=False,
  64. )
  65. operation = db.Column(db.String(20), nullable=False)
  66. status = db.Column(db.String(20), nullable=False)
  67. version = db.Column(db.Integer, nullable=False)
  68. target_version = db.Column(db.Integer)
  69. before_state = db.Column(JSONB)
  70. after_state = db.Column(JSONB, nullable=False)
  71. diff = db.Column(JSONB, nullable=False)
  72. actor_uid = db.Column(UUID(as_uuid=False), nullable=False)
  73. created_at = db.Column(db.DateTime(timezone=True), nullable=False)