28 lines
721 B
TypeScript
28 lines
721 B
TypeScript
import type { FKFieldConfig, ResourceRelationship } from "../types";
|
|
|
|
export function extractRelationships(schema: any, schemas: Record<string, any>): ResourceRelationship[] {
|
|
const props = schema.properties ?? {};
|
|
const rels: ResourceRelationship[] = [];
|
|
|
|
for (const [name, _raw] of Object.entries(props)) {
|
|
const prop = _raw as any;
|
|
if (!prop || typeof prop !== "object") continue;
|
|
|
|
if (!prop["x-fk"]) continue;
|
|
|
|
const fkResource = prop["x-fk"].resource as string;
|
|
const prefetch = prop["x-fk"].prefetch ?? false;
|
|
|
|
rels.push({
|
|
fieldName: name,
|
|
config: {
|
|
resource: fkResource,
|
|
prefetch,
|
|
},
|
|
targetSchemaName: fkResource,
|
|
});
|
|
}
|
|
|
|
return rels;
|
|
}
|