From 61da27c7d5f59751c3f6fd018854e47e710aba07 Mon Sep 17 00:00:00 2001 From: Mikkel Georgsen Date: Fri, 16 Jan 2026 15:07:47 +0000 Subject: [PATCH] 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 --- src/moai/core/models.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/moai/core/models.py diff --git a/src/moai/core/models.py b/src/moai/core/models.py new file mode 100644 index 0000000..e4e6c4c --- /dev/null +++ b/src/moai/core/models.py @@ -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"