Blacklist regex

This commit is contained in:
Patrick Haßel 2024-07-29 15:38:53 +02:00
parent fed7cd420a
commit 13fa1939ad
3 changed files with 6 additions and 13 deletions

View File

@ -6,8 +6,7 @@ import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import lombok.*; import lombok.*;
import java.util.Arrays; import java.util.regex.Pattern;
import java.util.Locale;
@Entity @Entity
@Getter @Getter
@ -26,21 +25,15 @@ public class Blacklist {
@NonNull @NonNull
@Column(nullable = false) @Column(nullable = false)
private String query; private String regex;
public Blacklist(final BlacklistCreate create) { public Blacklist(final BlacklistCreate create) {
enabled = create.isEnabled(); enabled = create.isEnabled();
query = create.getQuery(); regex = create.getQuery();
} }
public boolean matches(@NonNull final String title) { public boolean matches(@NonNull final String title) {
final String[] words = query.replaceAll("([0-9])([a-zA-Z])", "$1 $2") return Pattern.compile(regex, Pattern.CASE_INSENSITIVE).matcher(title).find();
.replaceAll("([a-zA-Z])([0-9])", "$1 $2")
.replaceAll("([a-z])([A-Z])", "$1 $2")
.replaceAll("^\\W+|\\W+$", "")
.toLowerCase(Locale.ROOT)
.split("\\W+");
return Arrays.stream(words).map(".*%s.*"::formatted).allMatch(title::matches);
} }
} }

View File

@ -16,7 +16,7 @@ public class BlacklistDto {
public BlacklistDto(final Blacklist blacklist) { public BlacklistDto(final Blacklist blacklist) {
this.id = blacklist.getId(); this.id = blacklist.getId();
this.enabled = blacklist.isEnabled(); this.enabled = blacklist.isEnabled();
this.query = blacklist.getQuery(); this.query = blacklist.getRegex();
} }
} }

View File

@ -47,7 +47,7 @@ public class BlacklistService {
@PostMapping("{id}/query") @PostMapping("{id}/query")
public BlacklistDto query(@PathVariable final long id, @NonNull @RequestBody final String query) { public BlacklistDto query(@PathVariable final long id, @NonNull @RequestBody final String query) {
return set(id, blacklist -> blacklist.setQuery(query)); return set(id, blacklist -> blacklist.setRegex(query));
} }
@NonNull @NonNull