package model

import (
	"blazing/cool"
)

// todo 还需要做一个记录任务奖励的表
const TableNameTask = "task"

// Task mapped from table <task>
type Task struct {
	*cool.Model
	PlayerID uint64 `gorm:"not null;index:idx_task_by_player_id;comment:'所属玩家ID'" json:"player_id"`
	TaskID   uint32 `gorm:"not null;comment:'任务ID'" json:"task_id"`
	Data     string `gorm:"type:text;not null;comment:'全部数据'" json:"data"`
}

<<<<<<< HEAD
// TaskEX 单个任务的详细信息，包含任务步骤状态和整体状态
type TaskEX struct {
	Task
	Data []uint32 `struc:"[20]byte"  orm:"data" json:"data"`
=======
// TaskInfo 单个任务的详细信息，包含任务步骤状态和整体状态
type TaskInfo struct {
	Task
	// TaskInfo 任务步骤信息，
	// struc:"[20]byte" 确保二进制序列化时固定20字节长度，json标签指定JSON字段名
	//TaskID   uint32   `json:"task_id"` //区分是每日任务还是常规任务,常规为0,每日为1
	Data []uint32 `orm:"data" struc:"[20]byte" json:"task_info"`
>>>>>>> ea1148039e70e6b1dadf6c892b49e547d0f10ac7
	//LastResetTime time.Time `gorm:"not null;comment:'上次重置时间（UTC）'" json:"last_reset_time"` //这里是每天重置
	// Status 任务整体状态：0-未接受，1-已接受，2-已完成未领取，3-已完成已领取
	// json标签指定JSON字段名，与业务状态说明保持一致
	//Status byte `json:"status"`
}

// TableName PlayerInfo's table name
func (*Task) TableName() string {
	return TableNameTask
}

// GroupName PlayerInfo's table group
func (*Task) GroupName() string {
	return "default"
}

func (t *Task) GetData() string {
	return t.Data
}
func (t *Task) SetData(t1 string) {
	t.Data = t1
}

// NewPlayerInfo create a new PlayerInfo
func NewTask() *Task {
	return &Task{
		Model: cool.NewModel(),
	}
}

// init 创建表
func init() {
	cool.CreateTable(&Task{})
}
