hexatts / supabase_schema.sql
Hexa06's picture
Upgrade to Kokoro TTS - 10x faster with emotional voices
66b1d91
-- TTS Service Supabase Schema
-- Users table
CREATE TABLE IF NOT EXISTS tts_users (
id BIGSERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
role VARCHAR(20) DEFAULT 'user' CHECK (role IN ('user', 'admin', 'premium')),
daily_limit INTEGER DEFAULT 3, -- -1 for unlimited
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Usage logs
CREATE TABLE IF NOT EXISTS tts_usage_logs (
id BIGSERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL,
text_length INTEGER NOT NULL,
language VARCHAR(10) DEFAULT 'en',
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
FOREIGN KEY (username) REFERENCES tts_users(username) ON DELETE CASCADE
);
-- Create indexes
CREATE INDEX IF NOT EXISTS idx_tts_users_username ON tts_users(username);
CREATE INDEX IF NOT EXISTS idx_tts_usage_logs_username ON tts_usage_logs(username);
CREATE INDEX IF NOT EXISTS idx_tts_usage_logs_created_at ON tts_usage_logs(created_at);
-- Enable Row Level Security
ALTER TABLE tts_users ENABLE ROW LEVEL SECURITY;
ALTER TABLE tts_usage_logs ENABLE ROW LEVEL SECURITY;
-- Allow service role to do everything
CREATE POLICY "Service role can do everything on tts_users"
ON tts_users
FOR ALL
TO service_role
USING (true);
CREATE POLICY "Service role can do everything on tts_usage_logs"
ON tts_usage_logs
FOR ALL
TO service_role
USING (true);
-- Admin user will be created via Python code with bcrypt hash