// 푸시 공지 게시판 — 관리자가 작성한 공지(이미지+본문)를 푸시로 발송하고,
//   사용자는 푸시를 탭하면 /m/notices/[id] 페이지에서 본문/이미지를 확인할 수 있다.
import { pool } from "./db";

let ensured = false;
export async function ensureNoticesTable() {
  if (ensured) return;
  try {
    await pool.query(`
      CREATE TABLE IF NOT EXISTS momo_notices (
        objid       TEXT PRIMARY KEY,
        title       TEXT NOT NULL,
        body        TEXT,
        image_url   TEXT,
        url         TEXT,            -- 외부 링크가 있으면 사용 (없으면 자체 /m/notices/[id])
        regdate     TIMESTAMP DEFAULT NOW(),
        regid       TEXT,
        sent_count  INTEGER DEFAULT 0,
        is_del      CHAR(1) DEFAULT 'N'
      );
      CREATE TABLE IF NOT EXISTS momo_recipient_groups (
        objid       TEXT PRIMARY KEY,
        name        TEXT NOT NULL,
        description TEXT,
        regdate     TIMESTAMP DEFAULT NOW(),
        regid       TEXT,
        is_del      CHAR(1) DEFAULT 'N'
      );
      CREATE TABLE IF NOT EXISTS momo_recipient_group_members (
        group_objid TEXT NOT NULL,
        user_id     TEXT NOT NULL,
        added_at    TIMESTAMP DEFAULT NOW(),
        PRIMARY KEY (group_objid, user_id)
      );
      -- 발송이력용 컬럼 (구버전 호환을 위해 IF NOT EXISTS)
      ALTER TABLE momo_notices ADD COLUMN IF NOT EXISTS recipient_user_ids TEXT[];
      ALTER TABLE momo_notices ADD COLUMN IF NOT EXISTS recipient_count INTEGER DEFAULT 0;
      ALTER TABLE momo_notices ADD COLUMN IF NOT EXISTS failed_count INTEGER DEFAULT 0;
      ALTER TABLE momo_notices ADD COLUMN IF NOT EXISTS group_names TEXT[];
    `);
    ensured = true;
  } catch (err) {
    console.error("[notices/ensure]", err);
  }
}
