upend/webui/src/util/search.ts

40 lines
1 KiB
TypeScript

import type { PutInput } from "upend/types";
import { query as queryFn } from "../lib/entity";
import api from "../lib/api";
import { ATTR_LABEL } from "upend/constants";
export function baseSearch(query: string) {
return queryFn(
`(or (matches (contains "${query}") ? ?) (matches ? (contains "${query}") ?) (matches ? ? (contains "${query}")))`,
);
}
export function baseSearchOnce(query: string) {
return api.query(
`(or (matches (contains "${query}") ? ?) (matches ? (contains "${query}") ?) (matches ? ? (contains "${query}")))`,
);
}
export async function createLabelled(label: string) {
let body: PutInput;
if (label.match("^[\\w]+://[\\w]")) {
body = {
entity: {
t: "Url",
c: label,
},
};
const [_, entity] = await api.putEntry(body);
return entity;
} else {
const [_, entity] = await api.putEntry({
entity: {
t: "Uuid",
},
});
await api.putEntityAttribute(entity, ATTR_LABEL, { t: "String", c: label });
return entity;
}
}