fix search has many
This commit is contained in:
parent
f78635de06
commit
944324ffef
|
|
@ -12,42 +12,7 @@ export const parseSingleFilter = (filter: FilterLocal, fields: GFCol[]) => {
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case "search-all":
|
case "search-all":
|
||||||
fields
|
searchAll(fields, OR, value);
|
||||||
.filter(
|
|
||||||
(e) =>
|
|
||||||
e.type === "varchar" ||
|
|
||||||
e.type === "text" ||
|
|
||||||
e.type === "string" ||
|
|
||||||
e.type === "has-one"
|
|
||||||
)
|
|
||||||
.map((e) => {
|
|
||||||
if (e.type === "has-one") {
|
|
||||||
for (const f of e.relation?.fields || []) {
|
|
||||||
if (
|
|
||||||
!f.is_pk &&
|
|
||||||
(f.type === "varchar" ||
|
|
||||||
f.type === "text" ||
|
|
||||||
f.type === "string")
|
|
||||||
) {
|
|
||||||
OR.push({
|
|
||||||
[e.name]: {
|
|
||||||
[f.name]: {
|
|
||||||
contains: "%" + value + "%",
|
|
||||||
mode: "insensitive",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
OR.push({
|
|
||||||
[e.name]: {
|
|
||||||
contains: "%" + value + "%",
|
|
||||||
mode: "insensitive",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
break;
|
||||||
case "text":
|
case "text":
|
||||||
{
|
{
|
||||||
|
|
@ -138,3 +103,47 @@ export const parseSingleFilter = (filter: FilterLocal, fields: GFCol[]) => {
|
||||||
if (OR.length > 0) where.OR = OR;
|
if (OR.length > 0) where.OR = OR;
|
||||||
return where;
|
return where;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const searchAll = (fields: GFCol[], OR: any[], value: any) => {
|
||||||
|
fields
|
||||||
|
.filter(
|
||||||
|
(e) =>
|
||||||
|
e.type === "varchar" ||
|
||||||
|
e.type === "text" ||
|
||||||
|
e.type === "string" ||
|
||||||
|
e.type === "has-one" ||
|
||||||
|
e.type === "has-many"
|
||||||
|
)
|
||||||
|
.map((e) => {
|
||||||
|
if (e.type === "has-one") {
|
||||||
|
for (const f of e.relation?.fields || []) {
|
||||||
|
if (
|
||||||
|
!f.is_pk &&
|
||||||
|
(f.type === "varchar" || f.type === "text" || f.type === "string")
|
||||||
|
) {
|
||||||
|
OR.push({
|
||||||
|
[e.name]: {
|
||||||
|
[f.name]: {
|
||||||
|
contains: "%" + value + "%",
|
||||||
|
mode: "insensitive",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (e.type === "has-many") {
|
||||||
|
const MANY_OR: any[] = [];
|
||||||
|
if (e.relation) {
|
||||||
|
searchAll(e.relation.fields, MANY_OR, value);
|
||||||
|
OR.push({ [e.name]: { some: { OR: MANY_OR } } });
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
OR.push({
|
||||||
|
[e.name]: {
|
||||||
|
contains: "%" + value + "%",
|
||||||
|
mode: "insensitive",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -22,11 +22,9 @@ export const BaseForm = <T extends Record<string, any>>(
|
||||||
}
|
}
|
||||||
|
|
||||||
form.submit = useCallback(async () => {
|
form.submit = useCallback(async () => {
|
||||||
console.log("CEK");
|
|
||||||
if (form.status === "ready") {
|
if (form.status === "ready") {
|
||||||
form.status = "submitting";
|
form.status = "submitting";
|
||||||
form.render();
|
form.render();
|
||||||
console.log("CEK");
|
|
||||||
const result = await on_submit?.(form);
|
const result = await on_submit?.(form);
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue