import { sqliteTable, text, index } from 'drizzle-orm/sqlite-core'
import { sql } from 'drizzle-orm'
import { TaskExecutionStatus } from '../../shared/enums'

export const taskExecutions = sqliteTable(
  'task_executions',
  {
    id: text('id').primaryKey(),
    taskId: text('task_id').notNull(),
    taskName: text('task_name').notNull(),
    result: text('result').notNull().default(''),
    status: text('status', { enum: ['ok', 'alert', 'error'] })
      .notNull()
      .default(TaskExecutionStatus.OK),
    sessionId: text('session_id').notNull().default(''),
    executedAt: text('executed_at').notNull().default(sql`(datetime('now'))`),
  },
  (t) => ({
    taskIdx: index('idx_task_executions_task').on(t.taskId, t.executedAt),
  }),
)

export type TaskExecution = typeof taskExecutions.$inferSelect
export type NewTaskExecution = typeof taskExecutions.$inferInsert
