# HG changeset patch
# User François FERRY <francois.ferry@logilab.fr>
# Date 1614091367 -3600
#      Tue Feb 23 15:42:47 2021 +0100
# Node ID 1e7db076f47c67a3419447e79fa87289a27c1d9b
# Parent  cf2cc4c855f94cf386c76051de0836568aaf988c
feat: allow to have a list of targets as subject or object of relation.

diff --git a/packages/demo/src/schema.ts b/packages/demo/src/schema.ts
--- a/packages/demo/src/schema.ts
+++ b/packages/demo/src/schema.ts
@@ -29,13 +29,13 @@
   },
   {
     is_in: {
-      subject: "Museum",
-      object: "City",
+      subject: ["Museum"],
+      object: ["City"],
       cardinality: "1*",
     },
     director: {
-      subject: "Museum",
-      object: "Person",
+      subject: ["Museum"],
+      object: ["Person"],
       cardinality: "**",
     },
   }
diff --git a/packages/ra-cubicweb/src/Schema.ts b/packages/ra-cubicweb/src/Schema.ts
--- a/packages/ra-cubicweb/src/Schema.ts
+++ b/packages/ra-cubicweb/src/Schema.ts
@@ -15,8 +15,8 @@
   string,
   {
     cardinality: CardinalityPair;
-    subject: keyof E;
-    object: keyof E;
+    subject: Array<keyof E>;
+    object: Array<keyof E>;
   }
 >;
 
diff --git a/packages/ra-cubicweb/src/index.ts b/packages/ra-cubicweb/src/index.ts
--- a/packages/ra-cubicweb/src/index.ts
+++ b/packages/ra-cubicweb/src/index.ts
@@ -91,15 +91,12 @@
       const subjectRelations = Object.fromEntries(
         Object.entries(schema.relationships).filter(
           ([_relationName, definition]: [string, S["relationships"][string]]) =>
-            definition.subject === resource
+            definition.subject.includes(resource)
         )
       );
       for (const relationName in subjectRelations) {
-        const definition: S["relationships"][string] =
-          subjectRelations[relationName];
-
         const result = await rqlClient.queryRows(
-          `Any TARGET Where TARGET is ${definition.object},X ${relationName} TARGET, X eid ${params.id}`
+          `Any TARGET Where X ${relationName} TARGET, X eid ${params.id}`
         );
         if (result.length !== 0) {
           entity[relationName] = result.map((row) => row[0]);