feat(01-02): create base model and enums

- Add Base class using SQLAlchemy 2.0 DeclarativeBase
- Add DiscussionType enum (OPEN, DISCUSS)
- Add DiscussionStatus enum (ACTIVE, COMPLETED)
- Add RoundType enum (PARALLEL, SEQUENTIAL)
- Use str-based enums for database portability
This commit is contained in:
Mikkel Georgsen 2026-01-16 15:07:47 +00:00
parent 3e90f9cf21
commit 61da27c7d5

40
src/moai/core/models.py Normal file
View file

@ -0,0 +1,40 @@
"""SQLAlchemy models for MoAI multi-AI discussion platform.
Data model hierarchy:
Project (has many) Discussion (has many) Round (has many) Message
Discussion (has one) Consensus
All IDs use UUID stored as String(36) for SQLite compatibility.
Enums are stored as strings for database portability.
"""
from enum import Enum
from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
"""Base class for all SQLAlchemy models."""
pass
class DiscussionType(str, Enum):
"""Type of discussion mode."""
OPEN = "open"
DISCUSS = "discuss"
class DiscussionStatus(str, Enum):
"""Status of a discussion."""
ACTIVE = "active"
COMPLETED = "completed"
class RoundType(str, Enum):
"""Type of round in a discussion."""
PARALLEL = "parallel"
SEQUENTIAL = "sequential"