From f2cf0715235faef6c6d372c7987eee0867cc92ca Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Fri, 20 Feb 2026 13:43:16 -0800 Subject: [PATCH] add regex operators --- public/intl/messages/ar-SA.json | 2 ++ public/intl/messages/be-BY.json | 2 ++ public/intl/messages/bg-BG.json | 2 ++ public/intl/messages/bn-BD.json | 2 ++ public/intl/messages/bs-BA.json | 2 ++ public/intl/messages/ca-ES.json | 2 ++ public/intl/messages/cs-CZ.json | 2 ++ public/intl/messages/da-DK.json | 2 ++ public/intl/messages/de-CH.json | 2 ++ public/intl/messages/de-DE.json | 2 ++ public/intl/messages/el-GR.json | 2 ++ public/intl/messages/en-GB.json | 2 ++ public/intl/messages/en-US.json | 2 ++ public/intl/messages/es-ES.json | 2 ++ public/intl/messages/fa-IR.json | 2 ++ public/intl/messages/fi-FI.json | 2 ++ public/intl/messages/fo-FO.json | 2 ++ public/intl/messages/fr-FR.json | 2 ++ public/intl/messages/ga-ES.json | 2 ++ public/intl/messages/he-IL.json | 2 ++ public/intl/messages/hi-IN.json | 2 ++ public/intl/messages/hr-HR.json | 2 ++ public/intl/messages/hu-HU.json | 2 ++ public/intl/messages/id-ID.json | 2 ++ public/intl/messages/it-IT.json | 2 ++ public/intl/messages/ja-JP.json | 2 ++ public/intl/messages/km-KH.json | 2 ++ public/intl/messages/ko-KR.json | 2 ++ public/intl/messages/lt-LT.json | 2 ++ public/intl/messages/mn-MN.json | 2 ++ public/intl/messages/ms-MY.json | 2 ++ public/intl/messages/my-MM.json | 2 ++ public/intl/messages/nb-NO.json | 2 ++ public/intl/messages/nl-NL.json | 2 ++ public/intl/messages/pl-PL.json | 2 ++ public/intl/messages/pt-BR.json | 2 ++ public/intl/messages/pt-PT.json | 2 ++ public/intl/messages/ro-RO.json | 2 ++ public/intl/messages/ru-RU.json | 2 ++ public/intl/messages/si-LK.json | 2 ++ public/intl/messages/sk-SK.json | 2 ++ public/intl/messages/sl-SI.json | 2 ++ public/intl/messages/sv-SE.json | 2 ++ public/intl/messages/ta-IN.json | 2 ++ public/intl/messages/th-TH.json | 2 ++ public/intl/messages/tr-TR.json | 2 ++ public/intl/messages/uk-UA.json | 2 ++ public/intl/messages/ur-PK.json | 2 ++ public/intl/messages/uz-UZ.json | 2 ++ public/intl/messages/vi-VN.json | 2 ++ public/intl/messages/zh-CN.json | 2 ++ public/intl/messages/zh-TW.json | 2 ++ src/components/hooks/useFilters.ts | 13 ++++++++++++- src/components/messages.ts | 2 ++ src/lib/clickhouse.ts | 4 ++++ src/lib/constants.ts | 2 ++ src/lib/params.ts | 7 ++++++- src/lib/prisma.ts | 4 ++++ src/lib/schema.ts | 2 ++ 59 files changed, 136 insertions(+), 2 deletions(-) diff --git a/public/intl/messages/ar-SA.json b/public/intl/messages/ar-SA.json index 4f0e7897a..98f937fed 100644 --- a/public/intl/messages/ar-SA.json +++ b/public/intl/messages/ar-SA.json @@ -51,6 +51,8 @@ "confirm": "تأكيد", "confirm-password": "تأكيد كلمة المرور", "contains": "يحتوي على", + "regex-match": "يطابق التعبير النمطي", + "regex-not-match": "لا يطابق التعبير النمطي", "content": "المحتوى", "continue": "تابع", "conversion": "تحويل", diff --git a/public/intl/messages/be-BY.json b/public/intl/messages/be-BY.json index a2ef2a37c..8cbdd1046 100644 --- a/public/intl/messages/be-BY.json +++ b/public/intl/messages/be-BY.json @@ -51,6 +51,8 @@ "confirm": "Падцвердзіць", "confirm-password": "Падцвердзіць пароль", "contains": "Уключае", + "regex-match": "Адпавядае рэгулярнаму выразу", + "regex-not-match": "Не адпавядае рэгулярнаму выразу", "content": "Змест", "continue": "Працягнуць", "conversion": "Канверсія", diff --git a/public/intl/messages/bg-BG.json b/public/intl/messages/bg-BG.json index e3d7cff87..2edf2ae76 100644 --- a/public/intl/messages/bg-BG.json +++ b/public/intl/messages/bg-BG.json @@ -51,6 +51,8 @@ "confirm": "Потвърди", "confirm-password": "Потвърди парола", "contains": "Съдържа", + "regex-match": "Съвпада с регулярен израз", + "regex-not-match": "Не съвпада с регулярен израз", "content": "Съдържание", "continue": "Продължи", "conversion": "Конверсия", diff --git a/public/intl/messages/bn-BD.json b/public/intl/messages/bn-BD.json index 03a79d301..fcc263cb8 100644 --- a/public/intl/messages/bn-BD.json +++ b/public/intl/messages/bn-BD.json @@ -51,6 +51,8 @@ "confirm": "নিশ্চিত করুন", "confirm-password": "পাসওয়ার্ড নিশ্চিত করুন", "contains": "রয়েছে", + "regex-match": "রেজেক্সের সাথে মেলে", + "regex-not-match": "রেজেক্সের সাথে মেলে না", "content": "বিষয়বস্তু", "continue": "পরবর্তিতে", "conversion": "রূপান্তর", diff --git a/public/intl/messages/bs-BA.json b/public/intl/messages/bs-BA.json index 1fc18f431..eb55ff438 100644 --- a/public/intl/messages/bs-BA.json +++ b/public/intl/messages/bs-BA.json @@ -51,6 +51,8 @@ "confirm": "Potvrdi", "confirm-password": "Potvrdi šifru", "contains": "Sadrži", + "regex-match": "Odgovara regularnom izrazu", + "regex-not-match": "Ne odgovara regularnom izrazu", "content": "Sadržaj", "continue": "Nastavi", "conversion": "Konverzija", diff --git a/public/intl/messages/ca-ES.json b/public/intl/messages/ca-ES.json index 0a6984c1a..30b66451c 100644 --- a/public/intl/messages/ca-ES.json +++ b/public/intl/messages/ca-ES.json @@ -51,6 +51,8 @@ "confirm": "Confirmar", "confirm-password": "Confirma la contrasenya", "contains": "Conté", + "regex-match": "Coincideix amb l'expressió regular", + "regex-not-match": "No coincideix amb l'expressió regular", "content": "Contingut", "continue": "Continuar", "conversion": "Conversió", diff --git a/public/intl/messages/cs-CZ.json b/public/intl/messages/cs-CZ.json index 43903a152..eacaee4ac 100644 --- a/public/intl/messages/cs-CZ.json +++ b/public/intl/messages/cs-CZ.json @@ -51,6 +51,8 @@ "confirm": "Potvrdit", "confirm-password": "Potvrdit heslo", "contains": "Obsahuje", + "regex-match": "Odpovídá regulárnímu výrazu", + "regex-not-match": "Neodpovídá regulárnímu výrazu", "content": "Obsah", "continue": "Pokračovat", "conversion": "Konverze", diff --git a/public/intl/messages/da-DK.json b/public/intl/messages/da-DK.json index 0c3d1006c..16e16128d 100644 --- a/public/intl/messages/da-DK.json +++ b/public/intl/messages/da-DK.json @@ -51,6 +51,8 @@ "confirm": "Bekræft", "confirm-password": "Godkendt adgangskode", "contains": "Indeholder", + "regex-match": "Matcher regulært udtryk", + "regex-not-match": "Matcher ikke regulært udtryk", "content": "Indhold", "continue": "Fortsæt", "conversion": "Konvertering", diff --git a/public/intl/messages/de-CH.json b/public/intl/messages/de-CH.json index 6b3b4af59..6125b2386 100644 --- a/public/intl/messages/de-CH.json +++ b/public/intl/messages/de-CH.json @@ -51,6 +51,8 @@ "confirm": "Bestätige", "confirm-password": "Passwort widerhole", "contains": "Enthaltet", + "regex-match": "Entspricht regulärem Ausdruck", + "regex-not-match": "Entspricht nicht regulärem Ausdruck", "content": "Inhalt", "continue": "Wiiter", "conversion": "Umwandlig", diff --git a/public/intl/messages/de-DE.json b/public/intl/messages/de-DE.json index 0b313fdf3..c059a1a5c 100644 --- a/public/intl/messages/de-DE.json +++ b/public/intl/messages/de-DE.json @@ -51,6 +51,8 @@ "confirm": "Bestätigen", "confirm-password": "Passwort wiederholen", "contains": "Enthält", + "regex-match": "Entspricht regulärem Ausdruck", + "regex-not-match": "Entspricht nicht regulärem Ausdruck", "content": "Inhalt", "continue": "Weiter", "conversion": "Konversion", diff --git a/public/intl/messages/el-GR.json b/public/intl/messages/el-GR.json index 597bbdded..4a0b36330 100644 --- a/public/intl/messages/el-GR.json +++ b/public/intl/messages/el-GR.json @@ -51,6 +51,8 @@ "confirm": "Επιβεβαίωση", "confirm-password": "Επιβεβαίωση κωδικού", "contains": "Περιέχει", + "regex-match": "Ταιριάζει με κανονική έκφραση", + "regex-not-match": "Δεν ταιριάζει με κανονική έκφραση", "content": "Περιεχόμενο", "continue": "Συνέχεια", "conversion": "Μετατροπή", diff --git a/public/intl/messages/en-GB.json b/public/intl/messages/en-GB.json index 741b5c8c3..33d676e73 100644 --- a/public/intl/messages/en-GB.json +++ b/public/intl/messages/en-GB.json @@ -51,6 +51,8 @@ "confirm": "Confirm", "confirm-password": "Confirm password", "contains": "Contains", + "regex-match": "Matches regex", + "regex-not-match": "Does not match regex", "content": "Content", "continue": "Continue", "conversion": "Conversion", diff --git a/public/intl/messages/en-US.json b/public/intl/messages/en-US.json index 67721ef04..9ff141bd7 100644 --- a/public/intl/messages/en-US.json +++ b/public/intl/messages/en-US.json @@ -51,6 +51,8 @@ "confirm": "Confirm", "confirm-password": "Confirm password", "contains": "Contains", + "regex-match": "Matches regex", + "regex-not-match": "Does not match regex", "content": "Content", "continue": "Continue", "conversion": "Conversion", diff --git a/public/intl/messages/es-ES.json b/public/intl/messages/es-ES.json index 41a3fecfc..856d6977a 100644 --- a/public/intl/messages/es-ES.json +++ b/public/intl/messages/es-ES.json @@ -51,6 +51,8 @@ "confirm": "Confirmar", "confirm-password": "Confirmar contraseña", "contains": "Contiene", + "regex-match": "Coincide con expresión regular", + "regex-not-match": "No coincide con expresión regular", "content": "Contenido", "continue": "Continuar", "conversion": "Conversión", diff --git a/public/intl/messages/fa-IR.json b/public/intl/messages/fa-IR.json index 17be3d950..49ba05391 100644 --- a/public/intl/messages/fa-IR.json +++ b/public/intl/messages/fa-IR.json @@ -51,6 +51,8 @@ "confirm": "تأیید", "confirm-password": "تأیید رمز", "contains": "شامل", + "regex-match": "با عبارت منظم مطابقت دارد", + "regex-not-match": "با عبارت منظم مطابقت ندارد", "content": "محتوا", "continue": "ادامه", "conversion": "تبدیل", diff --git a/public/intl/messages/fi-FI.json b/public/intl/messages/fi-FI.json index 4d86d3cc7..7b802535c 100644 --- a/public/intl/messages/fi-FI.json +++ b/public/intl/messages/fi-FI.json @@ -51,6 +51,8 @@ "confirm": "Vahvista", "confirm-password": "Vahvista salasana", "contains": "Sisältää", + "regex-match": "Vastaa säännöllistä lauseketta", + "regex-not-match": "Ei vastaa säännöllistä lauseketta", "content": "Sisältö", "continue": "Jatka", "conversion": "Konversio", diff --git a/public/intl/messages/fo-FO.json b/public/intl/messages/fo-FO.json index 45674c294..c16804397 100644 --- a/public/intl/messages/fo-FO.json +++ b/public/intl/messages/fo-FO.json @@ -51,6 +51,8 @@ "confirm": "Staðfest", "confirm-password": "Vátta loyniorð", "contains": "Inniheldur", + "regex-match": "Samsvarar við regluligan úttrykk", + "regex-not-match": "Samsvarar ikki við regluligan úttrykk", "content": "Innihald", "continue": "Halt fram", "conversion": "Umvending", diff --git a/public/intl/messages/fr-FR.json b/public/intl/messages/fr-FR.json index 11ca722ff..0954df1f2 100644 --- a/public/intl/messages/fr-FR.json +++ b/public/intl/messages/fr-FR.json @@ -51,6 +51,8 @@ "confirm": "Confirmer", "confirm-password": "Confirmation du mot de passe", "contains": "Contient", + "regex-match": "Correspond à l'expression régulière", + "regex-not-match": "Ne correspond pas à l'expression régulière", "content": "Contenu", "continue": "Continuer", "conversion": "Conversion", diff --git a/public/intl/messages/ga-ES.json b/public/intl/messages/ga-ES.json index 34a818a1e..89630c714 100644 --- a/public/intl/messages/ga-ES.json +++ b/public/intl/messages/ga-ES.json @@ -51,6 +51,8 @@ "confirm": "Confirmar", "confirm-password": "Confirmar contrasinal", "contains": "Contén", + "regex-match": "Meaitseálann sé le slonn rialta", + "regex-not-match": "Ní mheaitseálann sé le slonn rialta", "content": "Contido", "continue": "Continuar", "conversion": "Conversión", diff --git a/public/intl/messages/he-IL.json b/public/intl/messages/he-IL.json index 200412414..62c83c35b 100644 --- a/public/intl/messages/he-IL.json +++ b/public/intl/messages/he-IL.json @@ -51,6 +51,8 @@ "confirm": "אשר", "confirm-password": "אישור סיסמה", "contains": "מכיל", + "regex-match": "תואם ביטוי רגולרי", + "regex-not-match": "לא תואם ביטוי רגולרי", "content": "תוכן", "continue": "המשך", "conversion": "המרה", diff --git a/public/intl/messages/hi-IN.json b/public/intl/messages/hi-IN.json index 06ecbf636..c8ac7df42 100644 --- a/public/intl/messages/hi-IN.json +++ b/public/intl/messages/hi-IN.json @@ -51,6 +51,8 @@ "confirm": "पुष्टि करें", "confirm-password": "पासवर्ड की पुष्टि कीजिये", "contains": "शामिल है", + "regex-match": "रेगेक्स से मेल खाता है", + "regex-not-match": "रेगेक्स से मेल नहीं खाता", "content": "सामग्री", "continue": "जारी रखें", "conversion": "रूपांतरण", diff --git a/public/intl/messages/hr-HR.json b/public/intl/messages/hr-HR.json index f048dfda0..c49a9dcf3 100644 --- a/public/intl/messages/hr-HR.json +++ b/public/intl/messages/hr-HR.json @@ -51,6 +51,8 @@ "confirm": "Potvrdi", "confirm-password": "Potvrdi lozinku", "contains": "Sadrži", + "regex-match": "Odgovara regularnom izrazu", + "regex-not-match": "Ne odgovara regularnom izrazu", "content": "Sadržaj", "continue": "Nastavi", "conversion": "Konverzija", diff --git a/public/intl/messages/hu-HU.json b/public/intl/messages/hu-HU.json index 6673ec421..ce071cc5f 100644 --- a/public/intl/messages/hu-HU.json +++ b/public/intl/messages/hu-HU.json @@ -51,6 +51,8 @@ "confirm": "Megerősít", "confirm-password": "Jelszó megerősítése", "contains": "Tartalmazza", + "regex-match": "Illeszkedik a reguláris kifejezésre", + "regex-not-match": "Nem illeszkedik a reguláris kifejezésre", "content": "Tartalom", "continue": "Folytatás", "conversion": "Konverzió", diff --git a/public/intl/messages/id-ID.json b/public/intl/messages/id-ID.json index f0cb7e003..422bc114b 100644 --- a/public/intl/messages/id-ID.json +++ b/public/intl/messages/id-ID.json @@ -51,6 +51,8 @@ "confirm": "Konfirmasi", "confirm-password": "Konfirmasi kata sandi", "contains": "Mengandung", + "regex-match": "Cocok dengan ekspresi reguler", + "regex-not-match": "Tidak cocok dengan ekspresi reguler", "content": "Konten", "continue": "Lanjutkan", "conversion": "Konversi", diff --git a/public/intl/messages/it-IT.json b/public/intl/messages/it-IT.json index fc403768e..00f83c304 100644 --- a/public/intl/messages/it-IT.json +++ b/public/intl/messages/it-IT.json @@ -51,6 +51,8 @@ "confirm": "Conferma", "confirm-password": "Conferma password", "contains": "Contiene", + "regex-match": "Corrisponde all'espressione regolare", + "regex-not-match": "Non corrisponde all'espressione regolare", "content": "Contenuto", "continue": "Continua", "conversion": "Conversione", diff --git a/public/intl/messages/ja-JP.json b/public/intl/messages/ja-JP.json index 900bb0f6c..2c2347ffd 100644 --- a/public/intl/messages/ja-JP.json +++ b/public/intl/messages/ja-JP.json @@ -51,6 +51,8 @@ "confirm": "確認", "confirm-password": "パスワード(確認)", "contains": "コンテンツ", + "regex-match": "正規表現に一致", + "regex-not-match": "正規表現に一致しない", "content": "コンテンツ", "continue": "続ける", "conversion": "コンバージョン", diff --git a/public/intl/messages/km-KH.json b/public/intl/messages/km-KH.json index defab4f86..a8bcb040d 100644 --- a/public/intl/messages/km-KH.json +++ b/public/intl/messages/km-KH.json @@ -51,6 +51,8 @@ "confirm": "បញ្ជាក់", "confirm-password": "បញ្ជាក់ពាក្យសម្ងាត់", "contains": "មាន", + "regex-match": "ត្រូវនឹងកន្សោមធម្មតា", + "regex-not-match": "មិនត្រូវនឹងកន្សោមធម្មតា", "content": "មាតិកា", "continue": "បន្ត", "conversion": "ការបម្លែង", diff --git a/public/intl/messages/ko-KR.json b/public/intl/messages/ko-KR.json index 28348f161..45ce769a8 100644 --- a/public/intl/messages/ko-KR.json +++ b/public/intl/messages/ko-KR.json @@ -51,6 +51,8 @@ "confirm": "확인", "confirm-password": "비밀번호 확인", "contains": "포함", + "regex-match": "정규식과 일치", + "regex-not-match": "정규식과 일치하지 않음", "content": "콘텐츠", "continue": "계속", "conversion": "전환", diff --git a/public/intl/messages/lt-LT.json b/public/intl/messages/lt-LT.json index 0dd0eb24a..9ff1d6a33 100644 --- a/public/intl/messages/lt-LT.json +++ b/public/intl/messages/lt-LT.json @@ -51,6 +51,8 @@ "confirm": "Patvirtinti", "confirm-password": "Patvirtinti slaptažodį", "contains": "Turi", + "regex-match": "Atitinka reguliariąją išraišką", + "regex-not-match": "Neatitinka reguliariosios išraiškos", "content": "Turinys", "continue": "Tęsti", "conversion": "Konversija", diff --git a/public/intl/messages/mn-MN.json b/public/intl/messages/mn-MN.json index 5ebc08c2e..a8e270509 100644 --- a/public/intl/messages/mn-MN.json +++ b/public/intl/messages/mn-MN.json @@ -51,6 +51,8 @@ "confirm": "Батлах", "confirm-password": "Шинэ нууц үгээ давтах", "contains": "Агуулах", + "regex-match": "Регекс-тэй таарна", + "regex-not-match": "Регекс-тэй таарахгүй", "content": "Агуулга", "continue": "Үргэлжлүүлэх", "conversion": "Хөрвүүлэлт", diff --git a/public/intl/messages/ms-MY.json b/public/intl/messages/ms-MY.json index e04a39f2d..760224217 100644 --- a/public/intl/messages/ms-MY.json +++ b/public/intl/messages/ms-MY.json @@ -51,6 +51,8 @@ "confirm": "Sahkan", "confirm-password": "Sahkan kata laluan", "contains": "Mengandungi", + "regex-match": "Sepadan dengan ungkapan biasa", + "regex-not-match": "Tidak sepadan dengan ungkapan biasa", "content": "Kandungan", "continue": "Teruskan", "conversion": "Penukaran", diff --git a/public/intl/messages/my-MM.json b/public/intl/messages/my-MM.json index 5e7a149ef..d31ebdb25 100644 --- a/public/intl/messages/my-MM.json +++ b/public/intl/messages/my-MM.json @@ -51,6 +51,8 @@ "confirm": "အတည်ပြုသည်", "confirm-password": "စကားဝှက်အတည်ပြုသည်", "contains": "ပါဝင်သည်", + "regex-match": "Regex နှင့် ကိုက်ညီသည်", + "regex-not-match": "Regex နှင့် မကိုက်ညီပါ", "content": "အကြောင်းအရာ", "continue": "ဆက်သွားမည်", "conversion": "ပြောင်းလဲမှု", diff --git a/public/intl/messages/nb-NO.json b/public/intl/messages/nb-NO.json index 6a70d7acd..c0007cd3d 100644 --- a/public/intl/messages/nb-NO.json +++ b/public/intl/messages/nb-NO.json @@ -51,6 +51,8 @@ "confirm": "Bekreft", "confirm-password": "Godkjenn passord", "contains": "Inneholder", + "regex-match": "Samsvarer med regulært uttrykk", + "regex-not-match": "Samsvarer ikke med regulært uttrykk", "content": "Innhold", "continue": "Fortsett", "conversion": "Konvertering", diff --git a/public/intl/messages/nl-NL.json b/public/intl/messages/nl-NL.json index 8e77a8818..cf56e8b8d 100644 --- a/public/intl/messages/nl-NL.json +++ b/public/intl/messages/nl-NL.json @@ -51,6 +51,8 @@ "confirm": "Bevestigen", "confirm-password": "Wachtwoord bevestigen", "contains": "Bevat", + "regex-match": "Komt overeen met reguliere expressie", + "regex-not-match": "Komt niet overeen met reguliere expressie", "content": "Inhoud", "continue": "Doorgaan", "conversion": "Conversie", diff --git a/public/intl/messages/pl-PL.json b/public/intl/messages/pl-PL.json index 84d6cce9a..1f486cb55 100644 --- a/public/intl/messages/pl-PL.json +++ b/public/intl/messages/pl-PL.json @@ -51,6 +51,8 @@ "confirm": "Potwierdź", "confirm-password": "Potwierdź hasło", "contains": "Zawiera", + "regex-match": "Pasuje do wyrażenia regularnego", + "regex-not-match": "Nie pasuje do wyrażenia regularnego", "content": "Treść", "continue": "Kontynuuj", "conversion": "Konwersja", diff --git a/public/intl/messages/pt-BR.json b/public/intl/messages/pt-BR.json index 338148f66..282981df4 100644 --- a/public/intl/messages/pt-BR.json +++ b/public/intl/messages/pt-BR.json @@ -51,6 +51,8 @@ "confirm": "Confirmar", "confirm-password": "Confirmar senha", "contains": "Contém", + "regex-match": "Corresponde à expressão regular", + "regex-not-match": "Não corresponde à expressão regular", "content": "Conteúdo", "continue": "Continuar", "conversion": "Conversão", diff --git a/public/intl/messages/pt-PT.json b/public/intl/messages/pt-PT.json index eeb02d2fc..907d8e4f2 100644 --- a/public/intl/messages/pt-PT.json +++ b/public/intl/messages/pt-PT.json @@ -51,6 +51,8 @@ "confirm": "Confirmar", "confirm-password": "Confirmar senha", "contains": "Contém", + "regex-match": "Corresponde à expressão regular", + "regex-not-match": "Não corresponde à expressão regular", "content": "Conteúdo", "continue": "Continuar", "conversion": "Conversão", diff --git a/public/intl/messages/ro-RO.json b/public/intl/messages/ro-RO.json index f8a1457a6..b81556524 100644 --- a/public/intl/messages/ro-RO.json +++ b/public/intl/messages/ro-RO.json @@ -51,6 +51,8 @@ "confirm": "Confirmă", "confirm-password": "Confirmare parolă", "contains": "Conține", + "regex-match": "Se potrivește cu expresia regulată", + "regex-not-match": "Nu se potrivește cu expresia regulată", "content": "Conținut", "continue": "Continuă", "conversion": "Conversie", diff --git a/public/intl/messages/ru-RU.json b/public/intl/messages/ru-RU.json index 5c05decc2..10096a5dc 100644 --- a/public/intl/messages/ru-RU.json +++ b/public/intl/messages/ru-RU.json @@ -51,6 +51,8 @@ "confirm": "Подтвердить", "confirm-password": "Подтвердить пароль", "contains": "Содержит", + "regex-match": "Соответствует регулярному выражению", + "regex-not-match": "Не соответствует регулярному выражению", "content": "Контент", "continue": "Продолжить", "conversion": "Конверсия", diff --git a/public/intl/messages/si-LK.json b/public/intl/messages/si-LK.json index 6d38e9d3a..cb2b6163e 100644 --- a/public/intl/messages/si-LK.json +++ b/public/intl/messages/si-LK.json @@ -51,6 +51,8 @@ "confirm": "තහවුරු කරන්න", "confirm-password": "මුරපදය සත්‍යාපනය කරන්න", "contains": "අඩංගු වේ", + "regex-match": "Regex සමඟ ගැලපේ", + "regex-not-match": "Regex සමඟ නොගැලපේ", "content": "අන්තර්ගතය", "continue": "ඉදිරියට", "conversion": "පරිවර්තනය", diff --git a/public/intl/messages/sk-SK.json b/public/intl/messages/sk-SK.json index 517f5b953..f3424a3ee 100644 --- a/public/intl/messages/sk-SK.json +++ b/public/intl/messages/sk-SK.json @@ -51,6 +51,8 @@ "confirm": "Potvrdiť", "confirm-password": "Potvrdiť heslo", "contains": "Obsahuje", + "regex-match": "Zodpovedá regulárnemu výrazu", + "regex-not-match": "Nezodpovedá regulárnemu výrazu", "content": "Obsah", "continue": "Pokračovať", "conversion": "Konverzia", diff --git a/public/intl/messages/sl-SI.json b/public/intl/messages/sl-SI.json index 85e7ee772..34d9d731f 100644 --- a/public/intl/messages/sl-SI.json +++ b/public/intl/messages/sl-SI.json @@ -51,6 +51,8 @@ "confirm": "Potrdi", "confirm-password": "Potrdi geslo", "contains": "Vsebuje", + "regex-match": "Ustreza regularnemu izrazu", + "regex-not-match": "Ne ustreza regularnemu izrazu", "content": "Vsebina", "continue": "Nadaljuj", "conversion": "Konverzija", diff --git a/public/intl/messages/sv-SE.json b/public/intl/messages/sv-SE.json index edcfb8966..a39bbeb0e 100644 --- a/public/intl/messages/sv-SE.json +++ b/public/intl/messages/sv-SE.json @@ -51,6 +51,8 @@ "confirm": "Bekräfta", "confirm-password": "Bekräfta lösenord", "contains": "Innehåller", + "regex-match": "Matchar reguljärt uttryck", + "regex-not-match": "Matchar inte reguljärt uttryck", "content": "Innehåll", "continue": "Fortsätt", "conversion": "Konvertering", diff --git a/public/intl/messages/ta-IN.json b/public/intl/messages/ta-IN.json index 88c062216..9d7fe5b16 100644 --- a/public/intl/messages/ta-IN.json +++ b/public/intl/messages/ta-IN.json @@ -51,6 +51,8 @@ "confirm": "உறுதிப்படுத்து", "confirm-password": "கடவுச்சொல்லை உறுதிப்படுத்தவும்", "contains": "உள்ளடக்கியது", + "regex-match": "Regex உடன் பொருந்துகிறது", + "regex-not-match": "Regex உடன் பொருந்தாது", "content": "உள்ளடக்கம்", "continue": "தொடர்", "conversion": "மாற்றம்", diff --git a/public/intl/messages/th-TH.json b/public/intl/messages/th-TH.json index 901512031..5af2e6713 100644 --- a/public/intl/messages/th-TH.json +++ b/public/intl/messages/th-TH.json @@ -51,6 +51,8 @@ "confirm": "ยืนยัน", "confirm-password": "ยืนยันรหัสผ่าน", "contains": "มี", + "regex-match": "ตรงกับนิพจน์ทั่วไป", + "regex-not-match": "ไม่ตรงกับนิพจน์ทั่วไป", "content": "เนื้อหา", "continue": "ดำเนินต่อ", "conversion": "การแปลง", diff --git a/public/intl/messages/tr-TR.json b/public/intl/messages/tr-TR.json index e176e0208..667da45bf 100644 --- a/public/intl/messages/tr-TR.json +++ b/public/intl/messages/tr-TR.json @@ -51,6 +51,8 @@ "confirm": "Onayla", "confirm-password": "Parolayı onayla", "contains": "İçeriği", + "regex-match": "Düzenli ifadeyle eşleşir", + "regex-not-match": "Düzenli ifadeyle eşleşmez", "content": "İçerik", "continue": "Devam et", "conversion": "Dönüşüm", diff --git a/public/intl/messages/uk-UA.json b/public/intl/messages/uk-UA.json index 88711253d..5d83a9aa2 100644 --- a/public/intl/messages/uk-UA.json +++ b/public/intl/messages/uk-UA.json @@ -51,6 +51,8 @@ "confirm": "Підтвердити", "confirm-password": "Підтвердити пароль", "contains": "Містить", + "regex-match": "Відповідає регулярному виразу", + "regex-not-match": "Не відповідає регулярному виразу", "content": "Вміст", "continue": "Продовжити", "conversion": "Конверсія", diff --git a/public/intl/messages/ur-PK.json b/public/intl/messages/ur-PK.json index 9bb0b13f9..0e03241fc 100644 --- a/public/intl/messages/ur-PK.json +++ b/public/intl/messages/ur-PK.json @@ -51,6 +51,8 @@ "confirm": "تصدیق کریں", "confirm-password": "پاس ورڈ کی تصدیق کریں", "contains": "شامل ہے", + "regex-match": "ریجیکس سے مطابقت رکھتا ہے", + "regex-not-match": "ریجیکس سے مطابقت نہیں رکھتا", "content": "مواد", "continue": "جاری رکھیں", "conversion": "تبدیلی", diff --git a/public/intl/messages/uz-UZ.json b/public/intl/messages/uz-UZ.json index cecaff713..b2b60d5b7 100644 --- a/public/intl/messages/uz-UZ.json +++ b/public/intl/messages/uz-UZ.json @@ -51,6 +51,8 @@ "confirm": "Tasdiqlash", "confirm-password": "Parolni tasdiqlash", "contains": "Oʻz ichiga oladi", + "regex-match": "Muntazam ifodaga mos keladi", + "regex-not-match": "Muntazam ifodaga mos kelmaydi", "content": "Kontent", "continue": "Davom etish", "conversion": "Konversiya", diff --git a/public/intl/messages/vi-VN.json b/public/intl/messages/vi-VN.json index f97601a41..eed6aa8dc 100644 --- a/public/intl/messages/vi-VN.json +++ b/public/intl/messages/vi-VN.json @@ -51,6 +51,8 @@ "confirm": "Xác nhận", "confirm-password": "Xác nhận mật khẩu", "contains": "Chứa", + "regex-match": "Khớp với biểu thức chính quy", + "regex-not-match": "Không khớp với biểu thức chính quy", "content": "Nội dung", "continue": "Tiếp tục", "conversion": "Chuyển đổi", diff --git a/public/intl/messages/zh-CN.json b/public/intl/messages/zh-CN.json index d16f5b858..8f1469a3a 100644 --- a/public/intl/messages/zh-CN.json +++ b/public/intl/messages/zh-CN.json @@ -51,6 +51,8 @@ "confirm": "确认", "confirm-password": "确认密码", "contains": "包含", + "regex-match": "匹配正则表达式", + "regex-not-match": "不匹配正则表达式", "content": "内容", "continue": "继续", "conversion": "转化", diff --git a/public/intl/messages/zh-TW.json b/public/intl/messages/zh-TW.json index 2e555a6d0..57cd293c1 100644 --- a/public/intl/messages/zh-TW.json +++ b/public/intl/messages/zh-TW.json @@ -51,6 +51,8 @@ "confirm": "確認", "confirm-password": "確認密碼", "contains": "包含", + "regex-match": "符合正則表達式", + "regex-not-match": "不符合正則表達式", "content": "內容", "continue": "繼續", "conversion": "轉換", diff --git a/src/components/hooks/useFilters.ts b/src/components/hooks/useFilters.ts index 0dd9a00bb..96397ea4d 100644 --- a/src/components/hooks/useFilters.ts +++ b/src/components/hooks/useFilters.ts @@ -14,6 +14,8 @@ export function useFilters() { { name: 'neq', type: 'string', label: t(labels.isNot) }, { name: 'c', type: 'string', label: t(labels.contains) }, { name: 'dnc', type: 'string', label: t(labels.doesNotContain) }, + { name: 're', type: 'string', label: t(labels.regexMatch) }, + { name: 'nre', type: 'string', label: t(labels.regexNotMatch) }, { name: 'i', type: 'array', label: t(labels.includes) }, { name: 'dni', type: 'array', label: t(labels.doesNotInclude) }, { name: 't', type: 'boolean', label: t(labels.isTrue) }, @@ -36,6 +38,8 @@ export function useFilters() { [OPERATORS.notSet]: t(labels.isNotSet), [OPERATORS.contains]: t(labels.contains), [OPERATORS.doesNotContain]: t(labels.doesNotContain), + [OPERATORS.regex]: t(labels.regexMatch), + [OPERATORS.notRegex]: t(labels.regexNotMatch), [OPERATORS.true]: t(labels.true), [OPERATORS.false]: t(labels.false), [OPERATORS.greaterThan]: t(labels.greaterThan), @@ -47,7 +51,14 @@ export function useFilters() { }; const typeFilters = { - string: [OPERATORS.equals, OPERATORS.notEquals, OPERATORS.contains, OPERATORS.doesNotContain], + string: [ + OPERATORS.equals, + OPERATORS.notEquals, + OPERATORS.contains, + OPERATORS.doesNotContain, + OPERATORS.regex, + OPERATORS.notRegex, + ], array: [OPERATORS.contains, OPERATORS.doesNotContain], boolean: [OPERATORS.true, OPERATORS.false], number: [ diff --git a/src/components/messages.ts b/src/components/messages.ts index b8b4c0161..a0c6f9172 100644 --- a/src/components/messages.ts +++ b/src/components/messages.ts @@ -198,6 +198,8 @@ export const labels: Record = { lessThanEquals: 'label.less-than-equals', contains: 'label.contains', doesNotContain: 'label.does-not-contain', + regexMatch: 'label.regex-match', + regexNotMatch: 'label.regex-not-match', includes: 'label.includes', doesNotInclude: 'label.does-not-include', before: 'label.before', diff --git a/src/lib/clickhouse.ts b/src/lib/clickhouse.ts index 29118a6ba..3620a04ce 100644 --- a/src/lib/clickhouse.ts +++ b/src/lib/clickhouse.ts @@ -82,6 +82,10 @@ function mapFilter(column: string, operator: string, name: string, type: string return `positionCaseInsensitive(${column}, ${value}) > 0`; case OPERATORS.doesNotContain: return `positionCaseInsensitive(${column}, ${value}) = 0`; + case OPERATORS.regex: + return `match(${column}, ${value})`; + case OPERATORS.notRegex: + return `not match(${column}, ${value})`; default: return ''; } diff --git a/src/lib/constants.ts b/src/lib/constants.ts index fb492e03b..8079a2cc8 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -129,6 +129,8 @@ export const OPERATORS = { notSet: 'ns', contains: 'c', doesNotContain: 'dnc', + regex: 're', + notRegex: 'nre', true: 't', false: 'f', greaterThan: 'gt', diff --git a/src/lib/params.ts b/src/lib/params.ts index d7599216a..bbb52eb3b 100644 --- a/src/lib/params.ts +++ b/src/lib/params.ts @@ -31,7 +31,12 @@ export function isEqualsOperator(operator: any) { } export function isSearchOperator(operator: any) { - return [OPERATORS.contains, OPERATORS.doesNotContain].includes(operator); + return [ + OPERATORS.contains, + OPERATORS.doesNotContain, + OPERATORS.regex, + OPERATORS.notRegex, + ].includes(operator); } export function filtersObjectToArray(filters: QueryFilters, options: QueryOptions = {}): Filter[] { diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts index 1c9e9c703..b8cb82c4d 100644 --- a/src/lib/prisma.ts +++ b/src/lib/prisma.ts @@ -89,6 +89,10 @@ function mapFilter(column: string, operator: string, name: string, type: string return `${table}.${column} ilike ${value}`; case OPERATORS.doesNotContain: return `${table}.${column} not ilike ${value}`; + case OPERATORS.regex: + return `${table}.${column} ~ ${value}`; + case OPERATORS.notRegex: + return `${table}.${column} !~ ${value}`; default: return ''; } diff --git a/src/lib/schema.ts b/src/lib/schema.ts index ef0ce67bb..8693d30bc 100644 --- a/src/lib/schema.ts +++ b/src/lib/schema.ts @@ -143,6 +143,8 @@ export const operatorParam = z.enum([ 'ns', 'c', 'dnc', + 're', + 'nre', 't', 'f', 'gt',