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

export const cronTasks = sqliteTable('cron_tasks', {
  id: text('id').primaryKey(),
  name: text('name').notNull(),
  schedule: text('schedule').notNull().default(''),
  action: text('action').notNull().default(''),
  actionType: text('action_type', {
    enum: ['run-agent', 'run-skill', 'custom-prompt'],
  }).notNull().default(ActionType.CUSTOM_PROMPT),
  agentName: text('agent_name').notNull().default(''),
  skillName: text('skill_name').notNull().default(''),
  workspaceId: text('workspace_id').notNull().default(''),
  enabled: integer('enabled').notNull().default(1),
  isHeartbeat: integer('is_heartbeat').notNull().default(0),
  webhookEnabled: integer('webhook_enabled').notNull().default(0),
  config: text('config').notNull().default('{}'),
  lastRunAt: text('last_run_at'),
  lastRunResult: text('last_run_result'),
  ownerUserId: text('owner_user_id').notNull().default(''),
  createdAt: text('created_at').notNull().default(sql`(datetime('now'))`),
  updatedAt: text('updated_at').notNull().default(sql`(datetime('now'))`),
})

export type CronTask = typeof cronTasks.$inferSelect
export type NewCronTask = typeof cronTasks.$inferInsert
