package data_manage

import (
	"eta_gn/eta_task/global"
	"time"
)

type BaseFromTradeCffexIndex struct {
	BaseFromTradeCffexIndexId int `orm:"column(base_from_trade_cffex_index_id);pk"`
	Rank                      int
	DealShortName             string
	DealName                  string
	DealCode                  string
	DealValue                 int
	DealChange                int
	BuyShortName              string
	BuyName                   string
	BuyCode                   string
	BuyValue                  int
	BuyChange                 int
	SoldShortName             string
	SoldName                  string
	SoldCode                  string
	SoldValue                 int
	SoldChange                int
	Frequency                 string
	ClassifyName              string
	ClassifyType              string
	CreateTime                time.Time
	ModifyTime                time.Time
	DataTime                  string
}

func AddBaseFromTradeCffexIndex(item *BaseFromTradeCffexIndex) (lastId int64, err error) {
	//o := orm.NewOrm()
	//lastId, err = o.Insert(item)

	err = global.DEFAULT_DmSQL.Create(item).Error
	if err != nil {
		return
	}
	lastId = int64(item.BaseFromTradeCffexIndexId)
	return
}

func GetBaseFromTradeCffexIndexAll(dateStr string) (list []*BaseFromTradeCffexIndex, err error) {
	//o := orm.NewOrm()
	sql := `SELECT * FROM base_from_trade_cffex_index WHERE data_time=?`
	//_, err = o.Raw(sql, dateStr).QueryRows(&list)

	err = global.DEFAULT_DmSQL.Raw(sql, dateStr).Find(&list).Error
	return
}

func ModifyBaseFromTradeCffexIndex(columnList [5]string, dataList [5]interface{}, dataId int) (err error) {
	//o := orm.NewOrm()
	sql := "UPDATE base_from_trade_cffex_index SET " +
		columnList[0] + "=?," + columnList[1] + "=?," + columnList[2] + "=?," + columnList[3] + "=?," + columnList[4] +
		"=?,modify_time=NOW() WHERE base_from_trade_cffex_index_id=? "
	//_, err = o.Raw(sql, dataList[0], dataList[1], dataList[2], dataList[3], dataList[4], dataId).Exec()
	err = global.DEFAULT_DmSQL.Raw(sql, dataList[0], dataList[1], dataList[2], dataList[3], dataList[4], dataId).Error
	return
}

type CffexIndexResp struct {
	Ret     int
	Msg     string
	ErrMsg  string
	ErrCode string
	Data    []*BaseFromTradeCffexIndex
}

func GetBaseFromTradeCffexIndexMaxDate() (max_date time.Time, err error) {
	//o := orm.NewOrm()
	sql := ` SELECT max(a.data_time)as max_date FROM base_from_trade_cffex_index as a `
	//err = o.Raw(sql).QueryRow(&max_date)

	err = global.DEFAULT_DmSQL.Raw(sql).Scan(&max_date).Error
	return
}