import { EntitiesSchemas, RelationDefinition, Schema, } 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: { type: "String", required: true }, latitude: { type: "Float" }, longitude: { type: "Float" }, postal_address: { type: "String" }, }, City: { name: { type: "String", required: true }, zip_code: { type: "Int" }, }, Person: { name: { type: "String" }, email: { type: "String" }, }, }, relationsDefinitions: [ { name: "is_in", subject: "Museum", object: "City", cardinality: "1*", }, { name: "director", subject: "Museum", object: "Person", cardinality: "**", }, ], });