Hey @Chr1sG
I think there are 2 potential scenarios, and each has valid use cases.
Scenario 1 - each project (and its children) are standalone and unrelated to other entities in the same space, including their respective children and grandchildren. The underlying assumption in most of my use cases is that, within the same space, each top-level entity (e.g. Meeting) is copied for the sole purpose of grouping similar projects in the same space.
So the result wouold be: Meeting C ↔ Topic 5, Topic 6, Topic 7
Pros
- relatively easy to implement
Cons
- lower level M:M entities cannot be shared across meetings, Projects, etc.
Scenario 2 - children and grandchildren (e.g. Topics and Meeting Rooms) are in shared across top-level entities (e.g. Meetings). Most enterprise-level use cases would be biased toward this scenario.
And clearly, in this scenario, the result would be: Meeting C ↔ Topic 1, Topic 2, Topic 3
Pros
- supports coplex use cases
Cons
- possible unintended consequences
Pre-coffee Random Thoughts
I’m fairly confident that, within a space, the scenarios above are fixed - that is, when copying a Meeting-Topic relationship, a new Topic will always be created, or not. But it would be consistent within a space.
Maybe I’m over-engineering a possible solution, but why not define a parameter in the Advanced section of Relationships - call it Deep Copy Inheritance Bias.
And for each M:M relationship, the schema designer could set the Inheritance Bias for alll entities in the same space. A deep copy function would interpret the Inheritance Bias to produce the results in the two scenarios above. You could even mix and match, such that, within a space, some M;M relationships would support creating new entities and others would not.
I think this is consistent with the approach Fibery uses for other Relationship properties.
Pros (again, pre-coffee)
- I think this approach would cover most use cases.
Cons
- once set, the Inheritiance Bias would probably have to be read-only. But again, Fibery has this constraint when converting a 1:M relationship to M:M.
I imagine this will not pop to the top of your backlog anytime soon, so I may try modifying my deep copy. In lieu of a scema Inheritance Bias, I can easily just add a constant in the init section.
I hope this addresses your questions.
Cheers