- 新增用户注册和登录系统 (login.html, register.html) - 集成Supabase数据库连接 (config.js, api.js) - 完善数据库架构设计 (database-schema.sql) - 添加部署指南和配置文档 (DEPLOYMENT_GUIDE.md) - 修复主页面结构和功能完善 (index.html) - 支持通话记录保存到数据库 - 完整的账单管理和用户认证流程 - 集成OpenAI、Twilio、Stripe等API服务
102 lines
3.9 KiB
JavaScript
102 lines
3.9 KiB
JavaScript
// 数据库初始化脚本
|
||
// 使用 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();
|
||
}
|