From 7300e54c40b46f45bfd0416256a6339302ada6c4 Mon Sep 17 00:00:00 2001 From: krau <71133316+krau@users.noreply.github.com> Date: Sat, 23 Aug 2025 16:14:12 +0800 Subject: [PATCH] refactor: rule package --- client/bot/handlers/rule.go | 2 +- client/bot/handlers/utils/ruleutil/rule.go | 12 +++++------- pkg/{consts/specific.go => rule/consts.go} | 2 +- pkg/{enums/rule/ruletype.go => rule/enum.go} | 0 pkg/rule/filename_regex.go | 5 ++--- pkg/rule/is_album.go | 8 ++------ pkg/rule/message_regex.go | 6 ++---- pkg/rule/rule.go | 6 +----- 8 files changed, 14 insertions(+), 27 deletions(-) rename pkg/{consts/specific.go => rule/consts.go} (89%) rename pkg/{enums/rule/ruletype.go => rule/enum.go} (100%) diff --git a/client/bot/handlers/rule.go b/client/bot/handlers/rule.go index eba856a..2dfd085 100644 --- a/client/bot/handlers/rule.go +++ b/client/bot/handlers/rule.go @@ -11,7 +11,7 @@ import ( "github.com/duke-git/lancet/v2/slice" "github.com/krau/SaveAny-Bot/client/bot/handlers/utils/msgelem" "github.com/krau/SaveAny-Bot/database" - "github.com/krau/SaveAny-Bot/pkg/enums/rule" + "github.com/krau/SaveAny-Bot/pkg/rule" ) func handleRuleCmd(ctx *ext.Context, update *ext.Update) error { diff --git a/client/bot/handlers/utils/ruleutil/rule.go b/client/bot/handlers/utils/ruleutil/rule.go index 28a321c..3bab40b 100644 --- a/client/bot/handlers/utils/ruleutil/rule.go +++ b/client/bot/handlers/utils/ruleutil/rule.go @@ -7,8 +7,6 @@ import ( "github.com/charmbracelet/log" "github.com/krau/SaveAny-Bot/database" - "github.com/krau/SaveAny-Bot/pkg/consts" - ruleenum "github.com/krau/SaveAny-Bot/pkg/enums/rule" "github.com/krau/SaveAny-Bot/pkg/rule" "github.com/krau/SaveAny-Bot/pkg/tfile" ) @@ -37,7 +35,7 @@ func (m matchedStorName) String() string { // can we use this storage name directly? func (m matchedStorName) IsUsable() bool { - return m != "" && m != consts.RuleStorNameChosen + return m != "" && m != rule.RuleStorNameChosen } type MatchedDirPath string @@ -47,7 +45,7 @@ func (m MatchedDirPath) String() string { } func (m MatchedDirPath) NeedNewForAlbum() bool { - return m != "" && m == consts.RuleDirPathNewForAlbum + return m != "" && m == rule.RuleDirPathNewForAlbum } func ApplyRule(ctx context.Context, rules []database.Rule, inputs *ruleInput) (matchedStorageName matchedStorName, dirPath MatchedDirPath) { @@ -57,7 +55,7 @@ func ApplyRule(ctx context.Context, rules []database.Rule, inputs *ruleInput) (m logger := log.FromContext(ctx) for _, ur := range rules { switch ur.Type { - case ruleenum.FileNameRegex.String(): + case rule.FileNameRegex.String(): ru, err := rule.NewRuleFileNameRegex(ur.StorageName, ur.DirPath, ur.Data) if err != nil { logger.Errorf("Failed to create rule: %s", err) @@ -72,7 +70,7 @@ func ApplyRule(ctx context.Context, rules []database.Rule, inputs *ruleInput) (m dirPath = MatchedDirPath(ru.StoragePath()) matchedStorageName = matchedStorName(ru.StorageName()) } - case ruleenum.MessageRegex.String(): + case rule.MessageRegex.String(): ru, err := rule.NewRuleMessageRegex(ur.StorageName, ur.DirPath, ur.Data) if err != nil { logger.Errorf("Failed to create rule: %s", err) @@ -87,7 +85,7 @@ func ApplyRule(ctx context.Context, rules []database.Rule, inputs *ruleInput) (m dirPath = MatchedDirPath(ru.StoragePath()) matchedStorageName = matchedStorName(ru.StorageName()) } - case ruleenum.IsAlbum.String(): + case rule.IsAlbum.String(): matchAlbum, err := convertor.ToBool(ur.Data) if err != nil { matchAlbum = false diff --git a/pkg/consts/specific.go b/pkg/rule/consts.go similarity index 89% rename from pkg/consts/specific.go rename to pkg/rule/consts.go index 87d7140..8dd6d14 100644 --- a/pkg/consts/specific.go +++ b/pkg/rule/consts.go @@ -1,4 +1,4 @@ -package consts +package rule const ( RuleStorNameChosen = "CHOSEN" diff --git a/pkg/enums/rule/ruletype.go b/pkg/rule/enum.go similarity index 100% rename from pkg/enums/rule/ruletype.go rename to pkg/rule/enum.go diff --git a/pkg/rule/filename_regex.go b/pkg/rule/filename_regex.go index 4b80180..a7eb824 100644 --- a/pkg/rule/filename_regex.go +++ b/pkg/rule/filename_regex.go @@ -3,7 +3,6 @@ package rule import ( "regexp" - ruleenum "github.com/krau/SaveAny-Bot/pkg/enums/rule" "github.com/krau/SaveAny-Bot/pkg/tfile" ) @@ -14,8 +13,8 @@ type RuleFileNameRegex struct { var _ RuleClass[tfile.TGFile] = (*RuleFileNameRegex)(nil) -func (r RuleFileNameRegex) Type() ruleenum.RuleType { - return ruleenum.FileNameRegex +func (r RuleFileNameRegex) Type() RuleType { + return FileNameRegex } func (r RuleFileNameRegex) Match(input tfile.TGFile) (bool, error) { diff --git a/pkg/rule/is_album.go b/pkg/rule/is_album.go index f86bc96..3876cff 100644 --- a/pkg/rule/is_album.go +++ b/pkg/rule/is_album.go @@ -1,9 +1,5 @@ package rule -import ( - ruleenum "github.com/krau/SaveAny-Bot/pkg/enums/rule" -) - var _ RuleClass[bool] = (*RuleMediaType)(nil) type RuleMediaType struct { @@ -11,8 +7,8 @@ type RuleMediaType struct { matchAlbum bool } -func (r RuleMediaType) Type() ruleenum.RuleType { - return ruleenum.IsAlbum +func (r RuleMediaType) Type() RuleType { + return IsAlbum } func (r RuleMediaType) Match(input bool) (bool, error) { diff --git a/pkg/rule/message_regex.go b/pkg/rule/message_regex.go index dade55e..5a6d9da 100644 --- a/pkg/rule/message_regex.go +++ b/pkg/rule/message_regex.go @@ -2,8 +2,6 @@ package rule import ( "regexp" - - ruleenum "github.com/krau/SaveAny-Bot/pkg/enums/rule" ) var _ RuleClass[string] = (*RuleMessageRegex)(nil) @@ -13,8 +11,8 @@ type RuleMessageRegex struct { regex *regexp.Regexp } -func (r RuleMessageRegex) Type() ruleenum.RuleType { - return ruleenum.MessageRegex +func (r RuleMessageRegex) Type() RuleType { + return MessageRegex } func (r RuleMessageRegex) Match(input string) (bool, error) { diff --git a/pkg/rule/rule.go b/pkg/rule/rule.go index 064ac85..b0d0723 100644 --- a/pkg/rule/rule.go +++ b/pkg/rule/rule.go @@ -1,11 +1,7 @@ package rule -import ( - ruleenum "github.com/krau/SaveAny-Bot/pkg/enums/rule" -) - type RuleClass[InputType any] interface { - Type() ruleenum.RuleType + Type() RuleType Match(input InputType) (bool, error) StorageName() string StoragePath() string