Skip to content

Commit 452f2dc

Browse files
committed
Switch ethnologue filters to partial string matches
1 parent 5ea75d6 commit 452f2dc

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

src/components/language/language.repository.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -304,9 +304,9 @@ export const languageFilters = filter.define(() => LanguageFilters, {
304304
});
305305

306306
const ethnologueFilters = filter.define(() => EthnologueLanguageFilters, {
307-
code: filter.propVal(),
308-
provisionalCode: filter.propVal(),
309-
name: filter.propVal(),
307+
code: filter.propPartialVal(),
308+
provisionalCode: filter.propPartialVal(),
309+
name: filter.propPartialVal(),
310310
});
311311

312312
const isPresetInventory = (query: Query) =>

src/core/database/query/filters.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
node,
77
not,
88
Query,
9+
regexp,
910
relation,
1011
} from 'cypher-query-builder';
1112
import { PatternCollection } from 'cypher-query-builder/dist/typings/clauses/pattern-clause';
@@ -110,6 +111,23 @@ export const propVal =
110111
return { [prop ?? key]: cond };
111112
};
112113

114+
export const propPartialVal =
115+
<T, K extends ConditionalKeys<Required<T>, string>>(
116+
prop?: string,
117+
): Builder<T, K> =>
118+
({ key, value: v, query }) => {
119+
const value = v as string; // don't know why TS can't figure this out
120+
if (!value.trim()) {
121+
return undefined;
122+
}
123+
query.match([
124+
node('node'),
125+
relation('out', '', prop ?? key, ACTIVE),
126+
node(prop ?? key, 'Property'),
127+
]);
128+
return { [prop ?? key]: { value: regexp(`.*${value}.*`, true) } };
129+
};
130+
113131
export const stringListProp =
114132
<T, K extends ConditionalKeys<Required<T>, readonly string[]>>(
115133
prop?: string,

0 commit comments

Comments
 (0)