108 lines
1.9 KiB
Go
108 lines
1.9 KiB
Go
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")
|
|
}
|