File size: 1,583 Bytes
66b1d91 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
-- 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
|