idconvert/pb_hooks/SCHEMA.md

52 lines
1.6 KiB
Markdown

# PocketBase Collection Schema
Set this up in the PocketBase admin UI at http://localhost:8090/_/
## 1. users (extends built-in auth collection)
Add these fields to the default auth collection:
| Field | Type | Default |
|---|---|---|
| credits_balance | Number | 0 |
| free_used | Bool | false |
| fingerprint_id | Text | — |
## 2. conversions
| Field | Type | Required | Notes |
|---|---|---|---|
| user | Relation → users | yes | cascade delete |
| file_hash | Text | yes | SHA-256 of export JSON |
| status | Text | yes | pending \| complete \| failed |
| download_url | Text | no | MinIO presigned URL |
## 3. transactions
| Field | Type | Required | Notes |
|---|---|---|---|
| user | Relation → users | yes | cascade delete |
| type | Text | yes | purchase \| conversion \| free \| refund |
| credits | Number | yes | positive = added, negative = spent |
| balance_after | Number | yes | snapshot after this tx |
| stripe_id | Text | no | Stripe PaymentIntent ID |
| file_hash | Text | no | SHA-256 of export JSON |
## 4. purchases
| Field | Type | Required | Notes |
|---|---|---|---|
| user | Relation → users | yes | cascade delete |
| credits | Number | yes | credits added |
| stripe_id | Text | yes | Stripe PaymentIntent ID |
## API Rules
For all collections except auth, set:
- List / View / Create / Update / Delete: restrict to authenticated users
or use admin-only rules for server-side writes via the admin token.
The backend uses an admin token (set in PocketBase admin settings → API keys)
to create conversion and purchase records server-side.
Store this token as POCKETBASE_ADMIN_TOKEN in .env.