52 lines
2.5 KiB
Markdown
52 lines
2.5 KiB
Markdown
# PocketBase collection setup for Evoke chat
|
|
|
|
Create these collections in the PocketBase Admin UI at `https://pocketbase.ccllc.pro/_/`.
|
|
|
|
## Auth (users)
|
|
|
|
Evoke uses the built-in **users** collection for login and signup. Ensure:
|
|
|
|
- The **users** collection exists (default in PocketBase).
|
|
- **Auth** is enabled: in the collection settings, enable "Allow username/auth" or the **Email/Password** auth method so users can register and log in with email + password.
|
|
- Optionally add a **name** field (Text) for display in the sidebar.
|
|
|
|
## 1. Collection: `channels`
|
|
|
|
| Field | Type | Notes |
|
|
| --------- | -------- | --------------------------- |
|
|
| name | Text | Channel name |
|
|
| members | Relation | Multiple → `users` |
|
|
| created | Date | Auto |
|
|
| createdBy | Relation | Single → `users` (optional) |
|
|
|
|
**API rules**
|
|
|
|
- **List:** `members ?= @request.auth.id`
|
|
- **View:** `members ?= @request.auth.id`
|
|
- **Create:** `@request.auth.id != ""`
|
|
- **Update/Delete:** e.g. same as view or creator-only
|
|
|
|
---
|
|
|
|
## 2. Collection: `messages` (unified: voice, text, image, video)
|
|
|
|
| Field | Type | Notes |
|
|
| -------- | ------ | --------------------------------------------------------------------- |
|
|
| type | Select | Values: `voice`, `text`, `image`, `video` |
|
|
| channel | Relation | Single → `channels` |
|
|
| user | Relation | Single → `users` |
|
|
| body | Text | Required for `text`; optional caption for `image`/`video`/`voice` |
|
|
| audio | File | Single, accept `audio/*` (e.g. webm/opus); when `type = voice` |
|
|
| file | File | Single, accept `image/*` or `video/*`; when `type = image` or `video` |
|
|
| duration | Number | Seconds; when `type = voice` |
|
|
| waveform | JSON | Optional; e.g. `{"peaks": [...]}`; when `type = voice` |
|
|
| created | Date | Auto |
|
|
|
|
**API rules**
|
|
|
|
- **Create:** `@request.auth.id != "" && user = @request.auth.id`
|
|
- **List:** `channel.members ?= @request.auth.id`
|
|
- **View:** `channel.members ?= @request.auth.id`
|
|
|
|
The **channels** and **messages** collections reference **users** (relation fields). Create users via the Evoke app (Sign up) or in the PocketBase Admin.
|