package beegopro

import (
	beeLogger "github.com/beego/bee/v2/logger"
)

type TextModel struct {
	Names    []string
	Orms     []string
	Comments []string
	Extends  []string
}

func (content TextModel) ToModelInfos() (output []ModelInfo) {
	namesLen := len(content.Names)
	ormsLen := len(content.Orms)
	commentsLen := len(content.Comments)
	if namesLen != ormsLen && namesLen != commentsLen {
		beeLogger.Log.Fatalf("length error, namesLen is %d, ormsLen is %d, commentsLen is %d", namesLen, ormsLen, commentsLen)
	}
	extendLen := len(content.Extends)
	if extendLen != 0 && extendLen != namesLen {
		beeLogger.Log.Fatalf("extend length error, namesLen is %d, extendsLen is %d", namesLen, extendLen)
	}

	output = make([]ModelInfo, 0)
	for i, name := range content.Names {
		comment := content.Comments[i]
		if comment == "" {
			comment = name
		}
		inputType, goType, mysqlType, ormTag := getModelType(content.Orms[i])

		m := ModelInfo{
			Name:      name,
			InputType: inputType,
			GoType:    goType,
			Orm:       ormTag,
			Comment:   comment,
			MysqlType: mysqlType,
			Extend:    "",
		}
		// extend value
		if extendLen != 0 {
			m.Extend = content.Extends[i]
		}
		output = append(output, m)
	}
	return
}