| |
|
|
| |
| 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, |
| is_active BOOLEAN DEFAULT TRUE, |
| created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), |
| updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() |
| ); |
|
|
| |
| 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 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); |
|
|
| |
| ALTER TABLE tts_users ENABLE ROW LEVEL SECURITY; |
| ALTER TABLE tts_usage_logs ENABLE ROW LEVEL SECURITY; |
|
|
| |
| 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); |
|
|
| |
|
|