api-workflow-builder / supabase-config.js
kenken999's picture
Upload folder using huggingface_hub
69996c8 verified
// 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;