## Appendix I – Database Model Database Schema Overview The core database schema for GeneralBots is defined in `src/shared/models.rs`. It uses **Diesel** with PostgreSQL and includes the following primary tables: | Table | Description | |-------|-------------| | `users` | Stores user accounts, authentication tokens, and profile data. | | `sessions` | Tracks active `BotSession` instances, their start/end timestamps, and associated user. | | `knowledge_bases` | Metadata for each `.gbkb` collection (name, vector store configuration, creation date). | | `messages` | Individual chat messages (role = user/assistant, content, timestamp, linked to a session). | | `tools` | Registered custom tools per session (name, definition JSON, activation status). | | `files` | References to files managed by the `.gbdrive` package (path, size, MIME type, storage location). | ### Relationships - **User ↔ Sessions** – One‑to‑many: a user can have many sessions. - **Session ↔ Messages** – One‑to‑many: each session contains a sequence of messages. - **Session ↔ KnowledgeBase** – Many‑to‑one: a session uses a single knowledge base at a time. - **Session ↔ Tools** – One‑to‑many: tools are scoped to the session that registers them. - **File ↔ KnowledgeBase** – Optional link for documents stored in a knowledge base. ### Key Tables **User Table** - id: Integer primary key - username: String - email: String - password_hash: String - created_at: Timestamp **Session Table** - id: Integer primary key - user_id: Foreign key to User - started_at: Timestamp - last_active: Timestamp - knowledge_base_id: Integer **Message Table** - id: Integer primary key - session_id: Foreign key to Session - role: String ("user" or "assistant") - content: Text - timestamp: Timestamp The schema is automatically migrated when the server starts. ---
General Bots