-- Telegram Mini App Users Table -- Run this in Supabase SQL Editor -- Users table for Telegram authentication CREATE TABLE IF NOT EXISTS users ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), telegram_id BIGINT UNIQUE NOT NULL, username TEXT, first_name TEXT NOT NULL, last_name TEXT, photo_url TEXT, language_code TEXT DEFAULT 'ku', wallet_address TEXT, created_at TIMESTAMPTZ DEFAULT NOW(), updated_at TIMESTAMPTZ DEFAULT NOW() ); -- Index for fast telegram_id lookups CREATE INDEX IF NOT EXISTS idx_users_telegram_id ON users(telegram_id); -- Index for wallet_address lookups CREATE INDEX IF NOT EXISTS idx_users_wallet_address ON users(wallet_address); -- RLS (Row Level Security) ALTER TABLE users ENABLE ROW LEVEL SECURITY; -- Policy: Users can read their own data CREATE POLICY "Users can read own data" ON users FOR SELECT USING (true); -- Policy: Service role can do everything (for Edge Functions) CREATE POLICY "Service role full access" ON users FOR ALL USING (auth.role() = 'service_role'); -- Updated_at trigger CREATE OR REPLACE FUNCTION update_updated_at() RETURNS TRIGGER AS $$ BEGIN NEW.updated_at = NOW(); RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER users_updated_at BEFORE UPDATE ON users FOR EACH ROW EXECUTE FUNCTION update_updated_at();