4.7 KiB
4.7 KiB
Templates System Database Schema
This document describes the database schema for the LLM templates and filters system.
Database Schema (Mermaid ERD)
erDiagram
auth_users {
uuid id PK
}
user_filter_configs {
uuid id PK
uuid user_id FK
text context
text provider
text model
text_array default_templates
jsonb custom_filters
jsonb variables
boolean is_default
timestamptz created_at
timestamptz updated_at
}
user_templates {
uuid id PK
uuid user_id FK
text name
text description
text context
text provider
text model
text prompt
text_array filters
text format
boolean is_public
integer usage_count
timestamptz created_at
timestamptz updated_at
}
filter_usage_logs {
uuid id PK
uuid user_id FK
uuid template_id FK
text context
text provider
text model
integer input_length
integer output_length
integer processing_time_ms
boolean success
text error_message
text_array filters_applied
timestamptz created_at
}
provider_configs {
uuid id PK
text name
text display_name
text base_url
jsonb models
jsonb rate_limits
boolean is_active
timestamptz created_at
timestamptz updated_at
}
context_definitions {
uuid id PK
text name
text display_name
text description
jsonb default_templates
jsonb default_filters
text icon
boolean is_active
timestamptz created_at
timestamptz updated_at
}
%% Relationships
auth_users ||--o{ user_filter_configs : "owns"
auth_users ||--o{ user_templates : "creates"
auth_users ||--o{ filter_usage_logs : "generates"
user_templates ||--o{ filter_usage_logs : "tracks_usage"
Table Descriptions
user_filter_configs
Stores user-specific filter configurations and preferences for different contexts.
Key Fields:
context: One of 'maker-tutorials', 'marketplace', 'directory', 'commons'provider: AI service provider (default: 'openai')model: AI model to use (default: 'gpt-4o-mini')default_templates: Array of default template namescustom_filters: JSONB object containing custom filter configurationsvariables: JSONB object for template variables
user_templates
User-defined custom templates for various contexts.
Key Fields:
context: The context this template applies toprompt: The actual LLM prompt textfilters: Array of filter names to applyformat: Output format ('text', 'json', 'markdown')is_public: Whether template is shared publiclyusage_count: Tracking popularity
Constraints:
- Unique constraint on
(user_id, name, context)
filter_usage_logs
Analytics and performance tracking for filter usage.
Key Fields:
processing_time_ms: Performance trackingsuccess: Whether the operation succeededinput_length/output_length: Token usage trackingfilters_applied: Which filters were used
provider_configs
Configuration for different AI service providers.
Key Fields:
base_url: API endpoint for the providermodels: JSONB array of available modelsrate_limits: JSONB object with rate limiting info
Initial Providers:
- OpenAI (gpt-4o, gpt-4o-mini, gpt-4-turbo, gpt-3.5-turbo)
- Anthropic (claude-3-5-sonnet, claude-3-haiku)
- Google (gemini-pro, gemini-pro-vision)
- OpenRouter (various models)
context_definitions
Defines available contexts and their default configurations.
Key Fields:
default_templates: JSONB array of default template namesdefault_filters: JSONB object with default filter configurationsicon: UI icon identifier
Initial Contexts:
- maker-tutorials: DIY and maker content
- marketplace: Product and commerce content
- directory: Listing and categorization content
- commons: General-purpose templates
Security
All tables use Row Level Security (RLS) with policies ensuring:
- Users can only access their own data
- Public templates are visible to all users
- Provider configs and context definitions are read-only for authenticated users
Indexes
Performance indexes are created on:
- User foreign keys
- Context fields
- Public template flag
- Usage log timestamps
- Active provider/context flags