From aaaccd40613e1df3add5b666397ff4f491423e67 Mon Sep 17 00:00:00 2001 From: Semprini Date: Sun, 19 May 2024 02:06:00 +1200 Subject: [PATCH] Fixes #82 --- README.md | 2 +- docs/_static/image/metamodel.png | Bin 0 -> 115162 bytes docs/docs.qea | Bin 1564672 -> 1564672 bytes mdg/parse/sparx_db.py | 3 - mdg/templates/Django/app/models.py.jinja | 26 ++- mdg/templates/Schema/avro.avsc.jinja | 170 ++++-------------- .../sparxdb/config-sparxdb-graphql.yaml | 5 +- sample_recipes/sparxdb/sample.qea | Bin 1560576 -> 1564672 bytes 8 files changed, 61 insertions(+), 145 deletions(-) create mode 100644 docs/_static/image/metamodel.png diff --git a/README.md b/README.md index 6b7bd79..2b8e0f5 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ This diagram shows all the features and how to model in UML ## Metamodel This diagram shows the internal classes which are passed to the templates during generation. -![Metamodel](https://github.com/Semprini/pyMDG/raw/master/sample_recipes/images/EAID_B080F856_9EFB_46f2_8D69_1C79956D714A.png) +![Metamodel](https://raw.githubusercontent.com/Semprini/pyMDG/master/docs/_static/image/metamodel.png) ## Build the docs Install sphinx diff --git a/docs/_static/image/metamodel.png b/docs/_static/image/metamodel.png new file mode 100644 index 0000000000000000000000000000000000000000..eb6f25343cd2c97570b35c16bf438d7ea1a3c114 GIT binary patch literal 115162 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 z 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 MXe@Z0eP{mv0FwwcDgXcg delta 1454 zcmZuxZEO@(6rHy-v%52I=H1=0-9hcgQl!w~7)hU!bi1dJ(2G*E5QS0YmWNQemv#SjRIR1!i!!WIKjC{SNpz>x6cBrosW zbI*NuP9}Y@Tl4mY_GYvDbR|1oi7LKx z1igNr*B9{kqve6J@^F;pT}S6dd&CUKYGdJQHkm;i@=yWYKr92u(NhQ(4v|A*g&_Zt z)FhHCz?WbrpOM@_XPr)1ZkK!oSrH5iFwAcb0v+Bdzbqs8R{-ktAY;%oa1QJ?2{{$Z zn$`P!$oE59atunz`_O~NWezKcjl;eljVoz|ED$t(RDiQgZB_F~i696iA5;fSU&L2a z<&7m`wcb!T*6fX%(SSEm=J&^9q3YULq^c9M`YyE_Nkw9VLjCL1!lAS(of1v5mD=iX z7u#Nkuj{)!b+f7CH%($Y-oouDpSL%))q*yx?T6ElB=_K^zF2<~{?xPe2l`xEki@S! z;5hl2Y}M0bA9+bX0w1z1NxT*FRt;?RTD%-dM4W@zv2{3M;dV{b)`~Z>?pFNkv>j{e z!e1fL)b3DQ8n0(vX}m(?;`!{(#~6!lQ+ijBtF#GgMs{0Uw0``xwMMy3b9%9lzS@fy zu=jfLdXWoyXnKz>(}6>-c|Co7m_y^xIS2=EI9Okwvo)?sa8-Z_xD6S&%0J6_pr9RfO%ahgw&WR_-e$>g-;k^pz%Z@31RxMURQCCDn^l4Sy< z;VdkJZ~3(eGxN1}$@AEz{H)CmCXKr+4rbkp?*O)_eAfu>@=k-!fehFLSweQjGSsVH zfSwDfERI?1LdsR>d*)#X$N_zn8!RLBWD<(W?>rRG?sX9&O@)HyoiPd#p7Jbaod;bF zh!!1m6%P%#6c4(`)Kji)fO#Qa*pg~#UWDnMi>{R(Q4|yvtb#_)32+9EKtFr}9gu`2 zBty=@HI_5xx<(AHGn!H@EzM2ssWwk*TdK9Wt^IvWb2F}!Qnu(<=$wpe7Ei5Q%Kvxv%U{T=w1eVjHtXtjDb}`5W0U^-C{^gJQX5 z#1clopf`l;Lgy}LU69=#bFWq9jU_o~4*h7%{rs-W9)tcg=8m#ef4PGZy7M1o(EJC8 zu){Y|1yL#jwNWz>3D>a6QsXe1;cwhR#9kE)#mqpBpI!DF&W8jS=Fp;`;nO1V`i2T$ z++1GaFQezT7%S=S2?TV-HlvmrA)|k)Q5J;~!%h#~LvoSd9}R_qu|(Wlx+L+~H179> z0_EPYFBA_1XAVpX8{wzU@lM2e{RtvwngL(5nq4U~{L{q$hSuzdhyMgi1=tC*$QPuPr#_#s(iUU1O5u@F 0 %}class {{ cls.name | case_class }}( {% if cls.generalization %}{{ cls.generalization.name | case_class }}{% else %}models.Model{% endif %} ):{% for attr in cls.attributes %}{% if attr.classification %} {{ attr.name | snakecase }} = models.CharField( max_length=100, choices=ENUM_{{ attr.classification.name | case_class }}.choices, blank=True, null=True ){% else %} - {{ attr.name | snakecase }} = models.{% if "auto" in attr.stereotypes %}AutoField{% else %}{{ attr.dest_type }}{% endif %}( {% if attr.is_id %}primary_key=True, {% else %}blank=True, null=True, {% endif %}{% if attr.dest_type == "DecimalField" %}max_digits=10, decimal_places=2, {% endif %}{% if attr.length %}max_length={{ attr.length }}{% endif %}{% if attr.validations != [] %}validators=[validate_even]{% endif %} ) + {{ attr.name | snakecase }} = models.{% if "Auto" in attr.stereotypes %}AutoField{% else %}{{ attr.dest_type }}{% endif %}( {% if attr.is_id %}primary_key=True, {% else %}blank=True, null=True, {% endif %}{% if attr.dest_type == "DecimalField" %}max_digits=10, decimal_places=2, {% endif %}{% if attr.length %}max_length={{ attr.length }}{% endif %}{% if attr.validations != [] %}validators=[validate_even]{% endif %} ) {% endif %}{% endfor %}{% for rel in cls.associations_from %}{% if rel.association_type.name == "ASSOCIATION" %}{% if rel.cardinality.name == "ONE_TO_ONE" %} {{ rel.destination_name | snakecase }} = models.OneToOneField( '{{ rel.destination.package.name | case_package }}.{{ rel.destination.name | case_class }}', on_delete=models.CASCADE, blank=True, null=True ){% elif rel.cardinality.name == "MANY_TO_ONE" %} {{ rel.destination_name | snakecase }} = models.ForeignKey( '{{ rel.destination.package.name | case_package }}.{{ rel.destination.name | case_class }}', related_name='{{ rel.source_name | snakecase }}', on_delete=models.CASCADE, blank=True, null=True ){% elif rel.cardinality.name == "MANY_TO_MANY" %} @@ -27,12 +27,18 @@ from {{ attr.classification.package.name | case_package }}.models import ENUM_{{ {{ rel.destination_name | snakecase }} = models.ForeignKey( '{{ rel.destination.package.name | case_package }}.{{ rel.destination.name | case_class }}', related_name='{{ rel.source_name | snakecase }}', on_delete=models.CASCADE ){% endif %} {% endif %}{% endfor %}{% for rel in cls.associations_to %}{% if rel.association_type.name != "COMPOSITION" %}{% if rel.cardinality.name == "ONE_TO_MANY" %} {{ rel.source_name | snakecase }} = models.ForeignKey( '{{ rel.source.package.name | case_package }}.{{ rel.source.name | case_class }}', on_delete=models.CASCADE, related_name='{{ rel.destination_name | snakecase }}', blank=True, null=True ){% endif %} -{% endif %}{% endfor %}{% endif %} +{% endif %}{% endfor %}{% set uniques = [] %}{% for attr in cls.attributes %}{% if "UniqueKey" in attr.stereotypes %}{{ uniques.append( attr.name ) | default("", True) }}{% endif %}{% endfor %}{% for rel in cls.associations_from %}{% if "UniqueKey" in rel.destination_stereotypes %}{{ uniques.append( rel.destination_name ) | default("", True) }}{% endif %}{% endfor %}{% if uniques != [] %} -{% endfor %} + class Meta(): + constraints = [ + models.UniqueConstraint(fields=[{% for unique in uniques%}'{{ unique | snakecase }}',{% endfor %}], name='unique {% for unique in uniques%}{{ unique | snakecase }}__{% endfor %}') + ] +{% endif %} + +{% endif %}{% endfor %} {% for cls in package.classes %}{% if not cls.is_abstract and cls.specialized_by | length == 0 %}class {{ cls.name | case_class }}( {% if cls.generalization %}{{ cls.generalization.name | case_class }}{% else %}models.Model{% endif %} ):{% for attr in cls.attributes %}{% if attr.classification %} {{ attr.name | snakecase }} = models.CharField( max_length=100, choices=ENUM_{{ attr.classification.name | case_class }}.choices, blank=True, null=True ){% else %} - {{ attr.name | snakecase }} = models.{% if "auto" in attr.stereotypes %}AutoField{% else %}{{ attr.dest_type }}{% endif %}( {% if attr.is_id %}primary_key=True, {% else %}blank=True, null=True, {% endif %}{% if attr.dest_type == "DecimalField" %}max_digits=10, decimal_places=2, {% endif %}{% if attr.length %}max_length={{ attr.length }}{% endif %}{% if attr.validations != [] %}validators=[validate_even]{% endif %} ) + {{ attr.name | snakecase }} = models.{% if "Auto" in attr.stereotypes %}AutoField{% else %}{{ attr.dest_type }}{% endif %}( {% if attr.is_id %}primary_key=True, {% else %}blank=True, null=True, {% endif %}{% if attr.dest_type == "DecimalField" %}max_digits=10, decimal_places=2, {% endif %}{% if attr.length %}max_length={{ attr.length }}{% endif %}{% if attr.validations != [] %}validators=[validate_even]{% endif %} ) {% endif %}{% endfor %}{% for rel in cls.associations_from %}{% if rel.association_type.name == "ASSOCIATION" %}{% if rel.cardinality.name == "ONE_TO_ONE" %} {{ rel.destination_name | snakecase }} = models.OneToOneField( '{{ rel.destination.package.name | case_package }}.{{ rel.destination.name | case_class }}', on_delete=models.CASCADE, blank=True, null=True ){% elif rel.cardinality.name == "MANY_TO_ONE" %} {{ rel.destination_name | snakecase }} = models.ForeignKey( '{{ rel.destination.package.name | case_package }}.{{ rel.destination.name | case_class }}', related_name='{{ rel.source_name | snakecase }}', on_delete=models.CASCADE, blank=True, null=True ){% elif rel.cardinality.name == "MANY_TO_MANY" %} @@ -41,6 +47,12 @@ from {{ attr.classification.package.name | case_package }}.models import ENUM_{{ {{ rel.destination_name | snakecase }} = models.ForeignKey( '{{ rel.destination.package.name | case_package }}.{{ rel.destination.name | case_class }}', related_name='{{ rel.source_name | snakecase }}', on_delete=models.CASCADE ){% endif %} {% endif %}{% endfor %}{% for rel in cls.associations_to %}{% if rel.association_type.name != "COMPOSITION" %}{% if rel.cardinality.name == "ONE_TO_MANY" %} {{ rel.source_name | snakecase }} = models.ForeignKey( '{{ rel.source.package.name | case_package }}.{{ rel.source.name | case_class }}', on_delete=models.CASCADE, related_name='{{ rel.destination_name | snakecase }}', blank=True, null=True ){% endif %} -{% endif %}{% endfor %}{% endif %} +{% endif %}{% endfor %}{% set uniques = [] %}{% for attr in cls.attributes %}{% if "UniqueKey" in attr.stereotypes %}{{ uniques.append( attr.name ) | default("", True) }}{% endif %}{% endfor %}{% for rel in cls.associations_from %}{% if "UniqueKey" in rel.destination_stereotypes %}{{ uniques.append( rel.destination_name ) | default("", True) }}{% endif %}{% endfor %}{% if uniques != [] %} -{% endfor %} + class Meta(): + constraints = [ + models.UniqueConstraint(fields=[{% for unique in uniques%}'{{ unique | snakecase }}',{% endfor %}], name='unique {% for unique in uniques%}{{ unique | snakecase }}__{% endfor %}') + ] +{% endif %} + +{% endif %}{% endfor %} diff --git a/mdg/templates/Schema/avro.avsc.jinja b/mdg/templates/Schema/avro.avsc.jinja index 2ecedbb..8933c5f 100644 --- a/mdg/templates/Schema/avro.avsc.jinja +++ b/mdg/templates/Schema/avro.avsc.jinja @@ -1,149 +1,55 @@ -[ -{% for assoc in cls.associations_to %}{% if assoc.association_type.name in ['AGGREGATION', 'COMPOSITION', 'ASSOCIATION'] and "aggregate root" not in assoc.source.stereotypes %} - { - "namespace": "{{ assoc.source.package.path[1:-1] | replace("/",".") | snakecase }}", - "type": "record", - "name": "{{ assoc.source.name | case_class }}", - "fields": [{% if assoc.source.generalization %}{% for attr in assoc.source.generalization.attributes %} - { - "name": "{{ attr.name | case_attribute }}", - {% if attr.dest_type == "date" %}"type": ["string", "null", {"type": "int", "logicalType": "date"}], "default": "__" - {% elif attr.dest_type == "datetime" %}"type": ["string", "null", {"type" : "long", "logicalType": "timestamp-millis"}], "default": "__"{% elif attr.classification %}"type": - { - "type": "enum", - "name": "{{ attr.classification.name | case_class }}", - "symbols": [{% for enum in attr.classification.values[:-1] %} - "{{ enum | uppercase | replace(" ","_")}}",{% endfor %} - "{{ attr.classification.values[-1] | uppercase | replace(" ","_") }}" - ] - }{% else %}"type": {% if not attr.is_id %}[ "string", "null"{% if attr.dest_type != 'string' %}, "{{attr.dest_type}}"{% endif %} ], "default": "__"{% else %}"{{attr.dest_type}}"{% endif %}{% endif %} - },{% endfor %}{% endif %}{% for attr in assoc.source.attributes[:-1] %} - { - "name": "{{ attr.name | case_attribute }}", - {% if attr.dest_type == "date" %}"type": ["string", "null", {"type": "int", "logicalType": "date"}], "default": "__" - {% elif attr.dest_type == "datetime" %}"type": ["string", "null", {"type" : "long", "logicalType": "timestamp-millis"}], "default": "__"{% elif attr.classification %}"type": +{% macro do_enum(current_enum) -%} { "type": "enum", - "name": "{{ attr.classification.name | case_class }}", - "symbols": [{% for enum in attr.classification.values[:-1] %} + "name": "{{ current_enum.name | case_class }}", + "symbols": [{% for enum in current_enum.values[:-1] %} "{{ enum | uppercase | replace(" ","_") | replace("/","_") }}",{% endfor %} - "{{ attr.classification.values[-1] | uppercase | replace(" ","_")}}" + "{{ current_enum.values[-1] | uppercase | replace(" ","_") }}" ] - }{% else %}"type": {% if not attr.is_id %}[ "string", "null"{% if attr.dest_type != 'string' %}, "{{attr.dest_type}}"{% endif %} ], "default": "__"{% else %}"{{attr.dest_type}}"{% endif %}{% endif %} - },{% endfor %} + } +{% endmacro -%} + +{% macro do_attribute(current_attr) -%} { - "name": "{{ assoc.source.attributes[-1].name | case_attribute }}", - {% if assoc.source.attributes[-1].dest_type == "date" %}"type": ["string", "null", {"type": "int", "logicalType": "date"}], "default": "__" - {% elif assoc.source.attributes[-1].dest_type == "datetime" %}"type": ["string", "null", {"type" : "long", "logicalType": "timestamp-millis"}], "default": "__"{% elif assoc.source.attributes[-1].classification %}"type": - { - "type": "enum", - "name": "{{ assoc.source.attributes[-1].classification.name | case_class }}", - "symbols": [{% for enum in assoc.source.attributes[-1].classification.values[:-1] %} - "{{ enum | uppercase | replace(" ","_") | replace("/","_") }}",{% endfor %} - "{{ assoc.source.attributes[-1].classification.values[-1] | uppercase | replace(" ","_")}}" - ] - }{% else %}"type": {% if not assoc.source.attributes[-1].is_id %}[ "string", "null"{% if assoc.source.attributes[-1].dest_type != 'string' %}, "{{assoc.source.attributes[-1].dest_type}}"{% endif %} ], "default": "__"{% else %}"{{assoc.source.attributes[-1].dest_type}}"{% endif %}{% endif %} - }{% for assoc in assoc.source.associations_from %}{% if assoc.association_type.name not in ['AGGREGATION', 'COMPOSITION'] %} - ,{ - "name": "{{ assoc.destination_name | case_attribute }}_id", - "type": ["string", "null"{% if assoc.destination_multiplicity[1] == '*' %}, - { - "type": "array", - "items": "string" - }{% else %}], "default": "__"{% endif %} - }{% endif %}{% endfor %} - ] - },{% endif %}{% endfor %} + "name": "{{ current_attr.name | case_attribute }}", + {% if current_attr.dest_type == "date" %}"type": ["string", "null", {"type": "int", "logicalType": "date"}], "default": "__" + {% elif current_attr.dest_type == "datetime" %}"type": ["string", "null", {"type" : "long", "logicalType": "timestamp-millis"}], "default": "__"{% elif current_attr.classification %}"type": + {{ do_enum(current_attr.classification) }} + {% else %}"type": {% if not current_attr.is_id %}[ "string", "null"{% if current_attr.dest_type != 'string' %}, "{{current_attr.dest_type}}"{% endif %} ], "default": "__"{% else %}"{{current_attr.dest_type}}"{% endif %}{% endif %} + } +{% endmacro -%} + +{% macro do_class(current_class) -%} { - "namespace": "{{ cls.package.path[1:-1] | replace("/",".") | snakecase }}", + "namespace": "{{ current_class.package.path[1:-1] | replace("/",".") | snakecase }}", "type": "record", - "name": "{{ cls.name | case_class }}", - "fields": [{% if cls.generalization %}{% for attr in cls.generalization.attributes %} - { - "name": "{{ attr.name | case_attribute }}", - {% if attr.dest_type == "date" %}"type": ["string", "null", {"type": "int", "logicalType": "date"}], "default": "__" - {% elif attr.dest_type == "datetime" %}"type": ["string", "null", {"type" : "long", "logicalType": "timestamp-millis"}], "default": "__"{% elif attr.classification %}"type": - { - "type": "enum", - "name": "{{ attr.classification.name | case_class }}", - "symbols": [{% for enum in attr.classification.values[:-1] %} - "{{ enum | uppercase | replace(" ","_") | replace("/","_") }}",{% endfor %} - "{{ attr.classification.values[-1] | uppercase | replace(" ","_") }}" - ] - }{% else %}"type": {% if not attr.is_id %}[ "string", "null"{% if attr.dest_type != 'string' %}, "{{attr.dest_type}}"{% endif %} ], "default": "__"{% else %}"{{attr.dest_type}}"{% endif %}{% endif %} - },{% endfor %}{% endif %}{% for attr in cls.attributes[:-1] %} - { - "name": "{{ attr.name | case_attribute }}", - {% if attr.dest_type == "date" %}"type": ["string", "null", {"type": "int", "logicalType": "date"}], "default": "__" - {% elif attr.dest_type == "datetime" %}"type": ["string", "null", {"type" : "long", "logicalType": "timestamp-millis"}], "default": "__"{% elif attr.classification %}"type": - { - "type": "enum", - "name": "{{ attr.classification.name | case_class }}", - "symbols": [{% for enum in attr.classification.values[:-1] %} - "{{ enum | uppercase | replace(" ","_") | replace("/","_")}}",{% endfor %} - "{{ attr.classification.values[-1] | uppercase | replace(" ","_")}}" - ] - }{% else %}"type": {% if not attr.is_id %}[ "string", "null"{% if attr.dest_type != 'string' %}, "{{attr.dest_type}}"{% endif %} ], "default": "__"{% else %}"{{attr.dest_type}}"{% endif %}{% endif %} - },{% endfor %} - { - "name": "{{ cls.attributes[-1].name | case_attribute }}", - {% if cls.attributes[-1].dest_type == "date" %}"type": ["string", "null", {"type": "int", "logicalType": "date"}], "default": "__" - {% elif cls.attributes[-1].dest_type == "datetime" %}"type": ["string", "null", {"type" : "long", "logicalType": "timestamp-millis"}], "default": "__"{% elif cls.attributes[-1].classification %}"type": - { - "type": "enum", - "name": "{{ cls.attributes[-1].classification.name | case_class }}", - "symbols": [{% for enum in cls.attributes[-1].classification.values[:-1] %} - "{{ enum | uppercase | replace(" ","_") | replace("/","_") }}",{% endfor %} - "{{ cls.attributes[-1].classification.values[-1] | uppercase | replace(" ","_")}}" - ] - }{% else %}"type": {% if not cls.attributes[-1].is_id %}[ "string", "null"{% if cls.attributes[-1].dest_type != 'string' %}, "{{cls.attributes[-1].dest_type}}"{% endif %} ], "default": "__"{% else %}"{{cls.attributes[-1].dest_type}}"{% endif %}{% endif %} - }{% for assoc in cls.associations_from %} - ,{ - "name": "{{ assoc.destination_name | case_attribute }}_id", - "type": [{% if assoc.destination_multiplicity[1] == '*' %}{ "type": "array", "items": "string" }{% else %}"string"{% endif %}, "null"], "default": "__" - }{% endfor %}{% for assoc in cls.associations_to %}{% if assoc.association_type.name in ['AGGREGATION', 'COMPOSITION'] %} + "name": "{{ current_class.name | case_class }}", + "fields": [{% if current_class.generalization %}{% for attr in current_class.generalization.attributes %} + {{ do_attribute(attr) }},{% endfor %}{% endif %}{% for attr in current_class.attributes[:-1] %} + {{ do_attribute(attr) }},{% endfor %} + {{ do_attribute(current_class.attributes[-1]) }}{% for assoc in current_class.associations_from %} ,{ + "name": "{{ assoc.destination_name | case_attribute }}", + "type": [{% if assoc.destination_multiplicity[1] == '*' %}{ "type": "array", "items": "{{ assoc.destination.name | case_class }}" }{% else %}"string", "null", "{{ assoc.destination.name | case_class }}"{% endif %}], "default": "__" + }{% endfor %}{% for assoc in current_class.associations_to %}{% if assoc.association_type.name in ['AGGREGATION', 'COMPOSITION'] %} + ,{ "name": "{{ assoc.source.name | case_attribute }}", "type": ["string", "null", {% if assoc.source_multiplicity[1] == '*' %} { "type": "array", "items": "{{ assoc.source.name | case_class }}" }{% else %}"{{ assoc.source.name | case_class }}"{% endif %}], "default": "__", - "namespace": "{{ cls.package.path[1:-1] | replace("/",".") | snakecase }}" + "namespace": "{{ current_class.package.path[1:-1] | replace("/",".") | snakecase }}" }{% endif %}{% endfor %} ] - }{% for special in cls.specialized_by %}{% if "aggregate root" not in special.stereotypes %}, - { - "namespace": "{{ special.package.path[1:-1] | replace("/",".") | snakecase }}", - "type": "record", - "name": "{{ special.name | case_class }}", - "fields": [ - {% for attr in special.attributes[:-1] %}{ - "name": "{{ attr.name | case_attribute }}", - {% if attr.dest_type == "date" %}"type": ["string", "null", {"type": "int", "logicalType": "date"}], "default": "__" - {% elif attr.dest_type == "datetime" %}"type": ["string", "null", {"type" : "long", "logicalType": "timestamp-millis"}], "default": "__"{% elif attr.classification %}"type": - { - "type": "enum", - "name": "{{ attr.classification.name | case_class }}", - "symbols": [{% for enum in attr.classification.values[:-1] %} - "{{ enum | uppercase | replace(" ","_") | replace("/","_")}}",{% endfor %} - "{{ attr.classification.values[-1] | uppercase | replace(" ","_")}}" - ] - }{% else %}"type": {% if not attr.is_id %}[ "string", "null"{% if attr.dest_type != 'string' %}, "{{attr.dest_type}}"{% endif %} ], "default": "__"{% else %}"{{attr.dest_type}}"{% endif %}{% endif %} - },{% endfor %} - { - "name": "{{ special.attributes[-1].name | case_attribute }}", - {% if special.attributes[-1].dest_type == "date" %}"type": ["string", "null", {"type": "int", "logicalType": "date"}], "default": "__" - {% elif special.attributes[-1].dest_type == "datetime" %}"type": ["string", "null", {"type" : "long", "logicalType": "timestamp-millis"}], "default": "__"{% elif cls.attributes[-1].classification %}"type": - { - "type": "enum", - "name": "{{ special.attributes[-1].classification.name | case_class }}", - "symbols": [{% for enum in special.attributes[-1].classification.values[:-1] %} - "{{ enum | uppercase | replace(" ","_") | replace("/","_") }}",{% endfor %} - "{{ special.attributes[-1].classification.values[-1] | uppercase | replace(" ","_")}}" - ] - }{% else %}"type": {% if not special.attributes[-1].is_id %}[ "string", "null"{% if special.attributes[-1].dest_type != 'string' %}, "{{special.attributes[-1].dest_type}}"{% endif %} ], "default": "__"{% else %}"{{special.attributes[-1].dest_type}}"{% endif %}{% endif %} - } - ] - }{% endif %}{% endfor %} + } +{% endmacro -%} + +[ +{% for assoc in cls.associations_to %}{% if assoc.association_type.name in ['AGGREGATION', 'COMPOSITION', 'ASSOCIATION'] and "aggregate root" not in assoc.source.stereotypes %} + {{ do_class(assoc.source) }} + ,{% endif %}{% endfor %} + {{ do_class(cls) }}{% for special in cls.specialized_by %}{% if "aggregate root" not in special.stereotypes %}, + {{ do_class(special) }} +{% endif %}{% endfor %} ] diff --git a/sample_recipes/sparxdb/config-sparxdb-graphql.yaml b/sample_recipes/sparxdb/config-sparxdb-graphql.yaml index 19f07b6..2838f7f 100644 --- a/sample_recipes/sparxdb/config-sparxdb-graphql.yaml +++ b/sample_recipes/sparxdb/config-sparxdb-graphql.yaml @@ -1,5 +1,6 @@ -root_package: "{ECF156CE-46EA-4f7c-9F9C-4A54FB975BEC}" -model_package: "{AEB30CD7-DECA-4310-BFD6-9225F9251D9A}" +root_package: "{EE550A71-3A5F-473d-A3AF-773E900C74ED}" +model_package: "{D6D3BF36-E897-4a8b-8CA9-62ADAAD696ED}" +test_package: "{C2E30D48-F8AB-4c6f-9FA3-AFE44653D5EB}" source: sqlite:///./sample_recipes/sparxdb/sample.qea parser: sparxdb dest_root: ./build/sample_sparxdb_graphql diff --git a/sample_recipes/sparxdb/sample.qea b/sample_recipes/sparxdb/sample.qea index 49a9a27f2b763970df3ed8945b27aad6dc37c88e..c398729553cb151ad34df57a1dde720e0651b772 100644 GIT binary patch delta 1347 zcma)+YfO_@7{}k!zVF-iyq8nTYYz-7g$jxVp-@|3Q{>i66SaedQRbj5f*(kvB2l@H zY8K)$6G@{dG1&r{%DBWZ+;*}lTeF13aoLLxh5i|kk)syO|JP7;c zhl#yXv@lVdGp-a-V9e!kuSqto1L4H=iBAV@RYhri`_*< z*}g(ohogI{6*44-%upCA12N2u7>0!rOQ%}3T`8-c5TRGgw8B0#gdWIS)u-w`rCs_{ zxvTWU-~Uk}lJ-F@g7|)-qA{E z(wya#N}{uxBtd;VcnyvfLqQ=-n4=q|hNe0POHRCZIsG?IAd>9a5!_ScCHJk|& z$y^*xAt4)1C!cG$n@n87IV5DkmGu559I(PXdzLFdCpX`nMa(~dCp3EzjO&cv5_e&7 zp|_Ae&BQ5YotR2f_u>!$5jtFf_wi(|6#I;4ZOCK-ukRxtFM$xL^kF~!*@vxZsgmI| zhk|NUO;T#*4rv(PHhpK>Ydp-ReZnvNwEho(0q!Z>jKq7~R{@7Bo?R;rg%io1dRRr$ z-o?AgKs|Iad&F9LDuh2;J+>=!rXKDVR@Z4+J08_r4B{-OHYt7bm~cmV^mW93=tws5*FYPE7+z9r4T z-=Nu)Z|pHd#d&?0uNFM)n4bVz8^({6{p>T~lDIHHT}V_ zpEXUHUN-(@Y%@xR%Z7CErdTZ87WVTK{0sVN@R~jd%(@?SO<r4^Xo(8GDf@e^;%Fc=vtY3^YGJO>nkhdl^ Tl@#>j3L;&_PC9=L+f080Kf8=7 delta 1152 zcma)*Urbw79LMh|_m=kDKj#)M92%%;hp;iI6k2X8ItCP2mQ2?GvSAkf1iKd^tw0FS z5jz$`Tw=1N(c{y?G;s+q1-E%(BCcvoj1VO{knn)$B=G^F56Uu^41d*x_~^su+?;cM z-{1G-o8L{QyOY!1R|+MoAfSn>?&HY1&~u%Lwr#1p)!MSC_kw# zdz-!OmLu|#E%kmuP!t3qm~uO-kq5TsrB)|zb)qwSsDEmPSb!`*1SG%;WCJ$9&SwaI zF``+>9<)FS@`&sy6FjE}|47)kx3eSzPRDX#8FgTMU2x+OL4KDhaa?C1N${`0Y-L%O zSYjNPmP3p3L{%VY27TeMx1k~2=neS&A#bSJ-|Vev3i%qt%}s%pn&5QR+lHfq(b(`@@zpb#xJBEvboc6^A2BLk#u|aoyFcyyv4v%?QWY=&_o!&KoJbrpN|I6TnLRV4IN5Y85e}GU zOM~C^R@XE%c>}%vDsQN9@{pT!79aoDVe)BkU@Pz=vAQ*ypL4POKbQa5A6$m)2aVbG zd-