initial commit

This commit is contained in:
2025-02-03 12:48:59 +08:00
commit 3da9e929b5
7 changed files with 199 additions and 0 deletions

64
core/data-clip.go Normal file
View File

@@ -0,0 +1,64 @@
package core
import (
"encoding/json"
"log"
"os"
"reflect"
)
type DataClip struct {
path string
type_ any
}
func (receiver *DataClip) checkFileExists(filepath string) (bool, error) {
if _, err := os.Stat(filepath); err == nil {
return true, nil
} else if os.IsNotExist(err) {
return false, nil
} else {
return false, err
}
}
func (receiver *DataClip) Setup(data interface{}) interface{} {
if exists, err := receiver.checkFileExists(receiver.path); err == nil {
if exists {
// load data
return receiver.LoadData()
} else {
// save default data
receiver.SaveData(data)
return data
}
} else {
log.Fatal(err.Error())
}
return data
}
func (receiver *DataClip) LoadData() interface{} {
data, err := os.ReadFile(receiver.path)
if err != nil {
log.Fatalf("Failed to Read Data File: %v", err)
}
// 使用反射获取 defaultConfig 的类型
if err := json.Unmarshal(data, receiver.type_); err != nil {
log.Fatalf("Failed to Unmarshal Data File: %v", err)
}
log.Printf("Loaded Data from File: %s", receiver.path)
return reflect.ValueOf(receiver.type_).Elem().Interface()
}
func (receiver *DataClip) SaveData(data interface{}) {
jsonData, err := json.MarshalIndent(data, "", " ")
if err != nil {
log.Fatalf("Error Encoding Default Data: %v", err)
}
if err := os.WriteFile(receiver.path, jsonData, 0644); err != nil {
log.Fatalf("Failed to Write Default Data to File: %v", err)
}
log.Printf("Saved Default Data to File: %s", receiver.path)
}