chore: update tag search

pull/3966/head
Steven 5 months ago
parent 171a89564e
commit 8b444be6ca

@ -92,7 +92,7 @@ func (d *DB) ListMemos(ctx context.Context, find *store.FindMemo) ([]*store.Memo
}
if len(v.TagSearch) != 0 {
for _, tag := range v.TagSearch {
where, args = append(where, "JSON_CONTAINS(JSON_EXTRACT(`memo`.`payload`, '$.property.tags'), ?)"), append(args, fmt.Sprintf(`"%s"`, tag))
where, args = append(where, "(JSON_CONTAINS(JSON_EXTRACT(`memo`.`payload`, '$.property.tags'), ?) OR JSON_CONTAINS(JSON_EXTRACT(`memo`.`payload`, '$.property.tags'), ?))"), append(args, fmt.Sprintf(`"%s"`, tag), fmt.Sprintf(`"%s/`, tag))
}
}
if v.HasLink {

@ -83,7 +83,7 @@ func (d *DB) ListMemos(ctx context.Context, find *store.FindMemo) ([]*store.Memo
}
if len(v.TagSearch) != 0 {
for _, tag := range v.TagSearch {
where, args = append(where, "memo.payload->'property'->'tags' @> "+placeholder(len(args)+1)), append(args, fmt.Sprintf(`["%s"]`, tag))
where, args = append(where, "EXISTS (SELECT 1 FROM jsonb_array_elements(memo.payload->'property'->'tags') AS tag WHERE tag::text = "+placeholder(len(args)+1)+" OR tag::text LIKE "+placeholder(len(args)+2)+")"), append(args, fmt.Sprintf(`"%s"`, tag), fmt.Sprintf(`"%s/%%"`, tag))
}
}
if v.HasLink {

@ -84,7 +84,7 @@ func (d *DB) ListMemos(ctx context.Context, find *store.FindMemo) ([]*store.Memo
}
if len(v.TagSearch) != 0 {
for _, tag := range v.TagSearch {
where, args = append(where, "JSON_EXTRACT(`memo`.`payload`, '$.property.tags') LIKE ?"), append(args, fmt.Sprintf(`%%"%s"%%`, tag))
where, args = append(where, "(JSON_EXTRACT(`memo`.`payload`, '$.property.tags') LIKE ? OR JSON_EXTRACT(`memo`.`payload`, '$.property.tags') LIKE ?)"), append(args, fmt.Sprintf(`%%"%s"%%`, tag), fmt.Sprintf(`%%"%s/%%`, tag))
}
}
if v.HasLink {

@ -33,12 +33,12 @@ const PagedMemoList = (props: Props) => {
setState((state) => ({ ...state, isRequesting }));
};
const fetchMoreMemos = async () => {
const fetchMoreMemos = async (nextPageToken: string) => {
setIsRequesting(true);
const response = await memoStore.fetchMemos({
filter: props.filter || "",
pageSize: props.pageSize || DEFAULT_LIST_MEMOS_PAGE_SIZE,
pageToken: state.nextPageToken,
pageToken: nextPageToken,
});
setState(() => ({
isRequesting: false,
@ -49,7 +49,7 @@ const PagedMemoList = (props: Props) => {
useEffect(() => {
memoList.reset();
setState((state) => ({ ...state, nextPageToken: "" }));
fetchMoreMemos();
fetchMoreMemos("");
}, [props.filter, props.pageSize]);
return (
@ -67,7 +67,7 @@ const PagedMemoList = (props: Props) => {
color="neutral"
loading={state.isRequesting}
endDecorator={<ArrowDownIcon className="w-4 h-auto" />}
onClick={() => fetchMoreMemos()}
onClick={() => fetchMoreMemos(state.nextPageToken)}
>
{t("memo.load-more")}
</Button>

Loading…
Cancel
Save