package db import ( "encoding/json" "errors" "fmt" "os" ) var localDB []Token type Token struct { Token string `json:"token"` DedupObject string `json:"dedup_object"` } func InitLocalDB() { start: data, err := os.ReadFile("./token.json") if os.IsNotExist(err) { os.WriteFile("./token.json", []byte("[]"), 0644) goto start } else if err != nil { fmt.Println(err) } err = json.Unmarshal(data, &localDB) if err != nil { fmt.Println(err) } } func ListToken() []Token { InitLocalDB() return localDB } func CreateToken(token string, dedupObject string) error { InitLocalDB() for _, t := range localDB { if t.Token == token { return errors.New("token已经存在") } } a := append(localDB, Token{token, dedupObject}) marshal, err := json.Marshal(a) if err != nil { return err } if err := os.WriteFile("./token.json", marshal, 0644); err != nil { return err } InitLocalDB() return nil } func UpdateToken(token string, dedupObject string) error { InitLocalDB() for i, t := range localDB { if t.Token == token { localDB[i].DedupObject = dedupObject marshal, err := json.Marshal(localDB) if err != nil { return err } if err := os.WriteFile("./token.json", marshal, 0644); err != nil { return err } return nil } } InitLocalDB() return errors.New("token not found") } func DeleteToken(token string) error { InitLocalDB() for i, t := range localDB { if t.Token == token { localDB = append(localDB[:i], localDB[i+1:]...) marshal, err := json.Marshal(localDB) if err != nil { return err } if err := os.WriteFile("./token.json", marshal, 0644); err != nil { return err } return nil } } InitLocalDB() return errors.New("token not found") } func GetDedupObject(token string) (dedupObject string, err error) { for i, t := range localDB { if t.Token == token { return localDB[i].DedupObject, nil } } return "", errors.New("未找到Token") }