From 33cc2473a3d6ca941717c557f8e72b9904fbdc4f Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期五, 12 十一月 2021 15:20:58 +0800
Subject: [PATCH] add foreach, size api

---
 api.go |   46 +++++++++++++++++++++++++++++++++++-----------
 1 files changed, 35 insertions(+), 11 deletions(-)

diff --git a/api.go b/api.go
index dc73a4f..8870c6f 100644
--- a/api.go
+++ b/api.go
@@ -1,18 +1,20 @@
 package boltcache
 
+import "strconv"
+
 //娣诲姞涓�鏉℃棩蹇�
 func (ls *LogStore) ApplyLog(logData []byte) {
 	lastLogIndex := ls.getLastLog()
-	ls.applyCh <- &Log {
-		Index: lastLogIndex+1,
-		Data: logData,
+	ls.applyCh <- &Log{
+		Index: lastLogIndex + 1,
+		Data:  logData,
 	}
 	ls.setLastLog(lastLogIndex + 1)
 }
 
 type LogCon struct {
 	conf *confLog
-	Log *Log
+	Log  *Log
 }
 
 //鑾峰彇缂撳瓨鐨勬暟鎹�
@@ -24,21 +26,21 @@
 func (ls *LogStore) Get() *LogCon {
 	idx, _ := ls.store.FirstIndex(confBucket)
 	cLog := &confLog{}
-	if err := ls.store.GetConfLog(idx, cLog);err ==nil {
+	if err := ls.store.GetConfLog(idx, cLog); err == nil {
 		u, _ := ls.store.FirstIndex(cLog.BucketName)
 		log := &Log{}
-		if err = ls.store.GetLog(cLog.BucketName, u, log);err ==nil {
+		if err = ls.store.GetLog(cLog.BucketName, u, log); err == nil {
 			log.Index = u
 			cLog.Index = int(idx)
 			return &LogCon{
-				conf:cLog,
-				Log: log,
+				conf: cLog,
+				Log:  log,
 			}
 		} else {
-			if size,_ := ls.store.Size(confBucket);size >1 {
+			if size, _ := ls.store.Size(confBucket); size > 1 {
 				ls.Delete(&LogCon{
 					conf: cLog,
-					Log: nil,
+					Log:  nil,
 				})
 			}
 			ls.printLog("Get log err:", err)
@@ -49,6 +51,28 @@
 	return nil
 }
 
+// 閬嶅巻鏁版嵁, 杈撳嚭鍘熷鏁版嵁
+func (ls *LogStore) ForEach(f func(v []byte) error) {
+	ls.store.ForEach(f)
+}
+
+func (ls *LogStore) Size() int {
+	start, _ := ls.store.FirstIndex(confBucket)
+	end, _ := ls.store.LastIndex(confBucket)
+
+	totalSize := 0
+
+	for ; start <= end; start++ {
+		bucketName := bucketPre + strconv.Itoa(int(start))
+		bucketSize, err := ls.store.Size(bucketName)
+		if err == nil {
+			totalSize = totalSize + bucketSize
+		}
+	}
+
+	return totalSize
+}
+
 //鎻愪緵缁欏灞備娇鐢紝鍒犻櫎鏃ュ織
 func (ls *LogStore) Delete(lc *LogCon) error {
 	return ls.store.Delete(lc)
@@ -56,4 +80,4 @@
 
 func (ls *LogStore) Close() error {
 	return ls.store.Close()
-}
\ No newline at end of file
+}

--
Gitblit v1.8.0