package models

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

type EdbClassify struct {
	ClassifyId      int       `orm:"column(classify_id);pk"`
	ClassifyType    uint8     `description:"分类类型,0:普通指标分类,1:预测指标分类"`
	ClassifyName    string    `description:"分类名称"`
	ParentId        int       `description:"父级id"`
	HasData         int       `description:"是否含有指标数据"`
	CreateTime      time.Time `description:"创建时间"`
	ModifyTime      time.Time `description:"修改时间"`
	SysUserId       int       `description:"创建人id"`
	SysUserRealName string    `description:"创建人姓名"`
	Level           int       `description:"层级"`
	UniqueCode      string    `description:"唯一编码"`
	Sort            int       `description:"排序字段,越小越靠前,默认值:10"`
}

func GetEdbClassifyById(classifyId int) (item *EdbClassify, err error) {
	o := orm.NewOrm()
	sql := `SELECT * FROM edb_classify WHERE classify_id=? `
	err = o.Raw(sql, classifyId).QueryRow(&item)
	return
}

type EdbClassifySimplify struct {
	ClassifyId   int    `description:"分类id"`
	ClassifyName string `description:"分类名称"`
	ParentId     int
}

//递归获取所有目录
func GetClassifyAllByClassifyId(classifyId int) (resultList []*EdbClassifySimplify, err error) {
	o := orm.NewOrm()
	for {
		sql := ` SELECT * FROM edb_classify AS a WHERE a.classify_id=? order by sort asc,classify_id asc`
		item := new(EdbClassifySimplify)
		err = o.Raw(sql, classifyId).QueryRow(&item)
		if err != nil {
			break
		}
		if item.ClassifyId > 0 {
			resultList = append(resultList, item)
			classifyId = item.ParentId
		} else {
			break
		}
	}
	return resultList, err
}