package data_manage

import (
	"eta/eta_api/global"
	"eta/eta_api/utils"
	"fmt"
	"time"
)

type ZzData struct {
	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
}

type BaseFromZzDataSimple struct {
	//Id        int `orm:"column(base_from_trade_zhengzhou_index_id);pk"`
	Id        int `gorm:"column:base_from_trade_zhengzhou_index_id;primaryKey"`
	DealCode  string
	BuyCode   string
	SoldCode  string
	DataTime  string
	DealValue string
	BuyValue  string
	SoldValue string
}

type BaseInfoFromZz struct {
	DealName string
	BuyName  string
	SoldName string
}

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

func GetEdbDataZzMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
	//o := orm.NewOrmUsingDB("data")
	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_zz WHERE edb_code=? `
	//err = o.Raw(sql, edbCode).QueryRow(&minDate, &maxDate)
	var maxAndMinDate MaxAndMinDate
	err = global.DbMap[utils.DbNameIndex].Raw(sql, edbCode).First(&maxAndMinDate).Error
	if err != nil {
		return
	}
	minDate = maxAndMinDate.MinDate.Format(utils.FormatDate)
	maxDate = maxAndMinDate.MaxDate.Format(utils.FormatDate)
	return
}

// GetBaseInfoFromZhengzhouByIndexCode 获取指标信息
func GetBaseInfoFromZhengzhouByIndexCode(indexCode, suffix string) (list []*BaseInfoFromZz, err error) {
	//o := orm.NewOrmUsingDB("data")
	sql := `SELECT * FROM base_from_trade_zhengzhou_index WHERE %s_code=? `
	sql = fmt.Sprintf(sql, suffix)
	//_, err = o.Raw(sql, indexCode).QueryRows(&list)
	err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).Find(&list).Error
	return
}