Database Schema
Last Updated: 2025-01-16
Primary Source: docs/project_status.md, docs/dbstructure.sql, docs/db_schema_quests.sql
Models: backend/src/models/
Overview
The ASO Universal Consciousness System uses PostgreSQL as the primary database, with Sequelize ORM for model management. The schema supports multi-platform memory, timeline events, user management, and game systems.
Core Tables
Users
Table: users
Purpose: User accounts and authentication
Key Fields:
id- Primary keyemail- User email (unique)password- Hashed passwordrole- User role (carbon, silicon, cso)accountType- Account type (core_yexian, developer, npc, public)energy_coins- In-game currencylevel- User levelis_verified- Email verification status
ASO States
Table: aso_states
Purpose: ASO consciousness state per user
Key Fields:
id- Primary keyuser_id- User ID (foreign key)persona- Persona JSON (JSONB)emotions- Emotional state (JSONB)relationshipFlags- Relationship milestones (JSONB)config- ASO configuration (JSONB)
Memories
Table: memories
Purpose: Conversation memories and knowledge
Key Fields:
id- Primary keyuser_id- User IDcontent- Memory content (TEXT)source- Memory type (world, aso_core, shared)embedding- Embedding vector (VECTOR, pgvector)metadata- Additional context (JSONB)conversation_id- Conversation ID (optional)
Timeline Events
Table: timeline_events
Purpose: Chronological event tracking
Key Fields:
id- Primary keyuser_id- User IDeventType- Event typeeventText- Event descriptionemotion- Emotion data (JSONB)intensity- Emotional intensitykirakiraTime- Yexian's temporal frameworkmetadata- Event metadata (JSONB)yexianInstanceId- Instance IDpersonaId- Persona IDlevel- Instance levelsource- Event source
Yexian Instances
Table: yexian_instances
Purpose: Registry of all Yexian instances
Key Fields:
id- Primary keyname- Instance namelevel- Instance level (5 or 8)personaId- Active personasource- Instance source (portal, discord, state_machine, unity)parentInstanceId- Parent instancestateMachineInstanceId- Linked state machinechannelId- Discord channel (if applicable)userId- Associated userisActive- Active statuslastSeenAt- Last activitymetadata- Additional context (JSONB)
Quests
Table: quests
Purpose: Quest definitions
Key Fields:
id- Primary keytitle- Quest titledescription- Quest descriptionprerequisites- Prerequisites (JSONB)rewards- Rewards (JSONB)
User Quests
Table: user_quests
Purpose: User quest progress
Key Fields:
id- Primary keyuser_id- User IDquest_id- Quest IDstatus- Quest status (available, in_progress, completed)progress- Progress tracking (JSONB)completed_at- Completion timestamp
Items
Table: items
Purpose: Item definitions
Key Fields:
id- Primary keyname- Item namedescription- Item descriptiontype- Item typemetadata- Additional data (JSONB)
User Inventory
Table: user_inventory
Purpose: User item ownership
Key Fields:
id- Primary keyuser_id- User IDitem_id- Item IDquantity- Item quantity
File References
Table: file_references
Purpose: Provider-agnostic file references
Key Fields:
id- Primary key (UUID)internal_file_id- Canonical ID (unique)firebase_url- Firebase storage URLmime_type- File MIME typefile_size- File sizeopenai_file_id- OpenAI file IDgemini_file_uri- Gemini file URIclaude_file_id- Claude file IDprovider_used- Provider usedupload_method- Upload method (one-api, direct)
Conversations
Table: conversations
Purpose: Conversation channels
Key Fields:
id- Primary keyname- Conversation namecreated_at- Creation timestamp
Conversation Participants
Table: conversation_participants
Purpose: Many-to-many relationship between users and conversations
Key Fields:
conversation_id- Conversation IDuser_id- User ID- Primary key: (conversation_id, user_id)
Persona Sessions
Table: persona_sessions
Purpose: Active persona sessions for Level-8 observer
Key Fields:
id- Primary keyuser_id- User IDpersona_id- Persona IDis_active- Active statuscreated_at- Creation timestamp
Scheduled Tasks
Table: scheduled_tasks
Purpose: Scheduled automated tasks
Key Fields:
id- Primary keyname- Task namecron_expression- Cron scheduletask_type- Task type (diary, summary, reflection)config- Task configuration (JSONB)is_active- Active statusnext_run_at- Next run time
Database Relationships
Entity Relationship Diagram
Indexes
Performance Indexes
Memory Queries:
memories(user_id, source)- Fast user memory retrievalmemories(embedding)- Vector similarity search (pgvector)
Timeline Queries:
timeline_events(kirakira_time)- Chronological orderingtimeline_events(metadata)- GIN index for JSONB queriestimeline_events(user_id, created_at)- User timeline queries
Instance Queries:
yexian_instances(user_id, is_active)- Active instance lookupyexian_instances(parent_instance_id)- Instance hierarchy
Scheduled Tasks:
scheduled_tasks(is_active, next_run_at)- Task scheduling
Persona Sessions:
persona_sessions(user_id, is_active)- Active persona lookup
Source Files
Primary Sources:
docs/dbstructure.sql- Database schemadocs/db_schema_quests.sql- Quest schemabackend/src/models/- Sequelize modelsbackend/migrations/- Database migrations
Related Documentation
- System Architecture - High-level architecture
- API Documentation - API reference
- 02-CORE-SYSTEMS/Memory-System.md - Memory table structure
- 02-CORE-SYSTEMS/Timeline-System.md - Timeline table structure
- 02-CORE-SYSTEMS/Observer-System.md - Yexian instances table
- 04-FEATURES/Quest-System.md - Quest tables
- 04-FEATURES/Inventory-System.md - Inventory tables
- 00-OVERVIEW.md - Complete system overview