Spaces:
Sleeping
Sleeping
File size: 5,434 Bytes
69996c8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | // Supabase Configuration and API Functions
// API Workflow Builder - Database Integration
const SUPABASE_URL = 'https://rootomzbucovwdqsscqd.supabase.co';
const SUPABASE_ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJvb3RvbXpidWNvdndkcXNzY3FkIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MzU4OTE4ODMsImV4cCI6MjA1MTQ2Nzg4M30.fYKOe-HPh4WUdvBhEJxakLWCMQBp4E90EDwARk7ucf8';
// Supabaseクライアント初期化
const supabaseClient = supabase.createClient(SUPABASE_URL, SUPABASE_ANON_KEY);
console.log('✅ Supabase Client initialized');
/**
* ページをSupabaseに保存
* @param {string} pageName - ページ名
* @param {string} html - HTML内容
* @param {string} css - CSS内容
* @param {object} components - GrapeJSコンポーネント
* @returns {Promise<{success: boolean, data: any, error: string}>}
*/
async function savePageToSupabase(pageName, html, css, components) {
try {
const { data, error } = await supabaseClient
.from('page_builder_pages')
.insert({
name: pageName,
html_content: html,
css_content: css,
components_json: components,
created_at: new Date().toISOString(),
updated_at: new Date().toISOString()
})
.select();
if (error) throw error;
console.log('✅ Page saved to Supabase:', data);
return { success: true, data: data, error: null };
} catch (error) {
console.error('❌ Error saving page:', error);
return { success: false, data: null, error: error.message };
}
}
/**
* Supabaseから全ページを取得
* @returns {Promise<{success: boolean, data: any[], error: string}>}
*/
async function loadPagesFromSupabase() {
try {
const { data, error } = await supabaseClient
.from('page_builder_pages')
.select('*')
.order('updated_at', { ascending: false });
if (error) throw error;
console.log('✅ Pages loaded from Supabase:', data.length);
return { success: true, data: data, error: null };
} catch (error) {
console.error('❌ Error loading pages:', error);
return { success: false, data: [], error: error.message };
}
}
/**
* Supabaseから特定のページを取得
* @param {string} pageId - ページID
* @returns {Promise<{success: boolean, data: any, error: string}>}
*/
async function loadPageFromSupabase(pageId) {
try {
const { data, error } = await supabaseClient
.from('page_builder_pages')
.select('*')
.eq('id', pageId)
.single();
if (error) throw error;
console.log('✅ Page loaded from Supabase:', data.name);
return { success: true, data: data, error: null };
} catch (error) {
console.error('❌ Error loading page:', error);
return { success: false, data: null, error: error.message };
}
}
/**
* API実行ログをSupabaseに保存
* @param {string} apiName - API名
* @param {string} endpoint - エンドポイント
* @param {object} request - リクエストデータ
* @param {object} response - レスポンスデータ
* @param {string} status - ステータス ('success' or 'error')
* @returns {Promise<{success: boolean, data: any, error: string}>}
*/
async function saveApiLogToSupabase(apiName, endpoint, request, response, status) {
try {
const { data, error } = await supabaseClient
.from('api_execution_logs')
.insert({
api_name: apiName,
endpoint: endpoint,
request_data: request,
response_data: response,
status: status,
executed_at: new Date().toISOString()
})
.select();
if (error) throw error;
console.log('✅ API log saved:', apiName, status);
return { success: true, data: data, error: null };
} catch (error) {
console.error('❌ Error saving API log:', error);
return { success: false, data: null, error: error.message };
}
}
/**
* Supabaseから API実行ログを取得
* @param {number} limit - 取得件数
* @returns {Promise<{success: boolean, data: any[], error: string}>}
*/
async function getApiLogsFromSupabase(limit = 50) {
try {
const { data, error } = await supabaseClient
.from('api_execution_logs')
.select('*')
.order('executed_at', { ascending: false })
.limit(limit);
if (error) throw error;
console.log('✅ API logs loaded:', data.length);
return { success: true, data: data, error: null };
} catch (error) {
console.error('❌ Error loading API logs:', error);
return { success: false, data: [], error: error.message };
}
}
// グローバルに公開
window.savePageToSupabase = savePageToSupabase;
window.loadPagesFromSupabase = loadPagesFromSupabase;
window.loadPageFromSupabase = loadPageFromSupabase;
window.saveApiLogToSupabase = saveApiLogToSupabase;
window.getApiLogsFromSupabase = getApiLogsFromSupabase;
|