Skip to content

Commit

Permalink
🎨 Automatic purge for local data repo siyuan-note/siyuan#13091
Browse files Browse the repository at this point in the history
  • Loading branch information
88250 committed Nov 17, 2024
1 parent 506198a commit c29870b
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 48 deletions.
50 changes: 2 additions & 48 deletions log.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
package dejavu

import (
"math"
"os"
"path/filepath"
"sort"
Expand Down Expand Up @@ -143,57 +142,12 @@ func (repo *Repo) GetTagLogs() (ret []*Log, err error) {
}

func (repo *Repo) GetIndexLogs(page, pageSize int) (ret []*Log, pageCount, totalCount int, err error) {
indexesDir := filepath.Join(repo.store.Path, "indexes")
if !gulu.File.IsDir(indexesDir) {
return
}

entries, err := os.ReadDir(indexesDir)
indexes, totalCount, pageCount, err := repo.GetIndexes(page, pageSize)
if nil != err {
return
}

sort.Slice(entries, func(i, j int) bool {
infoI, _ := entries[i].Info()
infoJ, _ := entries[j].Info()
if nil == infoI || nil == infoJ {
return false
}
return infoI.ModTime().After(infoJ.ModTime())
})

i := 0
for _, entry := range entries {
name := entry.Name()
if 40 == len(name) {
entries[i] = entry
i++
}
}
for j := i; j < len(entries); j++ {
entries[j] = nil
}
entries = entries[:i]
totalCount = i
pageCount = int(math.Ceil(float64(totalCount) / float64(pageSize)))

start := (page - 1) * pageSize
end := page * pageSize

if start > totalCount {
start = totalCount
}
if end > totalCount {
end = totalCount
}

for _, entry := range entries[start:end] {
index, getErr := repo.GetIndex(entry.Name())
if nil != getErr {
err = getErr
return
}

for _, index := range indexes {
var log *Log
log, err = repo.getLog(index, true)
if nil != err {
Expand Down
58 changes: 58 additions & 0 deletions repo.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"errors"
"fmt"
"io"
"math"
"os"
"path"
"path/filepath"
Expand Down Expand Up @@ -493,6 +494,63 @@ func (repo *Repo) OpenFile(file *entity.File) (ret []byte, err error) {
return
}

func (repo *Repo) GetIndexes(page, pageSize int) (ret []*entity.Index, totalCount, pageCount int, err error) {
lock.Lock()
defer lock.Unlock()

dir := filepath.Join(repo.Path, "indexes")
entries, err := os.ReadDir(dir)
if nil != err {
logging.LogErrorf("read dir [%s] failed: %s", dir, err)
return
}

sort.Slice(entries, func(i, j int) bool {
infoI, _ := entries[i].Info()
infoJ, _ := entries[j].Info()
if nil == infoI || nil == infoJ {
return false
}
return infoI.ModTime().After(infoJ.ModTime())
})

i := 0
for _, entry := range entries {
name := entry.Name()
if 40 == len(name) {
entries[i] = entry
i++
}
}
for j := i; j < len(entries); j++ {
entries[j] = nil
}
entries = entries[:i]
totalCount = i
pageCount = int(math.Ceil(float64(totalCount) / float64(pageSize)))

start := (page - 1) * pageSize
end := page * pageSize

if start > totalCount {
start = totalCount
}
if end > totalCount {
end = totalCount
}

for _, entry := range entries[start:end] {
index, getErr := repo.store.GetIndex(entry.Name())
if nil != getErr {
err = getErr
return
}

ret = append(ret, index)
}
return
}

func (repo *Repo) removeCloudObjects(objects []string) (err error) {
waitGroup := &sync.WaitGroup{}
var removeErr error
Expand Down

0 comments on commit c29870b

Please sign in to comment.