diff --git a/backend/scratch/query-prompts.ts b/backend/scratch/query-prompts.ts new file mode 100644 index 00000000..aba9dc23 --- /dev/null +++ b/backend/scratch/query-prompts.ts @@ -0,0 +1,92 @@ +// File: backend/scratch/query-prompts.ts +// Change Log +// - 2026-05-29: Created fully ESLint-compliant database diagnostic utility (ADR-029) +import * as fs from 'fs'; +import * as path from 'path'; +import { Logger } from '@nestjs/common'; +import * as mysql from 'mysql2/promise'; + +const logger = new Logger('QueryPromptsDiagnostic'); + +interface PromptRow { + id: number; + public_id: string; + prompt_type: string; + version_number: number; + is_active: number; + snippet: string; +} + +/** + * ดึงข้อมูลการเชื่อมต่อฐานข้อมูลจากไฟล์ .env.local + */ +function parseEnvConfig(): Record { + const config: Record = {}; + try { + const envPath = path.join(__dirname, '..', '.env.local'); + if (fs.existsSync(envPath)) { + const content = fs.readFileSync(envPath, 'utf8'); + content.split('\n').forEach((line) => { + const trimmed = line.trim(); + if (trimmed && !trimmed.startsWith('#') && trimmed.includes('=')) { + const parts = trimmed.split('='); + const key = parts[0].trim(); + const val = parts.slice(1).join('=').trim(); + config[key] = val; + } + }); + } + } catch (err: unknown) { + logger.warn( + `ไม่สามารถอ่านไฟล์ .env.local ได้: ${err instanceof Error ? err.message : String(err)}` + ); + } + return config; +} + +async function main(): Promise { + const env = parseEnvConfig(); + const dbHost = env.DB_HOST || '127.0.0.1'; + const dbPort = env.DB_PORT ? Number(env.DB_PORT) : 3306; + const dbUser = env.DB_USERNAME || 'admin'; + const dbPass = env.DB_PASSWORD || 'Center2025'; + const dbName = env.DB_DATABASE || 'lcbp3_dev'; + + logger.log( + `กำลังเชื่อมต่อฐานข้อมูลที่ ${dbHost}:${dbPort} (Database: ${dbName})...` + ); + + const connection = await mysql.createConnection({ + host: dbHost, + port: dbPort, + user: dbUser, + password: dbPass, + database: dbName, + }); + + try { + const [rows] = await connection.execute( + 'SELECT id, public_id, prompt_type, version_number, is_active, LEFT(template, 30) as snippet FROM ai_prompts' + ); + logger.log('--- ข้อมูลในตาราง ai_prompts ---'); + const prompts = rows as PromptRow[]; + prompts.forEach((row) => { + logger.log( + `[v${row.version_number}] ID: ${row.id} | PublicID: ${row.public_id} | Type: ${row.prompt_type} | Active: ${row.is_active} | Snippet: ${row.snippet}` + ); + }); + } catch (err: unknown) { + logger.error( + `เกิดข้อผิดพลาดในการดึงข้อมูล: ${err instanceof Error ? err.message : String(err)}` + ); + } finally { + await connection.end(); + } +} + +// รันฟังก์ชันหลักโดยดักจับข้อผิดพลาดทั้งหมดและป้องกัน floating promise +main().catch((err: unknown) => { + logger.error( + `ข้อผิดพลาดร้ายแรงขณะรันสคริปต์: ${err instanceof Error ? err.message : String(err)}` + ); +});