1- """SQLAlchemy models for External Results entities ."""
1+ """SQLAlchemy model for External Run Sessions (BGSTM#300) ."""
22
33import enum
44import uuid
55from datetime import datetime , timezone
66
7- from sqlalchemy import Column , DateTime , Enum , ForeignKey , Integer , String , Text , UniqueConstraint
7+ from sqlalchemy import Column , DateTime , Enum , ForeignKey , String
88
99from .base import Base
1010from .requirement import GUID , JSON
@@ -24,15 +24,6 @@ class RunStatus(str, enum.Enum):
2424 aborted = "aborted"
2525
2626
27- class CaseOutcome (str , enum .Enum ):
28- """Outcome for an individual external test-case result."""
29-
30- passed = "passed"
31- failed = "failed"
32- skipped = "skipped"
33- flaky = "flaky"
34-
35-
3627def _utcnow ():
3728 return datetime .now (tz = timezone .utc ).replace (tzinfo = None )
3829
@@ -65,27 +56,3 @@ class ExternalRunSession(Base):
6556
6657 def __repr__ (self ) -> str :
6758 return f"<ExternalRunSession(id={ self .id } , status={ self .status } , runner={ self .runner !r} )>"
68-
69-
70- class ExternalCaseResult (Base ):
71- """Represents one test-case execution result reported by an external runner."""
72-
73- __tablename__ = "external_case_results"
74- __table_args__ = (
75- UniqueConstraint ("project_id" , "external_id" , name = "uq_external_case_results_project_external_id" ),
76- )
77-
78- id = Column (GUID (), primary_key = True , default = uuid .uuid4 )
79- session_id = Column (GUID (), ForeignKey ("external_run_sessions.id" ), nullable = False , index = True )
80- project_id = Column (GUID (), nullable = False , index = True )
81- test_case_id = Column (GUID (), ForeignKey ("test_cases.id" ), nullable = True )
82- external_id = Column (String (500 ), nullable = True )
83- title = Column (String (500 ), nullable = False )
84- outcome = Column (Enum (CaseOutcome , values_callable = _enum_values ), nullable = False )
85- duration_ms = Column (Integer , nullable = False )
86- error_message = Column (Text , nullable = True )
87- created_at = Column (DateTime , default = _utcnow , nullable = False )
88- updated_at = Column (DateTime , default = _utcnow , onupdate = _utcnow , nullable = False )
89-
90- def __repr__ (self ) -> str :
91- return f"<ExternalCaseResult(id={ self .id } , session_id={ self .session_id } , outcome={ self .outcome } )>"
0 commit comments