|
1 | | -import { ER, Rel } from "../misc/interfaces" |
| 1 | +import { Conn, ER, Rel } from "../misc/interfaces" |
2 | 2 | import { getTwoByTwoCombinations, generateMultivaluedAttributeTriggers, |
3 | 3 | generateAllAttributes, getNameForAEntRelationship, getNameForNAryRelationship } from "./helpers" |
4 | 4 | import { generateStrictModeTriggerForNodes, generateDisjointednessTrigger, |
5 | 5 | generateCompletenessTrigger, generateChildrenTrigger, |
6 | 6 | generatePropertyExistenceConstraints, generateStrictModeTriggerForRelationships, |
7 | 7 | generateCompositeAttributeTriggers, generateUnionTriggerForParent, |
8 | | - generateUnionTriggerForChildren, generateAssociativeEntityRelationshipControl } from "./statements" |
| 8 | + generateUnionTriggerForChildren, generateAssociativeEntityRelationshipControl, generateWeakEntityTrigger } from "./statements" |
9 | 9 | import { generateRelationship } from "./relationships" |
10 | 10 | import { getRelNameForCompAttribute, getEntNameForCompAttribute } from "../../client/utils/helpers" |
11 | 11 | import { lower } from "../../shared/removeAccents" |
@@ -55,6 +55,12 @@ const erToCypher = (er: string, strictMode = true): string => { |
55 | 55 | if (relationship.entities.length == 2) { // Simple relationship, mapped to a Neo4j relationship. |
56 | 56 | schema += generateRelationship(relationship) // This includes "generatePropertyExistenceConstraints". |
57 | 57 |
|
| 58 | + // Check whether a weak entity exists. |
| 59 | + const weakEntity: Conn | null = relationship.entities.find(conn => conn.weak == true) ?? null |
| 60 | + |
| 61 | + if (weakEntity !== null) { |
| 62 | + schema += generateWeakEntityTrigger(weakEntity, relationship) |
| 63 | + } |
58 | 64 | } |
59 | 65 | else if (relationship.entities.length > 2) { // Complex relationship, mapped to its own Neo4j node. |
60 | 66 | schema += generatePropertyExistenceConstraints(relationship.id, relationship.attributes) |
|
0 commit comments