|
|
|
|
|
|
|
|
|
|
|
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); |
|
|
|
|
|
|
|
|
|