Spaces:
Runtime error
Runtime error
| // 問題バンクのシード生成スクリプト。 | |
| // Edge Function jq-generate-problems を Lv1-3 × 易中難 で呼び、DB を満たす。 | |
| // | |
| // 使い方: | |
| // 1) .env に VITE_SUPABASE_URL / VITE_SUPABASE_ANON_KEY を設定 | |
| // 2) Edge Function をデプロイ済み (supabase functions deploy jq-generate-problems) | |
| // 3) node scripts/seed.mjs [count] | |
| // | |
| // count: 各 level×difficulty あたりの生成数 (既定 8) | |
| import { readFileSync } from 'node:fs' | |
| import { createClient } from '@supabase/supabase-js' | |
| function loadEnv() { | |
| try { | |
| const text = readFileSync(new URL('../.env', import.meta.url), 'utf8') | |
| for (const line of text.split('\n')) { | |
| const m = line.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*)\s*$/) | |
| if (m && !process.env[m[1]]) process.env[m[1]] = m[2].replace(/^["']|["']$/g, '') | |
| } | |
| } catch { | |
| /* .env が無くても process.env を使う */ | |
| } | |
| } | |
| loadEnv() | |
| const url = process.env.VITE_SUPABASE_URL | |
| const anon = process.env.VITE_SUPABASE_ANON_KEY | |
| if (!url || !anon) { | |
| console.error('VITE_SUPABASE_URL / VITE_SUPABASE_ANON_KEY が未設定です (.env を確認)') | |
| process.exit(1) | |
| } | |
| const count = Number(process.argv[2]) || 8 | |
| const levels = [1, 2, 3] | |
| const difficulties = ['easy', 'normal', 'hard'] | |
| const supabase = createClient(url, anon) | |
| for (const level of levels) { | |
| for (const difficulty of difficulties) { | |
| process.stdout.write(`Lv${level} ${difficulty} … `) | |
| const { data, error } = await supabase.functions.invoke('jq-generate-problems', { | |
| body: { level, difficulty, count }, | |
| }) | |
| if (error) { | |
| console.log(`✗ ${error.message}`) | |
| } else { | |
| console.log(`✓ ${data?.kept ?? 0} 件保管 (生成 ${data?.generated ?? '?'})`) | |
| } | |
| } | |
| } | |
| console.log('完了') | |