feat: 支持六维评审评分及别名管理
This commit is contained in:
42
state/state_changes.go
Normal file
42
state/state_changes.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package state
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/voocel/ainovel-cli/domain"
|
||||
)
|
||||
|
||||
// AppendStateChanges 追加角色状态变化到 meta/state_changes.json。
|
||||
func (s *Store) AppendStateChanges(changes []domain.StateChange) error {
|
||||
existing, _ := s.LoadStateChanges()
|
||||
existing = append(existing, changes...)
|
||||
return s.writeJSON("meta/state_changes.json", existing)
|
||||
}
|
||||
|
||||
// LoadStateChanges 读取全部状态变化记录。
|
||||
func (s *Store) LoadStateChanges() ([]domain.StateChange, error) {
|
||||
var changes []domain.StateChange
|
||||
if err := s.readJSON("meta/state_changes.json", &changes); err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
return changes, nil
|
||||
}
|
||||
|
||||
// LoadRecentStateChanges 加载指定章节之前最近 count 章的状态变化。
|
||||
func (s *Store) LoadRecentStateChanges(currentChapter, count int) ([]domain.StateChange, error) {
|
||||
all, err := s.LoadStateChanges()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
start := max(currentChapter-count, 1)
|
||||
var result []domain.StateChange
|
||||
for _, c := range all {
|
||||
if c.Chapter >= start && c.Chapter < currentChapter {
|
||||
result = append(result, c)
|
||||
}
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
Reference in New Issue
Block a user