import datetime from sqlalchemy import ( BIGINT, BOOLEAN, JSON, SMALLINT, TEXT, TIMESTAMP, Column, Index, String, ) from sqlalchemy.ext.declarative import declarative_base # from sqlalchemy.orm import DeclarativeBase # class Base(DeclarativeBase): # pass Base = declarative_base() class OpenAPITestCaseGeneration(Base): # type: ignore __tablename__ = "openapi_test_case_generations" id = Column(String(36), primary_key=True, nullable=False) # uuid run_id = Column(BIGINT, nullable=True) # github action run id trace_id = Column(String(36), nullable=False) # uuid service_name = Column(String(255), nullable=False) protocol = Column(String(63), nullable=False) spec_hash = Column(String(32), nullable=False) spec_commit_id = Column(String(40), nullable=False) # commit id spec_pr_url = Column(String(255), nullable=True) generator_commit_id = Column(String(40), nullable=True) # commit id generator_pr_url = Column(String(255), nullable=True) trigger_type = Column(String(63), nullable=False) enhanced_operations = Column(JSON, nullable=True) created_at = Column( TIMESTAMP, nullable=False, default=datetime.datetime.now(datetime.UTC) ) # __table_args__ = ( # Index('idx_generations_service_created', 'service_name', 'created_at'), # Index('idx_generations_trace', 'trace_id'), # Index('idx_generations_spec', 'spec_commit_id'), # ) class OpenAPITestCaseCollection(Base): # type: ignore __tablename__ = "openapi_test_case_collections" id = Column(String(36), primary_key=True, nullable=False) generation_id = Column(String(36), primary_key=True, nullable=False) trace_id = Column(String(36), nullable=False) operation_id = Column(String(255), nullable=False) method = Column(String(15), nullable=True) path = Column(String(255), nullable=True) environment = Column(JSON, nullable=True) request = Column(JSON, nullable=True) type = Column(String(63), nullable=False) category = Column(String(63), nullable=True) affected_element = Column(String(255), nullable=True) element_type = Column(String(63), nullable=True) generation_strategy = Column(JSON, nullable=True) expected_status = Column(SMALLINT, nullable=True) description = Column(TEXT, nullable=True) # ignored = Column(BOOLEAN, nullable=True) # __table_args__ = ( # Index('idx_collections_generation', 'generation_id'), # Index('idx_collections_operation', 'operation_id'), # Index('idx_collections_category', 'generation_id', 'category'), # Index('idx_collections_trace', 'trace_id'), # ) class OpenAPITestCaseIgonreOperation(Base): # type: ignore __tablename__ = "openapi_test_case_ignore_operations" id = Column(BIGINT, primary_key=True, nullable=False, autoincrement=True) case_id = Column(String(36), nullable=False) generation_id = Column(String(36), nullable=False) ignored = Column(BOOLEAN, nullable=False, default=False) comment = Column(TEXT, nullable=True) created_at = Column( TIMESTAMP, nullable=False, default=datetime.datetime.now(datetime.UTC) ) created_by = Column(String(255), nullable=False) # __table_args__ = ( # Index('idx_ignore_case', 'case_id', 'generation_id'), # Index('idx_ignore_created', 'created_at'), # )