// SQLite schema 聚合导出。
// 每张表一个文件，按业务域组织。所有表无外键约束，级联由 Repository 事务承担。

// 会话/消息
export { sessions } from './sessions'
export type { Session, NewSession } from './sessions'
export { messages } from './messages'
export type { Message, NewMessage } from './messages'

// 配置
export { settings } from './settings'
export type { Setting, NewSetting } from './settings'
export { userSettings } from './user-settings'
export type { UserSetting, NewUserSetting } from './user-settings'
export { apiProviders } from './api-providers'
export type { ApiProvider, NewApiProvider } from './api-providers'
export { providerModels } from './provider-models'
export type { ProviderModel, NewProviderModel } from './provider-models'
export { workspaces } from './workspaces'
export type { Workspace, NewWorkspace } from './workspaces'

// Agent/Skill/MCP
export { agents } from './agents'
export type { Agent, NewAgent } from './agents'
export { agentSkills } from './agent-skills'
export type { AgentSkill, NewAgentSkill } from './agent-skills'
export { skills } from './skills'
export type { Skill, NewSkill } from './skills'
export { mcpServers } from './mcp-servers'
export type { McpServer, NewMcpServer } from './mcp-servers'
export { hooks } from './hooks'
export type { Hook, NewHook } from './hooks'

// IM Bridge
export { imChannels } from './im-channels'
export type { ImChannel, NewImChannel } from './im-channels'
export { channelBindings } from './channel-bindings'
export type { ChannelBinding, NewChannelBinding } from './channel-bindings'
export { channelPermissionLinks } from './channel-permission-links'
export type { ChannelPermissionLink, NewChannelPermissionLink } from './channel-permission-links'
export {
  channelOutboundRefs,
  channelAuditLogs,
  channelDedupe,
} from './channel-misc'
export type {
  ChannelOutboundRef,
  ChannelAuditLog,
  ChannelDedupe,
} from './channel-misc'
export {
  weixinContextTokens,
  weixinSyncCursors,
  imPairingRequests,
} from './weixin-pairing'
export type {
  WeixinContextToken,
  WeixinSyncCursor,
  ImPairingRequest,
} from './weixin-pairing'

// 调度
export { cronTasks } from './cron-tasks'
export type { CronTask, NewCronTask } from './cron-tasks'
export { taskExecutions } from './task-executions'
export type { TaskExecution, NewTaskExecution } from './task-executions'

// 市场
export { marketplaceTemplates } from './marketplace-templates'
export type { MarketplaceTemplate, NewMarketplaceTemplate } from './marketplace-templates'
// H5 分享
export { h5Pages } from './h5-pages'
export type { H5Page, NewH5Page } from './h5-pages'

// 认证（Better-Auth）
export { user, account, session as authSession, verification } from './auth'
export type {
  User,
  NewUser,
  Account,
  NewAccount,
  AuthSession,
  NewAuthSession,
  Verification,
  NewVerification,
} from './auth'

// 多租户
export { workspaceMembers } from './multi-tenant'
export type {
  WorkspaceMember,
  NewWorkspaceMember,
} from './multi-tenant'

// 外部
export { webhookTokens, invitations } from './external'
export type {
  WebhookToken,
  NewWebhookToken,
  Invitation,
  NewInvitation,
} from './external'

// 外部用户
export { externalUsers } from './external-users'
export type { ExternalUser, NewExternalUser } from './external-users'
export { externalIdentities } from './external-identities'
export type { ExternalIdentity, NewExternalIdentity } from './external-identities'

// 微信小程序（@reserved — 设计预留，路由未实现）
export { wxappConfigs } from './wxapp-configs'
export type { WxappConfig, NewWxappConfig } from './wxapp-configs'
export { wxappTokens } from './wxapp-tokens'
export type { WxappToken, NewWxappToken } from './wxapp-tokens'

// 完整 schema 对象，用于 drizzle() 初始化
import { sessions } from './sessions'
import { messages } from './messages'
import { settings } from './settings'
import { userSettings } from './user-settings'
import { apiProviders } from './api-providers'
import { providerModels } from './provider-models'
import { workspaces } from './workspaces'
import { agents } from './agents'
import { agentSkills } from './agent-skills'
import { skills } from './skills'
import { mcpServers } from './mcp-servers'
import { hooks } from './hooks'
import { imChannels } from './im-channels'
import { channelBindings } from './channel-bindings'
import { channelPermissionLinks } from './channel-permission-links'
import {
  channelOutboundRefs,
  channelAuditLogs,
  channelDedupe,
} from './channel-misc'
import {
  weixinContextTokens,
  weixinSyncCursors,
  imPairingRequests,
} from './weixin-pairing'
import { cronTasks } from './cron-tasks'
import { taskExecutions } from './task-executions'
import { marketplaceTemplates } from './marketplace-templates'
import { h5Pages } from './h5-pages'
import { user, account, session as authSession, verification } from './auth'
import { workspaceMembers } from './multi-tenant'
import { webhookTokens, invitations } from './external'
import { externalUsers } from './external-users'
import { externalIdentities } from './external-identities'
import { wxappConfigs } from './wxapp-configs'
import { wxappTokens } from './wxapp-tokens'

export const schema = {
  sessions,
  messages,
  settings,
  userSettings,
  apiProviders,
  providerModels,
  workspaces,
  agents,
  agentSkills,
  skills,
  mcpServers,
  hooks,
  imChannels,
  channelBindings,
  channelPermissionLinks,
  channelOutboundRefs,
  channelAuditLogs,
  channelDedupe,
  weixinContextTokens,
  weixinSyncCursors,
  imPairingRequests,
  cronTasks,
  taskExecutions,
  marketplaceTemplates,
  h5Pages,
  user,
  account,
  authSession,
  verification,
  workspaceMembers,
  webhookTokens,
  invitations,
  externalUsers,
  externalIdentities,
  wxappConfigs,
  wxappTokens,
}
