Axiovora-X / backend /db /models.py
ZAIDX11's picture
Add files using upload-large-folder tool
63d3857 verified
from sqlalchemy import Column, Integer, String, Text, ForeignKey, Index, UniqueConstraint
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.sql import func
from sqlalchemy import DateTime
Base = declarative_base()
class Universe(Base): # type: ignore[valid-type]
"""Universe model: represents a mathematical universe."""
__tablename__ = 'universes'
id = Column(Integer, primary_key=True, index=True)
name = Column(String, unique=True, index=True)
description = Column(Text)
universe_type = Column(String, default="generic", index=True) # e.g., group theory, geometry
version = Column(Integer, default=1)
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
__table_args__ = (
UniqueConstraint('name', 'version', name='uix_universe_name_version'),
Index('ix_universe_type_version', 'universe_type', 'version'),
)
class Axiom(Base): # type: ignore[valid-type]
"""Axiom model: represents an axiom in a universe."""
__tablename__ = 'axioms'
id = Column(Integer, primary_key=True, index=True)
universe_id = Column(Integer, ForeignKey('universes.id'), index=True)
statement = Column(Text, index=True)
is_active = Column(Integer, default=1, index=True) # for axiom evolution
parent_axiom_id = Column(Integer, ForeignKey('axioms.id'), nullable=True, index=True) # lineage tracking
version = Column(Integer, default=1)
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
__table_args__ = (
Index('ix_axiom_universe_id_is_active', 'universe_id', 'is_active'),
Index('ix_axiom_parent_axiom_id', 'parent_axiom_id'),
UniqueConstraint('universe_id', 'statement', 'version', name='uix_axiom_universe_statement_version'),
)
class Theorem(Base): # type: ignore[valid-type]
"""Theorem model: represents a derived theorem."""
__tablename__ = 'theorems'
id = Column(Integer, primary_key=True, index=True)
universe_id = Column(Integer, ForeignKey('universes.id'), index=True)
statement = Column(Text, index=True)
proof = Column(Text)
created_at = Column(DateTime(timezone=True), server_default=func.now())
__table_args__ = (
Index('ix_theorem_universe_id_statement', 'universe_id', 'statement'),
)
class Proof(Base): # type: ignore[valid-type]
"""Proof model: represents a proof for an axiom."""
__tablename__ = 'proofs'
id = Column(Integer, primary_key=True, index=True)
axiom_id = Column(Integer, ForeignKey('axioms.id'), index=True)
content = Column(Text)
created_at = Column(DateTime(timezone=True), server_default=func.now())
__table_args__ = (
Index('ix_proof_axiom_id', 'axiom_id'),
)
class AnalysisResult(Base): # type: ignore[valid-type]
"""AnalysisResult model: stores analysis results for universes."""
__tablename__ = 'analysis_results'
id = Column(Integer, primary_key=True, index=True)
universe_id = Column(Integer, ForeignKey('universes.id'), index=True)
result = Column(Text)
created_at = Column(DateTime(timezone=True), server_default=func.now())
__table_args__ = (
Index('ix_analysisresult_universe_id', 'universe_id'),
)