package checker

import (
	"fmt"
	"time"
)

// TispectorFile gorm能够识别的一个文件结构体
type TispectorFile struct {
	Name     string `yaml:"Name" gorm:"name" json:"Name"`
	Location string `yaml:"Location" gorm:"location" json:"Location"`
	// Result   string `json:"Result" gorm:"column:result"`
	Ct int64 `json:"ct" gorm:"column:ct"`
}

type FileInfo struct {
	Name     string
	Location string
	Ct       string
}

type FileDao interface {
	ListAllFiles() ([]TispectorFile, error)
	GetFileByName(Name string) (TispectorFile, error)
	AddFileInfo(file TispectorFile) (string, error)
	DelFileByName(Name string) error
	// UpdateFile(file TispectorFile) error
}

var fileDao FileDao

// ListAllFiles 列出所有文件信息
func ListAllFiles() ([]TispectorFile, error) {
	files, err := fileDao.ListAllFiles()
	return files, err
}

// GetFileByName 通过名字获取文件信息
func GetFileByName(Name string) (TispectorFile, error) {
	file, err := fileDao.GetFileByName(Name)
	return file, err
}

// AddFile 添加文件信息
func AddFileInfo(file TispectorFile) (string, error) {
	name, err := fileDao.AddFileInfo(file)
	return name, err
}

// DelFileByName 通过名字删除某文件信息
func DelFileByName(Name string) error {
	err := fileDao.DelFileByName(Name)
	return err
}

// func UpdateFile(file TispectorFile) error {
// 	return fileDao.UpdateFile(file)
// }

// SetFileDao 进行初始化
func SetFileDao(impl FileDao) {
	fileDao = impl
}

func TransFile(fileInfo TispectorFile) (File FileInfo) {
	timeTemplate1 := "2006-01-02 15:04:05"
	File.Name = fileInfo.Name
	File.Location = fileInfo.Location
	File.Ct = fmt.Sprintln(time.Unix(fileInfo.Ct, 0).Format(timeTemplate1))
	return File
}
