package service

import (
	"pure/global"
	"pure/model"
)

func CheckVersion(platform, version string) (model.VersionV, error) {
	var (
		err     error
		current model.VersionV
		result  model.VersionV
	)
	current, err = GetVersion(platform, version)
	if err != nil {
		return result, err
	}
	result, err = getNewestVersion(platform, current.Code)
	if err != nil {
		return result, err
	}
	if current.Status == 2 {
		result.HideAndSeek = true
	}
	return result, nil
}

func GetVersion(platform, version string) (model.VersionV, error) {
	var (
		err    error
		result model.VersionV
	)
	err = global.MG_DB.Model(&model.Version{}).Where("`type` = ? AND version = ? AND status IN (1,2)", platform, version).
		Select("version,`code`,`type`,info,is_force,url,md5,tip,`status`").First(&result).Error
	return result, err
}

func getNewestVersion(platform string, code int64) (model.VersionV, error) {
	var (
		err    error
		list   []model.VersionV
		result model.VersionV
	)
	err = global.MG_DB.Model(&model.Version{}).Where("`type` = ? AND `code` > ? AND `status` = 1", platform, code).
		Select("version,`code`,`type`,info,is_force,url,md5,tip,`status`").Order("`code` DESC").Find(&list).Error
	if err != nil {
		return result, err
	}
	if len(list) > 0 {
		result = list[0]
		for _, ver := range list {
			if !result.IsForce && ver.IsForce {
				result.IsForce = true
			}
		}
	}
	return result, err
}