import { sqliteTable, text, integer, uniqueIndex, index } from 'drizzle-orm/sqlite-core'
import { sql } from 'drizzle-orm'

/**
 * 微信小程序配置表（@reserved — 设计预留，路由未实现）。
 *
 * 与 h5_pages 同构：一个 workspace 一个小程序入口配置。
 * slug 作为 scene 参数的值，小程序码携带。
 *
 * appid/appSecret：默认用官方壳子的 AppID（环境变量），owner 可覆盖为自己的。
 */
export const wxappConfigs = sqliteTable(
  'wxapp_configs',
  {
    id: text('id').primaryKey(),
    workspaceId: text('workspace_id').notNull().unique(),
    slug: text('slug').notNull().unique(),
    appid: text('appid').notNull().default(''),
    appSecret: text('app_secret').notNull().default(''),
    defaultModel: text('default_model').notNull().default(''),
    permissionMode: text('permission_mode', { enum: ['confirm', 'full'] }).notNull().default('full'),
    pageTitle: text('page_title').notNull().default(''),
    description: text('description').notNull().default(''),
    welcomeMessage: text('welcome_message').notNull().default(''),
    iconEmoji: text('icon_emoji').notNull().default(''),
    enabled: integer('enabled').notNull().default(1),
    createdAt: text('created_at').notNull().default(sql`(datetime('now'))`),
    updatedAt: text('updated_at').notNull().default(sql`(datetime('now'))`),
  },
  (t) => ({
    slugIdx: uniqueIndex('idx_wxapp_configs_slug').on(t.slug),
    workspaceIdx: index('idx_wxapp_configs_workspace').on(t.workspaceId),
  }),
)

export type WxappConfig = typeof wxappConfigs.$inferSelect
export type NewWxappConfig = typeof wxappConfigs.$inferInsert
