mirror of
https://github.com/katanemo/plano.git
synced 2026-04-25 16:56:24 +02:00
Update docs to Plano (#639)
This commit is contained in:
parent
15fbb6c3af
commit
e224cba3e3
139 changed files with 4407 additions and 24735 deletions
|
|
@ -1,109 +0,0 @@
|
|||
# Database Setup for Conversation State Storage
|
||||
|
||||
This directory contains SQL scripts needed to set up database tables for storing conversation state when using the OpenAI Responses API.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- PostgreSQL database (Supabase or self-hosted)
|
||||
- Database connection credentials
|
||||
- `psql` CLI tool or database admin access
|
||||
|
||||
## Setup Instructions
|
||||
|
||||
### Option 1: Using psql
|
||||
|
||||
```bash
|
||||
psql $DATABASE_URL -f docs/db_setup/conversation_states.sql
|
||||
```
|
||||
|
||||
### Option 2: Using Supabase Dashboard
|
||||
|
||||
1. Log in to your Supabase project dashboard
|
||||
2. Navigate to the SQL Editor
|
||||
3. Copy and paste the contents of `conversation_states.sql`
|
||||
4. Run the query
|
||||
|
||||
### Option 3: Direct Database Connection
|
||||
|
||||
Connect to your PostgreSQL database using your preferred client and execute the SQL from `conversation_states.sql`.
|
||||
|
||||
## Verification
|
||||
|
||||
After running the setup, verify the table was created:
|
||||
|
||||
```sql
|
||||
SELECT tablename FROM pg_tables WHERE tablename = 'conversation_states';
|
||||
```
|
||||
|
||||
You should see `conversation_states` in the results.
|
||||
|
||||
## Configuration
|
||||
|
||||
After setting up the database table, configure your application to use Supabase storage by setting the appropriate environment variable or configuration parameter with your database connection string.
|
||||
|
||||
### Supabase Connection String
|
||||
|
||||
**Important:** Supabase requires different connection strings depending on your network:
|
||||
|
||||
- **IPv4 Networks (Most Common)**: Use the **Session Pooler** connection string (port 5432):
|
||||
```
|
||||
postgresql://postgres.[PROJECT-REF]:[PASSWORD]@aws-0-[REGION].pooler.supabase.com:5432/postgres
|
||||
```
|
||||
|
||||
- **IPv6 Networks**: Use the direct connection (port 5432):
|
||||
```
|
||||
postgresql://postgres:[PASSWORD]@db.[PROJECT-REF].supabase.co:5432/postgres
|
||||
```
|
||||
|
||||
**How to get your connection string:**
|
||||
1. Go to your Supabase project dashboard
|
||||
2. Settings → Database → Connection Pooling
|
||||
3. Copy the **Session mode** connection string
|
||||
4. Replace `[YOUR-PASSWORD]` with your actual database password
|
||||
5. URL-encode special characters in the password (e.g., `#` becomes `%23`)
|
||||
|
||||
**Example:**
|
||||
```bash
|
||||
# If your password is "MyPass#123", encode it as "MyPass%23123"
|
||||
export DATABASE_URL="postgresql://postgres.myproject:MyPass%23123@aws-0-us-west-2.pooler.supabase.com:5432/postgres"
|
||||
```
|
||||
|
||||
### Testing the Connection
|
||||
|
||||
To test your connection string works:
|
||||
```bash
|
||||
export TEST_DATABASE_URL="your-connection-string-here"
|
||||
cd crates/brightstaff
|
||||
cargo test supabase -- --nocapture
|
||||
```
|
||||
|
||||
## Table Schema
|
||||
|
||||
The `conversation_states` table stores:
|
||||
- `response_id` (TEXT, PRIMARY KEY): Unique identifier for each conversation
|
||||
- `input_items` (JSONB): Array of conversation messages and context
|
||||
- `created_at` (BIGINT): Unix timestamp when conversation started
|
||||
- `model` (TEXT): Model name used for the conversation
|
||||
- `provider` (TEXT): LLM provider name
|
||||
- `updated_at` (TIMESTAMP): Last update time (auto-managed)
|
||||
|
||||
## Maintenance
|
||||
|
||||
### Cleanup Old Conversations
|
||||
|
||||
To prevent unbounded growth, consider periodically cleaning up old conversation states:
|
||||
|
||||
```sql
|
||||
-- Delete conversations older than 7 days
|
||||
DELETE FROM conversation_states
|
||||
WHERE updated_at < NOW() - INTERVAL '7 days';
|
||||
```
|
||||
|
||||
You can automate this with a cron job or database trigger.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If you encounter errors on first use:
|
||||
- **"Table 'conversation_states' does not exist"**: Run the setup SQL
|
||||
- **Connection errors**: Verify your DATABASE_URL is correct
|
||||
- **Permission errors**: Ensure your database user has CREATE TABLE privileges
|
||||
Loading…
Add table
Add a link
Reference in a new issue