fix
This commit is contained in:
parent
fa44a5b8d8
commit
c35c4c41f8
|
|
@ -1,7 +1,6 @@
|
|||
import { createId } from "@paralleldrive/cuid2";
|
||||
import { GFCol, createItem, formatName } from "../utils";
|
||||
import { gen_relation } from "../gen_relation/gen_relation";
|
||||
import { FMLocal } from "@/comps/form/typings";
|
||||
import { GFCol, createItem, formatName } from "../utils";
|
||||
export const newItem = (component: {
|
||||
id: string;
|
||||
props: Record<string, string>;
|
||||
|
|
@ -48,7 +47,19 @@ export const newField = async (arg: GFCol, opt: { parent_table: string }) => {
|
|||
} else if (["has-many", "has-one"].includes(arg.type) && arg.relation) {
|
||||
type = "relation";
|
||||
const value = JSON.stringify(
|
||||
arg.relation.fields.map((e) => JSON.stringify(e))
|
||||
arg.relation.fields.map((e) => {
|
||||
if (e.relation) {
|
||||
const rel = { ...e };
|
||||
const fields = e.relation.fields;
|
||||
delete (e as any).relation.fields;
|
||||
return {
|
||||
value: JSON.stringify(e),
|
||||
checked: fields.map((e) => JSON.stringify(e)),
|
||||
};
|
||||
} else {
|
||||
return JSON.stringify(e);
|
||||
}
|
||||
})
|
||||
);
|
||||
const item = createItem({
|
||||
component: {
|
||||
|
|
|
|||
|
|
@ -93,14 +93,15 @@ const genHasMany = async (
|
|||
(await gen_prop_fields(arg.parent_table)).map((e: any) => e.value)
|
||||
);
|
||||
const pk = defs.find((e) => e.is_pk);
|
||||
|
||||
if (pk) {
|
||||
console.log(arg.parent_table);
|
||||
result["has_many_list"] = data["has_many_list"];
|
||||
result["has_many_list"].value = `\
|
||||
async () => {
|
||||
const result: { value: string; label: string }[] = [];
|
||||
const list = await db.${arg.parent_table}.findMany({
|
||||
select: {
|
||||
${pk}: true,
|
||||
${pk?.name}: true,
|
||||
},
|
||||
where: { },
|
||||
});
|
||||
|
|
@ -108,6 +109,7 @@ async () => {
|
|||
}`;
|
||||
code.has_many_list = result["has_many_list"].value;
|
||||
}
|
||||
}
|
||||
|
||||
if (data["label"]) {
|
||||
result["label"] = data["label"];
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
const cache = {} as Record<string, any>;
|
||||
const single = {} as Record<
|
||||
string,
|
||||
{
|
||||
|
|
@ -40,8 +39,6 @@ const load_single = async (table: string) => {
|
|||
};
|
||||
|
||||
export const gen_prop_fields = async (gen_table: string) => {
|
||||
if (cache[gen_table]) return cache[gen_table];
|
||||
|
||||
const result: {
|
||||
label: string;
|
||||
value: string;
|
||||
|
|
@ -68,6 +65,8 @@ export const gen_prop_fields = async (gen_table: string) => {
|
|||
let options = [];
|
||||
const to = v.to;
|
||||
const from = v.from;
|
||||
const parent_name = k;
|
||||
const parent_rel = v;
|
||||
const { cols, rels } = await load_single(v.to.table);
|
||||
if (cols) {
|
||||
for (const [k, v] of Object.entries(cols)) {
|
||||
|
|
@ -111,6 +110,9 @@ export const gen_prop_fields = async (gen_table: string) => {
|
|||
}),
|
||||
label: k,
|
||||
options: sub_opt,
|
||||
checked:
|
||||
parent_rel.type === "has-many" &&
|
||||
parent_rel.from.table === v.to.table,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -130,57 +132,3 @@ export const gen_prop_fields = async (gen_table: string) => {
|
|||
|
||||
return result;
|
||||
};
|
||||
|
||||
// const result: {
|
||||
// label: string;
|
||||
// value: string;
|
||||
// options?: any[];
|
||||
// checked?: boolean;
|
||||
// }[] = [];
|
||||
// const fields = await db._schema.columns(gen_table);
|
||||
// for (const [k, v] of Object.entries(fields)) {
|
||||
// result.push({
|
||||
// value: JSON.stringify({
|
||||
// name: k,
|
||||
// is_pk: v.is_pk,
|
||||
// type: v.db_type || v.type,
|
||||
// optional: v.optional,
|
||||
// }),
|
||||
// label: k,
|
||||
// checked: v.is_pk,
|
||||
// });
|
||||
// }
|
||||
// const rels = await db._schema.rels(gen_table);
|
||||
// for (const [k, v] of Object.entries(rels)) {
|
||||
// let options = [];
|
||||
// const to = v.to;
|
||||
// const from = v.from;
|
||||
// const fields = await db._schema.columns(v.to.table);
|
||||
// for (const [k, v] of Object.entries(fields)) {
|
||||
// options.push({
|
||||
// value: JSON.stringify({
|
||||
// name: k,
|
||||
// is_pk: v.is_pk,
|
||||
// type: v.db_type || v.type,
|
||||
// optional: v.optional,
|
||||
// }),
|
||||
// label: k,
|
||||
// checked: v.is_pk,
|
||||
// });
|
||||
// }
|
||||
// result.push({
|
||||
// value: JSON.stringify({
|
||||
// name: k,
|
||||
// is_pk: false,
|
||||
// type: v.type,
|
||||
// optional: true,
|
||||
// relation: { from, to },
|
||||
// }),
|
||||
// label: k,
|
||||
// options,
|
||||
// });
|
||||
// }
|
||||
|
||||
// if (!cache[gen_table]) {
|
||||
// cache[gen_table] = result;
|
||||
// }
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ export const parseGenField = (fields: PropOptRaw) => {
|
|||
} catch (e) {}
|
||||
} else {
|
||||
const field = JSON.parse(f.value);
|
||||
field.relation.fields = f.checked.map((e) => JSON.parse(e));
|
||||
field.relation.fields = parseGenField(f.checked);
|
||||
result.push(field);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue