# HG changeset patch
# User Simon Chabot <simon.chabot@logilab.fr>
# Date 1713794784 -7200
#      Mon Apr 22 16:06:24 2024 +0200
# Node ID f91e0489b4d11a8e919c48f1fefcc076e6d321ec
# Parent  9057157aa498388f10408409e37233a8c94169d8
feat(schema): add `composite` to some relations linking dataset/rq task etc

related: #83

diff --git a/cubicweb_rodolf/migration/0.5.0_Any.py b/cubicweb_rodolf/migration/0.5.0_Any.py
new file mode 100644
--- /dev/null
+++ b/cubicweb_rodolf/migration/0.5.0_Any.py
@@ -0,0 +1,1 @@
+sync_schema_prop_perms()
diff --git a/cubicweb_rodolf/schema.py b/cubicweb_rodolf/schema.py
--- a/cubicweb_rodolf/schema.py
+++ b/cubicweb_rodolf/schema.py
@@ -32,9 +32,13 @@
     virtuoso_url = String(required=True)
     virtuoso_user = String(required=True, default="dba")
     virtuoso_password = String(required=True)
-    ontology_file = SubjectRelation("File", cardinality="??", inlined=True)
-    shacl_files = SubjectRelation("File", cardinality="**")
-    import_recipes = SubjectRelation("ImportRecipe", cardinality="*?")
+    ontology_file = SubjectRelation(
+        "File", cardinality="??", inlined=True, composite="subject"
+    )
+    shacl_files = SubjectRelation("File", cardinality="**", composite="subject")
+    import_recipes = SubjectRelation(
+        "ImportRecipe", cardinality="*?", composite="subject"
+    )
     activated = Boolean(required=True, default=True)
 
 
@@ -56,7 +60,7 @@
 
 class ImportRecipe(EntityType):
     name = String(required=True)
-    dataservice = SubjectRelation("DataService", cardinality="1*")
+    dataservice = SubjectRelation("DataService", cardinality="1*", composite="object")
     graph_uri = String()
     process_type = String(
         required=True,
@@ -66,13 +70,25 @@
 
 
 class ImportProcess(WorkflowableEntityType):
-    import_recipe = SubjectRelation("ImportRecipe", cardinality="1*", inlined=True)
+    import_recipe = SubjectRelation(
+        "ImportRecipe", cardinality="1*", inlined=True, composite="object"
+    )
     import_procedure = SubjectRelation(
-        "ImportProcedure", cardinality="1*", inlined=True
+        "ImportProcedure", cardinality="1*", inlined=True, composite="object"
+    )
+    rq_task = SubjectRelation(
+        "RqTask", cardinality="11", inlined=True, composite="subject"
     )
-    rq_task = SubjectRelation("RqTask", cardinality="11", inlined=True)
-    has_input_dataset = SubjectRelation("File", cardinality="??", inlined=True)
-    has_output_dataset = SubjectRelation("File", cardinality="??", inlined=True)
-    import_report = SubjectRelation("File", cardinality="??", inlined=True)
+    has_input_dataset = SubjectRelation(
+        "File", cardinality="??", inlined=True, composite="subject"
+    )
+    has_output_dataset = SubjectRelation(
+        "File", cardinality="??", inlined=True, composite="subject"
+    )
+    import_report = SubjectRelation(
+        "File", cardinality="??", inlined=True, composite="subject"
+    )
     shacl_valid = Boolean()
-    shacl_report = SubjectRelation("File", cardinality="??", inlined=True)
+    shacl_report = SubjectRelation(
+        "File", cardinality="??", inlined=True, composite="subject"
+    )