import { EntitiesSchemas, RelationDefinition, Schema, yams, } from "ra-cubicweb/dist/Schema"; function makeSchema< ESchemas extends EntitiesSchemas<string>, EntityTypes extends Extract<keyof ESchemas, string>, RDefs extends RelationDefinition<EntityTypes>[] >(schema: { entities: ESchemas; relationsDefinitions: RDefs; }): [Schema<EntityTypes, ESchemas, RDefs>, EntityTypes] { return [schema, "" as EntityTypes]; } export const [schema, types] = makeSchema({ entities: { Museum: { name: yams.String(), latitude: yams.Float(), longitude: yams.Float(), postal_address: yams.String(), }, City: { name: yams.String(), zip_code: yams.Int(), }, Person: { name: yams.String(), email: yams.String(), }, }, relationsDefinitions: [ { name: "is_in", subject: "Museum", object: "City", cardinality: "1*", }, { name: "director", subject: "Museum", object: "Person", cardinality: "**", }, ], });