package models

import "time"

type Task struct {
	TaskID            string    `gorm:"column:task_id;type:varchar(255);primaryKey"`
	SessionID         string    `gorm:"column:session_id;type:varchar(255);not null;index;uniqueIndex:idx_agent_gateway_tasks_source_message"`
	AgentTurnID       string    `gorm:"column:agent_turn_id;type:varchar(255)"`
	SourceMessageID   string    `gorm:"column:source_message_id;type:varchar(255);not null;uniqueIndex:idx_agent_gateway_tasks_source_message"`
	SourceSenderEmail string    `gorm:"column:source_sender_email;type:varchar(320);not null"`
	Status            string    `gorm:"column:status;type:varchar(64);not null"`
	Prompt            string    `gorm:"column:prompt;type:text;not null"`
	WorkingDirectory  string    `gorm:"column:working_directory;type:text;not null"`
	AgentModel        string    `gorm:"column:agent_model;type:varchar(255);not null;default:''"`
	ErrorMessage      string    `gorm:"column:error_message;type:text"`
	CreatedAt         time.Time `gorm:"column:created_at;precision:3;not null"`
	UpdatedAt         time.Time `gorm:"column:updated_at;precision:3;not null"`
}

func (Task) TableName() string {
	return "agent_gateway_tasks"
}
