connectors.py 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. """Read models for the enterprise connector control plane."""
  2. from sqlalchemy.dialects.postgresql import ARRAY, JSONB, UUID
  3. from app import db
  4. from app.core.common.identifiers import new_governance_uid
  5. class ConnectorManifestRecord(db.Model):
  6. __tablename__ = "connector_manifests"
  7. __table_args__ = (
  8. db.UniqueConstraint("connector_id", "connector_version"),
  9. {"schema": "public"},
  10. )
  11. uid = db.Column(UUID(as_uuid=False), primary_key=True, default=new_governance_uid)
  12. connector_id = db.Column(db.String(64), nullable=False)
  13. connector_version = db.Column(db.String(40), nullable=False)
  14. sdk_version = db.Column(db.String(20), nullable=False)
  15. display_name = db.Column(db.String(200), nullable=False)
  16. capabilities = db.Column(JSONB, nullable=False)
  17. config_schema = db.Column(JSONB, nullable=False)
  18. status = db.Column(db.String(20), nullable=False)
  19. class ConnectorPrincipal(db.Model):
  20. __tablename__ = "connector_principals"
  21. __table_args__ = {"schema": "public"}
  22. uid = db.Column(UUID(as_uuid=False), primary_key=True, default=new_governance_uid)
  23. connector_id = db.Column(db.String(64), nullable=False)
  24. connector_version = db.Column(db.String(40), nullable=False)
  25. source_uid = db.Column(UUID(as_uuid=False), nullable=False)
  26. business_domain_uid = db.Column(UUID(as_uuid=False), nullable=False)
  27. environment = db.Column(db.String(20), nullable=False)
  28. allowed_operations = db.Column(ARRAY(db.Text), nullable=False)
  29. allowed_scopes = db.Column(JSONB, nullable=False)
  30. status = db.Column(db.String(20), nullable=False)
  31. source_binding_uid = db.Column(UUID(as_uuid=False))
  32. source_binding_version = db.Column(db.Integer)
  33. class ConnectorSourceBinding(db.Model):
  34. __tablename__ = "connector_source_bindings"
  35. __table_args__ = {"schema": "public"}
  36. uid = db.Column(UUID(as_uuid=False), primary_key=True, default=new_governance_uid)
  37. binding_version = db.Column(db.Integer, primary_key=True)
  38. connector_id = db.Column(db.String(64), nullable=False)
  39. connector_version = db.Column(db.String(40), nullable=False)
  40. source_uid = db.Column(UUID(as_uuid=False), nullable=False)
  41. business_domain_uid = db.Column(UUID(as_uuid=False), nullable=False)
  42. environment = db.Column(db.String(20), nullable=False)
  43. approved_base_url = db.Column(db.String(2048))
  44. allowed_host = db.Column(db.String(253))
  45. credential_ref = db.Column(db.String(300))
  46. approved_config = db.Column(JSONB, nullable=False)
  47. status = db.Column(db.String(20), nullable=False)
  48. approved_by = db.Column(UUID(as_uuid=False), nullable=False)
  49. class ConnectorRun(db.Model):
  50. __tablename__ = "connector_runs"
  51. __table_args__ = {"schema": "public"}
  52. uid = db.Column(UUID(as_uuid=False), primary_key=True, default=new_governance_uid)
  53. idempotency_key = db.Column(db.String(64), nullable=False, unique=True)
  54. connector_id = db.Column(db.String(64), nullable=False)
  55. connector_version = db.Column(db.String(40), nullable=False)
  56. source_uid = db.Column(UUID(as_uuid=False), nullable=False)
  57. principal_uid = db.Column(UUID(as_uuid=False))
  58. business_domain_uid = db.Column(UUID(as_uuid=False))
  59. environment = db.Column(db.String(20))
  60. process_key = db.Column(db.String(300))
  61. operation = db.Column(db.String(30), nullable=False)
  62. status = db.Column(db.String(20), nullable=False)
  63. attempt_count = db.Column(db.Integer, nullable=False)
  64. checkpoint = db.Column(JSONB, nullable=False)
  65. cursor = db.Column(JSONB, nullable=False)
  66. safe_config = db.Column(JSONB, nullable=False)
  67. scope = db.Column(JSONB, nullable=False)
  68. request_hash = db.Column(db.String(64), nullable=False)
  69. client_hint_hash = db.Column(db.String(64))
  70. source_binding_uid = db.Column(UUID(as_uuid=False))
  71. source_binding_version = db.Column(db.Integer)
  72. attempt_lease_token = db.Column(UUID(as_uuid=False))
  73. cancel_requested = db.Column(db.Boolean, nullable=False, default=False)