package data_manage

import (
	"fmt"
	"github.com/beego/beego/v2/client/orm"
	"time"
)

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

type BaseFromDlDataSimple struct {
	Id        int `orm:"column(base_from_trade_dalian_index_id);pk"`
	DealCode  string
	BuyCode   string
	SoldCode  string
	DataTime  string
	DealValue string
	BuyValue  string
	SoldValue string
}

type BaseInfoFromDl struct {
	DealName string
	BuyName  string
	SoldName string
}

type BaseFromTradeDalianIndex struct {
	BaseFromTradeDalianIndexId int `orm:"column(base_from_trade_dalian_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 GetEdbDataDlMaxOrMinDate(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_dl WHERE edb_code=? `
	err = o.Raw(sql, edbCode).QueryRow(&minDate, &maxDate)
	return
}

// GetBaseInfoFromDalianByIndexCode 获取指标信息
func GetBaseInfoFromDalianByIndexCode(indexCode, suffix string) (list []*BaseInfoFromDl, err error) {
	o := orm.NewOrmUsingDB("data")
	sql := `SELECT * FROM base_from_trade_dalian_index WHERE %s_code=? `
	sql = fmt.Sprintf(sql, suffix)
	_, err = o.Raw(sql, indexCode).QueryRows(&list)
	return
}