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

export const mcpServers = sqliteTable(
  'mcp_servers',
  {
    id: text('id').primaryKey(),
    name: text('name').notNull(),
    protocol: text('protocol').notNull().default('stdio'),
    config: text('config').notNull().default('{}'),
    enabled: integer('enabled').notNull().default(1),
    status: text('status').notNull().default('disconnected'),
    userId: text('user_id').notNull().default(''),
    createdAt: text('created_at').notNull().default(sql`(datetime('now'))`),
    updatedAt: text('updated_at').notNull().default(sql`(datetime('now'))`),
  },
  (t) => ({
    userNameUnique: uniqueIndex('idx_mcp_servers_user_name').on(t.userId, t.name),
    userIdx: index('idx_mcp_servers_user').on(t.userId, t.updatedAt),
  }),
)

export type McpServer = typeof mcpServers.$inferSelect
export type NewMcpServer = typeof mcpServers.$inferInsert
