From f0c2b580617b076080ac9c3363ee3634c2b7905b Mon Sep 17 00:00:00 2001 From: BaoXuebin Date: Fri, 11 Mar 2022 23:18:38 +0800 Subject: [PATCH] add: delete ledger --- script/config.go | 11 ++++++++++- server.go | 8 +++++--- service/ledger.go | 29 +++++++++++++++++++++++++++-- 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/script/config.go b/script/config.go index b358496..cc3eef8 100644 --- a/script/config.go +++ b/script/config.go @@ -3,10 +3,11 @@ package script import ( "encoding/json" "fmt" - "github.com/gin-gonic/gin" "os" "sort" "strings" + + "github.com/gin-gonic/gin" ) var serverSecret string @@ -155,6 +156,10 @@ func UpdateLedgerAccounts(ledgerId string, accounts []Account) { ledgerAccountsMap[ledgerId] = accounts } +func ClearLedgerAccounts(ledgerId string) { + delete(ledgerAccountsMap, ledgerId) +} + func GetLedgerAccountTypes(ledgerId string) map[string]string { return ledgerAccountTypesMap[ledgerId] } @@ -163,6 +168,10 @@ func UpdateLedgerAccountTypes(ledgerId string, accountTypesMap map[string]string ledgerAccountTypesMap[ledgerId] = accountTypesMap } +func ClearLedgerAccountTypes(ledgerId string) { + delete(ledgerAccountTypesMap, ledgerId) +} + func GetAccountType(ledgerId string, acc string) AccountType { accountTypes := ledgerAccountTypesMap[ledgerId] accNodes := strings.Split(acc, ":") diff --git a/server.go b/server.go index de039e6..5ff0885 100644 --- a/server.go +++ b/server.go @@ -3,12 +3,13 @@ package main import ( "flag" "fmt" - "github.com/beancount-gs/script" - "github.com/beancount-gs/service" - "github.com/gin-gonic/gin" "io" "net/http" "os" + + "github.com/beancount-gs/script" + "github.com/beancount-gs/service" + "github.com/gin-gonic/gin" ) func InitServerFiles() error { @@ -88,6 +89,7 @@ func RegisterRouter(router *gin.Engine) { authorized.POST("/file", service.UpdateLedgerSourceFileContent) authorized.POST("/import/alipay", service.ImportAliPayCSV) authorized.POST("/import/wx", service.ImportWxPayCSV) + authorized.DELETE("/ledger", service.DeleteLedger) } } diff --git a/service/ledger.go b/service/ledger.go index 53d837d..f1a7275 100644 --- a/service/ledger.go +++ b/service/ledger.go @@ -3,14 +3,16 @@ package service import ( "crypto/sha1" "encoding/hex" - "github.com/beancount-gs/script" - "github.com/gin-gonic/gin" "io" "io/ioutil" + "os" "os/exec" "sort" "strings" "time" + + "github.com/beancount-gs/script" + "github.com/gin-gonic/gin" ) func CheckBeancount(c *gin.Context) { @@ -178,6 +180,29 @@ func OpenOrCreateLedger(c *gin.Context) { OK(c, resultMap) } +// 删除账本 +func DeleteLedger(c *gin.Context) { + ledgerConfig := script.GetLedgerConfigFromContext(c) + // 删除账本源文件 + os.RemoveAll(ledgerConfig.DataPath) + script.LogInfo(ledgerConfig.Mail, "Success delete "+ledgerConfig.DataPath) + // 删除 + ledgerConfigMap := script.GetLedgerConfigMap() + delete(ledgerConfigMap, ledgerConfig.Id) + err := script.WriteLedgerConfigMap(ledgerConfigMap) + if err != nil { + InternalError(c, "Failed to update ledger_config.json") + return + } + // remove from account cache + script.ClearLedgerAccounts(ledgerConfig.Id) + script.LogInfo(ledgerConfig.Mail, "Success clear ledger account cache "+ledgerConfig.Id) + // remove from account types cache + script.ClearLedgerAccountTypes(ledgerConfig.Id) + script.LogInfo(ledgerConfig.Mail, "Success clear ledger account types cache "+ledgerConfig.Id) + OK(c, "OK") +} + func createNewLedger(loginForm LoginForm, ledgerId string) (*script.Config, error) { // create new ledger serverConfig := script.GetServerConfig()