// 数据库初始化脚本 // 使用 Node.js 运行: node init-database.js const { createClient } = require('@supabase/supabase-js'); const fs = require('fs'); const path = require('path'); // 配置信息 const SUPABASE_URL = 'https://poxwjzdianersitpnvdy.supabase.co'; const SUPABASE_SERVICE_KEY = 'YOUR_SERVICE_ROLE_KEY_HERE'; // 需要替换为实际的 Service Role Key async function initializeDatabase() { console.log('🚀 开始初始化 Twilio-project 数据库...'); try { // 创建 Supabase 客户端(使用 Service Role Key) const supabase = createClient(SUPABASE_URL, SUPABASE_SERVICE_KEY); // 读取 SQL 初始化脚本 const sqlScript = fs.readFileSync(path.join(__dirname, 'database-init.sql'), 'utf8'); // 将 SQL 脚本分割成单独的语句 const statements = sqlScript .split(';') .map(stmt => stmt.trim()) .filter(stmt => stmt.length > 0 && !stmt.startsWith('--')); console.log(`📝 准备执行 ${statements.length} 条 SQL 语句...`); // 逐条执行 SQL 语句 for (let i = 0; i < statements.length; i++) { const statement = statements[i]; if (statement.includes('SELECT') && statement.includes('status')) { continue; // 跳过状态检查语句 } console.log(`⏳ 执行语句 ${i + 1}/${statements.length}...`); try { const { data, error } = await supabase.rpc('exec_sql', { sql_query: statement + ';' }); if (error) { console.warn(`⚠️ 语句 ${i + 1} 执行警告:`, error.message); } else { console.log(`✅ 语句 ${i + 1} 执行成功`); } } catch (err) { console.warn(`⚠️ 语句 ${i + 1} 执行出错:`, err.message); } } // 验证表是否创建成功 console.log('\n🔍 验证数据库表...'); const { data: tables, error: tablesError } = await supabase .from('information_schema.tables') .select('table_name') .eq('table_schema', 'public'); if (tablesError) { console.error('❌ 无法获取表列表:', tablesError); } else { console.log('✅ 数据库表创建成功:'); tables.forEach(table => { console.log(` - ${table.table_name}`); }); } console.log('\n🎉 数据库初始化完成!'); console.log('\n📋 创建的表包括:'); console.log(' • user_profiles - 用户档案'); console.log(' • translator_profiles - 翻译员档案'); console.log(' • call_records - 通话记录'); console.log(' • appointments - 预约管理'); console.log(' • document_translations - 文档翻译'); console.log(' • payments - 支付记录'); console.log(' • system_settings - 系统设置'); } catch (error) { console.error('❌ 数据库初始化失败:', error); process.exit(1); } } // 手动执行 SQL 的替代方法 async function manualInit() { console.log('\n📖 手动初始化指南:'); console.log('1. 访问 Supabase 控制台: https://supabase.com/dashboard/project/poxwjzdianersitpnvdy'); console.log('2. 进入 SQL Editor'); console.log('3. 复制并执行 database-init.sql 文件中的内容'); console.log('4. 确认所有表都创建成功'); } // 检查是否提供了 Service Role Key if (SUPABASE_SERVICE_KEY === 'YOUR_SERVICE_ROLE_KEY_HERE') { console.log('⚠️ 请先在脚本中设置正确的 SUPABASE_SERVICE_KEY'); manualInit(); } else { initializeDatabase(); }