1.5 KiB
1.5 KiB
📊 Data Model
Plexus uses DuckDB for fast, analytical, and serverless-friendly data storage.
🗄 Tables
users
Stores user identity and profile information.
wallet_address(VARCHAR, PK): Unique Solana wallet address.username(VARCHAR, UNIQUE): Display name.bio(VARCHAR): User biography.banner_color(VARCHAR): Hex code for profile banner.last_seen(TIMESTAMP): Last activity time.
messages
Stores chat history.
id(INTEGER, PK): Unique message ID (fromseq_msg_id).channel_id(VARCHAR): ID of the channel.wallet_address(VARCHAR, FK): Sender's wallet.content(VARCHAR): Message text.timestamp(TIMESTAMP): Time sent.tx_id(VARCHAR): Simulated transaction ID.
reactions
Stores message reactions.
message_id(INTEGER, FK): ID of the message.wallet_address(VARCHAR, FK): User who reacted.emoji(VARCHAR): The emoji character.- Composite PK:
(message_id, wallet_address, emoji).
posts
Stores social wall posts.
id(INTEGER, PK): Unique post ID (fromseq_post_id).wallet_address(VARCHAR, FK): Owner of the wall.content(VARCHAR): Post text.timestamp(TIMESTAMP): Time posted.
🔢 Sequences
seq_msg_id: Increments for each new message.seq_post_id: Increments for each new wall post.
🔄 Migrations
The server/db.js file handles automatic schema initialization and migrations (e.g., adding tx_id or bio columns if they are missing from an existing database).