diff options
author | 2024-06-04 02:33:39 -0700 | |
---|---|---|
committer | 2024-06-04 10:33:39 +0100 | |
commit | 45fe295caa633d0477796a028f1e93382a2a2ce9 (patch) | |
tree | bd0f6a139991bd368d25db09724fcf1a9bcea2d7 | |
parent | [feature] log worker startup counts (#2958) (diff) | |
download | gotosocial-45fe295caa633d0477796a028f1e93382a2a2ce9.tar.xz |
Compile filter keyword regexps when touched through PutFilter or UpdateFilter (#2951)
Followup to #2903
-rw-r--r-- | internal/db/bundb/filter.go | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/internal/db/bundb/filter.go b/internal/db/bundb/filter.go index 30a8494a7..2ac9f6a81 100644 --- a/internal/db/bundb/filter.go +++ b/internal/db/bundb/filter.go @@ -154,6 +154,13 @@ func (f *filterDB) populateFilter(ctx context.Context, filter *gtsmodel.Filter) } func (f *filterDB) PutFilter(ctx context.Context, filter *gtsmodel.Filter) error { + // Pre-compile filter keyword regular expressions. + for _, filterKeyword := range filter.Keywords { + if err := filterKeyword.Compile(); err != nil { + return gtserror.Newf("error compiling filter keyword regex: %w", err) + } + } + // Update database. if err := f.db.RunInTx(ctx, nil, func(ctx context.Context, tx bun.Tx) error { if _, err := tx. @@ -225,6 +232,13 @@ func (f *filterDB) UpdateFilter( } } + // Pre-compile filter keyword regular expressions. + for _, filterKeyword := range filter.Keywords { + if err := filterKeyword.Compile(); err != nil { + return gtserror.Newf("error compiling filter keyword regex: %w", err) + } + } + // Update database. if err := f.db.RunInTx(ctx, nil, func(ctx context.Context, tx bun.Tx) error { if _, err := tx. |