瀏覽代碼

:art: 支持间隔复习 https://github.com/siyuan-note/siyuan/issues/6710

Liang Ding 2 年之前
父節點
當前提交
fecd965dfb
共有 3 個文件被更改,包括 43 次插入4 次删除
  1. 19 0
      kernel/api/riff.go
  2. 1 0
      kernel/api/router.go
  3. 23 4
      kernel/model/flashcard.go

+ 19 - 0
kernel/api/riff.go

@@ -113,6 +113,25 @@ func addRiffCards(c *gin.Context) {
 	}
 }
 
+func renameRiffDeck(c *gin.Context) {
+	ret := gulu.Ret.NewResult()
+	defer c.JSON(http.StatusOK, ret)
+
+	arg, ok := util.JsonArg(c, ret)
+	if !ok {
+		return
+	}
+
+	deckID := arg["deckID"].(string)
+	name := arg["name"].(string)
+	err := model.RenameDeck(deckID, name)
+	if nil != err {
+		ret.Code = -1
+		ret.Msg = err.Error()
+		return
+	}
+}
+
 func createRiffDeck(c *gin.Context) {
 	ret := gulu.Ret.NewResult()
 	defer c.JSON(http.StatusOK, ret)

+ 1 - 0
kernel/api/router.go

@@ -300,6 +300,7 @@ func ServeAPI(ginServer *gin.Engine) {
 	ginServer.Handle("POST", "/api/repo/openRepoSnapshotDoc", model.CheckAuth, openRepoSnapshotDoc)
 
 	ginServer.Handle("POST", "/api/riff/createRiffDeck", model.CheckAuth, createRiffDeck)
+	ginServer.Handle("POST", "/api/riff/renameRiffDeck", model.CheckAuth, renameRiffDeck)
 	ginServer.Handle("POST", "/api/riff/getRiffDecks", model.CheckAuth, getRiffDecks)
 	ginServer.Handle("POST", "/api/riff/addRiffCards", model.CheckAuth, addRiffCards)
 	ginServer.Handle("POST", "/api/riff/removeRiffCards", model.CheckAuth, removeRiffCards)

+ 23 - 4
kernel/model/flashcard.go

@@ -22,7 +22,6 @@ import (
 	"strings"
 	"sync"
 
-	"github.com/88250/gulu"
 	"github.com/88250/lute/ast"
 	"github.com/siyuan-note/logging"
 	"github.com/siyuan-note/riff"
@@ -106,7 +105,8 @@ func AddFlashcards(deckID string, blockIDs []string) (err error) {
 
 func InitFlashcards() {
 	riffSavePath := getRiffDir()
-	if !gulu.File.IsDir(riffSavePath) {
+	if err := os.MkdirAll(riffSavePath, 0755); nil != err {
+		logging.LogErrorf("create riff dir [%s] failed: %s", riffSavePath, err)
 		return
 	}
 
@@ -125,11 +125,30 @@ func InitFlashcards() {
 				continue
 			}
 
-			deckLock.Lock()
 			Decks[deckID] = deck
-			deckLock.Unlock()
 		}
 	}
+
+	if 1 > len(Decks) {
+		deck, createErr := CreateDeck("Default Deck")
+		if nil == createErr {
+			Decks[deck.ID] = deck
+		}
+	}
+}
+
+func RenameDeck(deckID string, name string) (err error) {
+	deckLock.Lock()
+	deck := Decks[deckID]
+	deckLock.Unlock()
+
+	deck.Name = name
+	err = deck.Save()
+	if nil != err {
+		logging.LogErrorf("save deck [%s] failed: %s", deckID, err)
+		return
+	}
+	return
 }
 
 func CreateDeck(name string) (deck *riff.Deck, err error) {