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; } }