/**
 * LiteDesign 页面渲染器
 * 根据终端类型获取当前生效模板的完整组件列表
 * 支持两种存储格式：
 *   1. 新版：design_templates.content 字段（JSON blob，ThemeEditor 使用）
 *   2. 旧版：design_components 表（独立组件记录）
 */

const { get, all } = require('../utils/db');

/**
 * 渲染指定终端的生效模板
 * @param {string} terminal 终端类型（h5/pc/applet）
 * @returns {{ template: object|null, components: array }}
 */
function renderTemplate(terminal) {
  const template = get(
    'SELECT * FROM design_templates WHERE terminal=? AND is_default=1 AND status=1',
    [terminal]
  );
  if (!template) return { template: null, components: [] };

  // 方式一：从 content JSON blob 提取 components（ThemeEditor 新格式）
  if (template.content && template.content.trim()) {
    try {
      const parsed = JSON.parse(template.content);
      // 支持两种 content 结构:
      //   { components: [...] }
      //   [...] (直接是数组)
      const components = Array.isArray(parsed)
        ? parsed
        : (parsed.components || []);
      return { template, components };
    } catch (e) {
      // content 解析失败, 回退到方式二
    }
  }

  // 方式二：从设计组件表读取（旧版设计组件格式）
  const components = all(
    'SELECT * FROM design_components WHERE template_id=? ORDER BY sort ASC',
    [template.id]
  ).map(c => ({ ...c, config: JSON.parse(c.config || '{}') }));

  return { template, components };
}

module.exports = { renderTemplate };
