Initial commit (code only without large binaries)

This commit is contained in:
robin
2026-02-15 18:58:44 +08:00
commit 35df75498f
9442 changed files with 1495866 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
package dbutils
import (
"github.com/TeaOSLab/EdgeAPI/internal/goman"
"github.com/go-sql-driver/mysql"
"github.com/iwind/TeaGo/dbs"
"time"
)
const minFreeSpaceGB = 3
var HasFreeSpace = true
var IsLocalDatabase = false
var LocalDatabaseDataDir = ""
func init() {
var ticker = time.NewTicker(5 * time.Minute)
dbs.OnReadyDone(func() {
goman.New(func() {
for range ticker.C {
HasFreeSpace = CheckHasFreeSpace()
}
})
})
}
// CheckHasFreeSpace 检查当前数据库是否有剩余空间
func CheckHasFreeSpace() bool {
db, _ := dbs.Default()
if db == nil {
return false
}
config, _ := db.Config()
if config == nil {
return false
}
dsnConfig, _ := mysql.ParseDSN(config.Dsn)
if dsnConfig == nil {
return false
}
if IsLocalAddr(dsnConfig.Addr) {
IsLocalDatabase = true
// only for local database
one, err := db.FindOne("SHOW VARIABLES WHERE variable_name='datadir'")
if err != nil || len(one) == 0 {
return true
}
var dir = one.GetString("Value")
if len(dir) == 0 {
return true
}
LocalDatabaseDataDir = dir
return checkHasFreeSpace(dir)
}
return true
}