import jwt from 'jsonwebtoken'
import { BdgmstInterface } from './table/bdgmstInterface.js'
// import { ActmstInterface } from './actmstInterface.js'

export class Interface {

  constructor() {
    this.map = {
      bdgmst: new BdgmstInterface(),
    //   actmst: new ActmstInterface(),
    }
  }

  // ===============================================================
  // 📌 saveInterface → แกะ token เอง และ route ไปยัง interface เฉพาะ table
  // ===============================================================
  async saveInterface(tableName, req, data) {

    // ------------------------------
    // ✔ 1) จับ Interface ที่ตรงกับ table
    // ------------------------------
    const handler = this.map[tableName.toLowerCase()]
    if (!handler) {
      throw new Error(`Interface not found for table: ${tableName}`)
    }

    // ------------------------------
    // ✔ 2) แกะ token → ดึง organization → schema
    // ------------------------------
    const token = req.headers.authorization?.split(' ')[1]
    if (!token) {
      throw new Error('Missing token in request header')
    }

    let decoded
    try {
      decoded = jwt.verify(token, process.env.JWT_SECRET)
    } catch (err) {
      throw new Error('Invalid token: ' + err.message)
    }

    const schema = decoded.organization    // ⭐ ได้ schema ที่ต้องการ
    if (!schema) throw new Error("Token missing 'organization' field")

    // ------------------------------
    // ✔ 3) ส่งงานไปยัง interface ของ table นั้น ๆ
    // ------------------------------
    return await handler.saveInterface(schema, data)
  }

}
