导入默认模型
This commit is contained in:
		@@ -1,14 +1,17 @@
 | 
			
		||||
package routers
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"crypto/sha256"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"log"
 | 
			
		||||
	"main/configs"
 | 
			
		||||
	"main/models"
 | 
			
		||||
	"main/utils"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"os"
 | 
			
		||||
	"strconv"
 | 
			
		||||
 | 
			
		||||
	"github.com/gorilla/mux"
 | 
			
		||||
@@ -17,6 +20,54 @@ import (
 | 
			
		||||
 | 
			
		||||
var manager = models.NewWebSocketManager()
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	// 初始化模型路由: 检查本地模型目录是否存在, 不存在则创建
 | 
			
		||||
	if _, err := os.Stat("data/models"); err != nil {
 | 
			
		||||
		if err := os.MkdirAll("data/models", 0777); err != nil {
 | 
			
		||||
			log.Println(err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	// 检查模型目录中是否存在模型文件, 如果存在且数据库中未记录, 则将模型信息写入数据库
 | 
			
		||||
	if files, err := ioutil.ReadDir("data/models"); err == nil {
 | 
			
		||||
		for _, file := range files {
 | 
			
		||||
			if file.IsDir() {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			log.Println("检查模型是否存在:", file.Name())
 | 
			
		||||
 | 
			
		||||
			// 检查文件是否已经存在
 | 
			
		||||
			var model models.Model
 | 
			
		||||
			if err := configs.ORMDB().Take(&model, "name = ?", file.Name()).Error; err == nil {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// 计算文件的 sha256 值
 | 
			
		||||
			f, err := os.Open("data/models/" + file.Name())
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				log.Println(err)
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			defer f.Close()
 | 
			
		||||
 | 
			
		||||
			hash := sha256.New()
 | 
			
		||||
			if _, err := io.Copy(hash, f); err != nil {
 | 
			
		||||
				log.Println(err)
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			model.Name = file.Name()
 | 
			
		||||
			model.Hash = fmt.Sprintf("%x", hash.Sum(nil))
 | 
			
		||||
			model.ModelPath = "data/models/" + file.Name()
 | 
			
		||||
			model.Type = "ckp"
 | 
			
		||||
			model.Status = "success"
 | 
			
		||||
 | 
			
		||||
			log.Println("模型不存在, 添加到数据库:", file.Name())
 | 
			
		||||
			configs.ORMDB().Create(&model)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 獲取模型列表
 | 
			
		||||
func ModelsGet(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	var listview models.ListView
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user