Coverage for src/common/models/openapi_spec.py: 100%

15 statements  

« prev     ^ index     » next       coverage.py v7.6.10, created at 2025-03-24 21:46 -0400

1"""Module for the class that represents the OpenAPI spec and its CueCode config""" 

2 

3import uuid 

4from typing import List 

5 

6from sqlalchemy import Column, ForeignKey, String, Text 

7from sqlalchemy.dialects.postgresql import UUID 

8from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship 

9 

10from common.models.openapi_path import OpenAPIPath 

11 

12from .base import Base 

13 

14 

15class OpenAPISpec(Base): # pylint: disable=too-few-public-methods 

16 """An OpenAPI spec as stored in the CueCode database""" 

17 

18 __tablename__ = "openapi_spec" 

19 

20 openapi_spec_id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) 

21 cuecode_config_id = Column( 

22 UUID(as_uuid=True), 

23 ForeignKey("cuecode_config.cuecode_config_id"), 

24 nullable=False, 

25 ) 

26 spec_text = Column(Text) 

27 file_name = Column(String) 

28 base_url = Column(String) 

29 

30 paths: Mapped[List[OpenAPIPath]] = relationship(back_populates="spec")