package task

import (
	"time"

	modbase "github.com/tidbcloud/aisupport/services/ticket-manager/models/base"
)

type Task struct {
	modbase.Updatable

	TaskListID   modbase.ID `gorm:"column:task_list_id;type:int;not null;index:idx_task_list_id"`
	Title        string     `gorm:"column:title;type:text;not null"`
	Description  string     `gorm:"column:description;type:text;not null"`
	Priority     string     `gorm:"column:priority;type:varchar(128);not null"`
	DueAt        *time.Time `gorm:"column:due_at;type:TIMESTAMP"`
	Creator      string     `gorm:"column:creator;type:varchar(255);not null"`
	StartedAt    *time.Time `gorm:"column:started_at;type:TIMESTAMP"`
	CompletedAt  *time.Time `gorm:"column:completed_at;type:TIMESTAMP"`
	ParentTaskID modbase.ID `gorm:"column:parent_task_id;type:int;not null;index:idx_parent_task_id"`
	Group        string     `gorm:"column:group;type:varchar(255)"`
}

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

type TaskMember struct {
	TaskID      modbase.ID `gorm:"column:task_id;type:varchar(255);primaryKey;not null"`
	MemberEmail string     `gorm:"column:member;type:varchar(255);primaryKey;not null"`
	Role        string     `gorm:"column:role;type:varchar(128);primaryKey;not null"`
}

func (TaskMember) TableName() string {
	return "task_members"
}
