package user

import "time"

// 玩家账户表
type UserResources struct {
	UID     int64 `gorm:"primaryKey" json:"uid"`
	Gold    int64 `gorm:"default:0" json:"gold"`    // 金币
	Diamond int64 `gorm:"default:0" json:"diamond"` // 钻石
}

func (u UserResources) GetId() int64 {
	return u.UID
}

func (u UserResources) GetIdName() string {
	return "uid"
}

func (u UserResources) TableName() string {
	return "user_resources"
}

type UserResourcesLog struct {
	UID           int64     `gorm:"type:Int64;index" json:"uid"`             // 玩家id
	Time          time.Time `gorm:"type:DateTime;default:now()" json:"time"` // 修改时间
	ResName       string    `gorm:"type:String;not null" json:"res_name"`    // 资源名
	ResAddValue   int64     `gorm:"type:Int64;" json:"res_value"`            // 资源增加值
	ResAfterValue int64     `gorm:"type:Int64;" json:"res_after_value"`      // 资源增加后的值
	GameId        int       `gorm:"type:Int32;" json:"game_id"`              // 添加资源的玩法id，充值等非玩法操作资源，则为0
	GameNo        string    `gorm:"type:String" json:"game_no"`              // 游戏局id，同上
	Reason        string    `gorm:"type:String" json:"reason"`               // 原因
	OperatorId    int64     `gorm:"type:Int64;" json:"operator_id"`          // 操作者id
}

func (u UserResourcesLog) GetId() int64 {
	return 0
}

func (u UserResourcesLog) GetIdName() string {
	return "uid"
}

func (u UserResourcesLog) TableName() string {
	return "user_resources_log"
}

func (u UserResourcesLog) TableOptions() string {
	// "ENGINE=MergeTree() ORDER BY tuple()"
	return `ENGINE=MergeTree() 
			ORDER BY (uid, time)
			PARTITION BY toYYYYMM(time)
			TTL time + INTERVAL 6 MONTH
			`
}

type AddUserRes struct {
	GameId int              `json:"game_id"` // 添加资源的玩法id，充值等非玩法操作资源，则为0
	GameNo string           `json:"game_no"` // 游戏局id，同上
	Reason string           `json:"reason"`  // 原因
	AddRes map[string]int64 `json:"add_res"` // map[资源名]增加值
}
