Service - Delivery Method Standard: Difference between revisions

From Izara Wiki
Jump to navigation Jump to search
 
(7 intermediate revisions by the same user not shown)
Line 6: Line 6:


https://bitbucket.org/izara-market-products/izara-market-products-delivery-method-standard
https://bitbucket.org/izara-market-products/izara-market-products-delivery-method-standard
= Schemas =
==ObjectSchemas==
extendObjType:deliveryMethod
===deliveryMethodStandard===
<syntaxhighlight lang="JavaScript">
{
  "objectType": "deliveryMethodStandard",
  "extendObjType": {
    "serviceTag": "DeliveryMethodMgr",
    "objectType": "deliveryMethod"
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    },
    "dynamoDB": {
      "storageType": "dynamoDB",
      "tableName": "DeliveryMethodRecord",
      "serviceTag": "DeliveryMethodMgr"
    }
  },
  "addOnDataStructure": [
    {
      "type": "versionedData",
      "versionedDataLabel": "deliveryMethodSettings",
      "storageResourceTag": "graph",
      "fieldNames": {
        "defaultValueType": {
          "type": "string",
          "requiredOnCreate": true,
          "optionalOnCreate": false,
          "canUpdate": true,
          "validation": {
            "pattern": "^[a-zA-Z0-9_-]+$"
          }
        },
        "defaultValueId": {
          "type": "string",
          "requiredOnCreate": true,
          "optionalOnCreate": false,
          "canUpdate": true,
          "validation": {
            "pattern": "^[a-zA-Z0-9_-]+$"
          }
        },
        "defaultValueLanguageId": {
          "type": "string",
          "requiredOnCreate": true,
          "optionalOnCreate": false,
          "canUpdate": true,
          "validation": {
            "pattern": "^[a-zA-Z0-9_-]+$"
          }
        },
        "defaultAccumulateValue": {
          "type": "boolean",
          "requiredOnCreate": true,
          "optionalOnCreate": false,
          "canUpdate": true,
          "validation": {
          }
        }
      }
    },
    {
      "type": "propertyValue"
    }
  ],
  "fieldNames": {},
  "generatedBy": "userGenerated"
}
</syntaxhighlight>
*Property
=== deliveryMethodStandardPropertyLabel ===
<syntaxhighlight lang="JavaScript">
{
  "objectType": "deliveryMethodStandardPropertyLabel",
  "addOnDataStructure": [
    {
      "type": "translation"
    }
  ],
  "canDelete": true,
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "fieldNames": {
    "deliveryMethodStandardPropertyLabelId": {
      "type": "string",
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "randomOnCreate": true,
      "validation": {
        "pattern": "^[a-zA-Z0-9-_]+$"
      },
      "storageResourceTags": [
        "graph"
      ]
    }
  },
  "identifiers": [
    {
      "type": "identifier",
      "fieldName": "deliveryMethodStandardPropertyLabelId"
    }
  ],
  "generatedBy": "userGenerated"
}
</syntaxhighlight>
=== deliveryMethodStandardPropertyValue ===
<syntaxhighlight lang="JavaScript">
{
  "objectType": "deliveryMethodStandardPropertyValue",
  "addOnDataStructure": [
    {
      "type": "translation"
    }
  ],
  "canDelete": true,
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "fieldNames": {
    "deliveryMethodStandardPropertyValueId": {
      "type": "string",
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "randomOnCreate": true,
      "validation": {
        "pattern": "^[a-zA-Z0-9-_]+$"
      },
      "storageResourceTags": [
        "graph"
      ]
    }
  },
  "identifiers": [
    {
      "type": "identifier",
      "fieldName": "deliveryMethodStandardPropertyValueId"
    }
  ],
  "generatedBy": "userGenerated"
}
</syntaxhighlight>
==relationshipSchemas==
*'''RelationshipTags'''
===fromLocationNode===
<syntaxhighlight lang="JavaScript">
{
  "relationshipServiceTag": "DelivMethodSTD",
  "fieldNames": {
    "originTimeStamp": {
      "type": "number",
      "requiredOnCreate": false,
      "canUpdate": true,
      "validation": {
      },
      "optionalOnCreate": true
    },
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {
      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "serviceTag": "Locations",
          "objectType": "locationNode"
        },
        "linkType": "one",
        "handler": true,
        "requiredOnCreate": false
      },
      "to": {
        "objType": {
          "serviceTag": "DelivMethodSTD",
          "objectType": "deliveryMethodStandard"
        },
        "linkType": "many",
        "requiredOnCreate": true,
        "handler": true
      },
      "canDelete": false
    }
  ],
  "canMove": false
}
</syntaxhighlight>
===ownsDeliveryMethodRateTable===
<syntaxhighlight lang="JavaScript">
{
  "relationshipServiceTag": "DelivMethodSTD",
  "fieldNames": {
    "originTimeStamp": {
      "type": "number",
      "requiredOnCreate": false,
      "canUpdate": true,
      "validation": {
      },
      "optionalOnCreate": false
    },
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {
      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "serviceTag": "DelivMethodSTD",
          "objectType": "deliveryMethodStandard"
        },
        "linkType": "one",
        "handler": true,
        "requiredOnCreate": false
      },
      "to": {
        "objType": {
          "serviceTag": "DeliveryMethodRAT",
          "objectType": "rateTable"
        },
        "linkType": "many",
        "requiredOnCreate": true,
        "handler": true
      },
      "canDelete": false
    }
  ],
  "canMove": false
}
</syntaxhighlight>
=== isDeliveryMethodStandardPropertyLabel ===
<syntaxhighlight lang="JavaScript">
{
  "relationshipServiceTag": "DelivMethodSTD",
  "fieldNames": {
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {
      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "deliveryMethodStandardPropertyValue",
          "serviceTag": "DelivMethodSTD"
        },
        "linkType": "many",
        "direction": "from",
        "requiredOnCreate": true,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "deliveryMethodStandardPropertyLabel",
          "serviceTag": "DelivMethodSTD"
        },
        "linkType": "one",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canMove": false
}
</syntaxhighlight>
=== hasDeliveryMethodStandardPropertyValue  ===
<syntaxhighlight lang="JavaScript">
{
  "relationshipServiceTag": "DelivMethodSTD",
  "fieldNames": {
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {
      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "deliveryMethodStandard",
          "serviceTag": "DelivMethodSTD"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "deliveryMethodStandardPropertyValue",
          "serviceTag": "DelivMethodSTD"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": true,
        "handler": false
      },
      "canDelete": false
    }
  ],
canChangeToRelTypes: [
    {
      serviceTag:"deliveryMethodStandard",
      relationshipTag: "disabledDeliveryMethodStandardPropertyValue"
    },
  ],
  canMove:true
}
</syntaxhighlight>
=== hasDeliveryMethodRateTable ===
<syntaxhighlight lang="JavaScript">
{
  "relationshipServiceTag": "DelivMethodSTD",
  "fieldNames": {
    "originTimeStamp": {
      "type": "number",
      "requiredOnCreate": false,
      "canUpdate": true,
      "validation": {
      },
      "optionalOnCreate": false
    },
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {
      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "serviceTag": "DelivMethodSTD",
          "objectType": "deliveryMethodStandard"
        },
        "linkType": "one",
        "handler": true,
        "requiredOnCreate": false
      },
      "to": {
        "objType": {
          "serviceTag": "DeliveryMethodRAT",
          "objectType": "rateTable"
        },
        "linkType": "many",
        "requiredOnCreate": true,
        "handler": true
      },
      "canDelete": false
    }
  ],
"canChangeToRelTypes": [
    {
      serviceTag:"deliveryMethodStandard",
      relationshipTag: "disabledDeliveryMethodRateTable"
    },
  ],
  "canMove": true
}
</syntaxhighlight>
=== disabledDeliveryMethodStandardPropertyValue ===
<syntaxhighlight lang="JavaScript">
{
  "relationshipServiceTag": "DelivMethodSTD",
  "fieldNames": {
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {
      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "deliveryMethodStandard",
          "serviceTag": "DelivMethodSTD"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "deliveryMethodStandardPropertyValue",
          "serviceTag": "DelivMethodSTD"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  canChangeToRelTypes: [
    {
      serviceTag:"deliveryMethodStandard",
      relationshipTag: "hasDeliveryMethodStandardPropertyValue"
    },
  ],
  canMove:true
}
</syntaxhighlight>
=== disabledDeliveryMethodRateTable ===
<syntaxhighlight lang="JavaScript">
{
  "relationshipServiceTag": "DelivMethodSTD",
  "fieldNames": {
    "originTimeStamp": {
      "type": "number",
      "requiredOnCreate": false,
      "canUpdate": true,
      "validation": {
      },
      "optionalOnCreate": false
    },
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {
      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "serviceTag": "DelivMethodSTD",
          "objectType": "deliveryMethodStandard"
        },
        "linkType": "one",
        "handler": true,
        "requiredOnCreate": false
      },
      "to": {
        "objType": {
          "serviceTag": "DeliveryMethodRAT",
          "objectType": "rateTable"
        },
        "linkType": "many",
        "handler": true,
        "requiredOnCreate": false
      },
      "canDelete": false
    }
  ],
  "canChangeToRelTypes": [
    {
      serviceTag:"deliveryMethodStandard",
      relationshipTag: "hasDeliveryMethodRateTable"
    },
  ],
  "canMove": true
}
</syntaxhighlight>


= DynamoDB tables =
= DynamoDB tables =

Latest revision as of 06:27, 24 November 2025

Overview

Handler service for basic delivery methods that use Service - Delivery Method Rate Table for pricing.

Repository

https://bitbucket.org/izara-market-products/izara-market-products-delivery-method-standard

Schemas

ObjectSchemas

extendObjType:deliveryMethod

deliveryMethodStandard

{
  "objectType": "deliveryMethodStandard",
  "extendObjType": {
    "serviceTag": "DeliveryMethodMgr",
    "objectType": "deliveryMethod"
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    },
    "dynamoDB": {
      "storageType": "dynamoDB",
      "tableName": "DeliveryMethodRecord",
      "serviceTag": "DeliveryMethodMgr"
    }
  },
  "addOnDataStructure": [
    {
      "type": "versionedData",
      "versionedDataLabel": "deliveryMethodSettings",
      "storageResourceTag": "graph",
      "fieldNames": {
        "defaultValueType": {
          "type": "string",
          "requiredOnCreate": true,
          "optionalOnCreate": false,
          "canUpdate": true,
          "validation": {
            "pattern": "^[a-zA-Z0-9_-]+$"
          }
        },
        "defaultValueId": {
          "type": "string",
          "requiredOnCreate": true,
          "optionalOnCreate": false,
          "canUpdate": true,
          "validation": {
            "pattern": "^[a-zA-Z0-9_-]+$"
          }
        },
        "defaultValueLanguageId": {
          "type": "string",
          "requiredOnCreate": true,
          "optionalOnCreate": false,
          "canUpdate": true,
          "validation": {
            "pattern": "^[a-zA-Z0-9_-]+$"
          }
        },
        "defaultAccumulateValue": {
          "type": "boolean",
          "requiredOnCreate": true,
          "optionalOnCreate": false,
          "canUpdate": true,
          "validation": {

          }
        }
      }
    },
    {
      "type": "propertyValue"
    }
  ],
  "fieldNames": {},
  "generatedBy": "userGenerated"
}


  • Property

deliveryMethodStandardPropertyLabel

{
  "objectType": "deliveryMethodStandardPropertyLabel",
  "addOnDataStructure": [
    {
      "type": "translation"
    }
  ],
  "canDelete": true,
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "fieldNames": {
    "deliveryMethodStandardPropertyLabelId": {
      "type": "string",
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "randomOnCreate": true,
      "validation": {
        "pattern": "^[a-zA-Z0-9-_]+$"
      },
      "storageResourceTags": [
        "graph"
      ]
    }
  },
  "identifiers": [
    {
      "type": "identifier",
      "fieldName": "deliveryMethodStandardPropertyLabelId"
    }
  ],
  "generatedBy": "userGenerated"
}


deliveryMethodStandardPropertyValue

{
  "objectType": "deliveryMethodStandardPropertyValue",
  "addOnDataStructure": [
    {
      "type": "translation"
    }
  ],
  "canDelete": true,
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "fieldNames": {
    "deliveryMethodStandardPropertyValueId": {
      "type": "string",
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "randomOnCreate": true,
      "validation": {
        "pattern": "^[a-zA-Z0-9-_]+$"
      },
      "storageResourceTags": [
        "graph"
      ]
    }
  },
  "identifiers": [
    {
      "type": "identifier",
      "fieldName": "deliveryMethodStandardPropertyValueId"
    }
  ],
  "generatedBy": "userGenerated"
}

relationshipSchemas

  • RelationshipTags

fromLocationNode

{
  "relationshipServiceTag": "DelivMethodSTD",
  "fieldNames": {
    "originTimeStamp": {
      "type": "number",
      "requiredOnCreate": false,
      "canUpdate": true,
      "validation": {

      },
      "optionalOnCreate": true
    },
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {

      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "serviceTag": "Locations",
          "objectType": "locationNode"
        },
        "linkType": "one",
        "handler": true,
        "requiredOnCreate": false
      },
      "to": {
        "objType": {
          "serviceTag": "DelivMethodSTD",
          "objectType": "deliveryMethodStandard"
        },
        "linkType": "many",
        "requiredOnCreate": true,
        "handler": true
      },
      "canDelete": false
    }
  ],
  "canMove": false
}

ownsDeliveryMethodRateTable

{
  "relationshipServiceTag": "DelivMethodSTD",
  "fieldNames": {
    "originTimeStamp": {
      "type": "number",
      "requiredOnCreate": false,
      "canUpdate": true,
      "validation": {

      },
      "optionalOnCreate": false
    },
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {

      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "serviceTag": "DelivMethodSTD",
          "objectType": "deliveryMethodStandard"
        },
        "linkType": "one",
        "handler": true,
        "requiredOnCreate": false
      },
      "to": {
        "objType": {
          "serviceTag": "DeliveryMethodRAT",
          "objectType": "rateTable"
        },
        "linkType": "many",
        "requiredOnCreate": true,
        "handler": true
      },
      "canDelete": false
    }
  ],
  "canMove": false
}


isDeliveryMethodStandardPropertyLabel

{
  "relationshipServiceTag": "DelivMethodSTD",
  "fieldNames": {
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {

      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "deliveryMethodStandardPropertyValue",
          "serviceTag": "DelivMethodSTD"
        },
        "linkType": "many",
        "direction": "from",
        "requiredOnCreate": true,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "deliveryMethodStandardPropertyLabel",
          "serviceTag": "DelivMethodSTD"
        },
        "linkType": "one",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canMove": false
}


hasDeliveryMethodStandardPropertyValue

{
  "relationshipServiceTag": "DelivMethodSTD",
  "fieldNames": {
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {

      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "deliveryMethodStandard",
          "serviceTag": "DelivMethodSTD"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "deliveryMethodStandardPropertyValue",
          "serviceTag": "DelivMethodSTD"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": true,
        "handler": false
      },
      "canDelete": false
    }
  ],
 canChangeToRelTypes: [
    {
      serviceTag:"deliveryMethodStandard",
      relationshipTag: "disabledDeliveryMethodStandardPropertyValue"
    },
   ],
  canMove:true
}

hasDeliveryMethodRateTable

{
  "relationshipServiceTag": "DelivMethodSTD",
  "fieldNames": {
    "originTimeStamp": {
      "type": "number",
      "requiredOnCreate": false,
      "canUpdate": true,
      "validation": {

      },
      "optionalOnCreate": false
    },
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {

      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "serviceTag": "DelivMethodSTD",
          "objectType": "deliveryMethodStandard"
        },
        "linkType": "one",
        "handler": true,
        "requiredOnCreate": false
      },
      "to": {
        "objType": {
          "serviceTag": "DeliveryMethodRAT",
          "objectType": "rateTable"
        },
        "linkType": "many",
        "requiredOnCreate": true,
        "handler": true
      },
      "canDelete": false
    }
  ],
 "canChangeToRelTypes": [
    {
      serviceTag:"deliveryMethodStandard",
      relationshipTag: "disabledDeliveryMethodRateTable"
    },
   ],
  "canMove": true
}

disabledDeliveryMethodStandardPropertyValue

{
  "relationshipServiceTag": "DelivMethodSTD",
  "fieldNames": {
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {

      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "deliveryMethodStandard",
          "serviceTag": "DelivMethodSTD"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "deliveryMethodStandardPropertyValue",
          "serviceTag": "DelivMethodSTD"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  canChangeToRelTypes: [
    {
      serviceTag:"deliveryMethodStandard",
      relationshipTag: "hasDeliveryMethodStandardPropertyValue"
    },
   ],
  canMove:true
}

disabledDeliveryMethodRateTable

{
  "relationshipServiceTag": "DelivMethodSTD",
  "fieldNames": {
    "originTimeStamp": {
      "type": "number",
      "requiredOnCreate": false,
      "canUpdate": true,
      "validation": {

      },
      "optionalOnCreate": false
    },
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {

      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "serviceTag": "DelivMethodSTD",
          "objectType": "deliveryMethodStandard"
        },
        "linkType": "one",
        "handler": true,
        "requiredOnCreate": false
      },
      "to": {
        "objType": {
          "serviceTag": "DeliveryMethodRAT",
          "objectType": "rateTable"
        },
        "linkType": "many",
        "handler": true,
        "requiredOnCreate": false
      },
      "canDelete": false
    }
  ],
  "canChangeToRelTypes": [
    {
      serviceTag:"deliveryMethodStandard",
      relationshipTag: "hasDeliveryMethodRateTable"
    },
   ],
  "canMove": true
}

DynamoDB tables

Standard Config Table Per Service

Configuration tags

{
	configTag: "DeliveryMethodHandlerServiceNameTag"
	configKey: "DeliveryMethodHandlerServiceNameTag"
	configValue: xxx // this own services ServiceNameTag, eg "DeliveryMethodStandard"
}
{
	configTag: "ProductGraphServiceName"
	configKey: "ProductGraphServiceName"
	configValue: xxx // eg: "ProductGraph"
}
{
	configTag: "DeliveryMethodManagerServiceName"
	configKey: "DeliveryMethodManagerServiceName"
	configValue: xxx // eg: "DeliveryMethodManager"
}
{
	configTag: "DeliveryMethodRateTableServiceName"
	configKey: "DeliveryMethodRateTableServiceName"
	configValue: xxx // eg: "DeliveryMethodRateTable"
}
{
	configTag: "DeliveryMethodRbacServiceName"
	configKey: "DeliveryMethodRbacServiceName"
	configValue: xxx // eg: "Rbac"
}

Graph database

Service - Products Graph

Nodes

{
	nodeLabel: "{deliveryMethodSharedLib.consts.DELIVERYMETHOD_GRAPH_NODE_LABEL}",
}
{
	nodeLabel: "{DeliveryMethodStandardLib.DELIVERYMETHOD_GRAPH_NODE_LABEL}PropertyLabel",
}
{
	nodeLabel: "{DeliveryMethodStandardLib.DELIVERYMETHOD_GRAPH_NODE_LABEL}Property",
}

Versioned data

deliveryMethodSettings

{
	properties: {
		defaultValueType: {}, // orderQuantity|orderSubtotal|productAttributeId|sellOfferTermId
		defaultValueId: {}, //(optinalOnCreate) used for productAttributeId|sellOfferTermId
		defaultValueLanguageId: {}, // (optinalOnCreate) used for productAttributeId|sellOfferTermId, when finding attribute value need to set language to find
		defaultAccumulateValue: true //(optinalOnCreate) default: true, if set to false will find the largest value out of all sellOffers in the order
	},
}

Relationships

{
	relationshipType: "{DeliveryMethodStandardLib.createfromLocationNodeRelationshipType()}", // "from_LocationNode"
	schema: {
		elementCanBeRemoved: false,
		allPropertiesImmutable: true,
		restrictProperties: true,
		properties: {
			originTimestamp: //timestamp the request to create/change this relationship was sent
		},
	}
}
  • currently this is set when creating the deliveryMethod and cannot be changed, if in future we allow to be changed, will need to validate all sellOffers that link to this deliveryMethod and ensure sellOffer's stock location still slots into the deliveryMethods new from_LocationNode
{
	relationshipType: "{DeliveryMethodStandardLib.createHasDeliveryMethodRateTableGraphRelationshipType()}", // "has_deliveryMethodRateTable"
	schema: {
		elementCanBeRemoved: true,
		allPropertiesImmutable: true,
		restrictProperties: true,
		properties: {
			originTimestamp: //timestamp the request to create/change this relationship was sent
		},
	}
}
{
	relationshipType: "{DeliveryMethodStandardLib.createDisabledDeliveryMethodRateTableGraphRelationshipType()}", // "disabled_deliveryMethodRateTable"
	schema: {
		elementCanBeRemoved: true,
		allPropertiesImmutable: true,
		restrictProperties: true,
		properties: {
			originTimestamp: //timestamp the request to create/change this relationship was sent
		},
	}
}
{
	relationshipType: "{DeliveryMethodStandardLib.createHasDeliveryMethodRateTableGraphRelationshipType()}", // "owns_deliveryMethodRateTable"
	schema: {
		elementCanBeRemoved: true,
		allPropertiesImmutable: true,
		restrictProperties: true,
		properties: {
			originTimestamp: //timestamp the request to create/change this relationship was sent
		},
	}
}
  • controls ownership of a rateTable, many deliveryMethods can point to one rateTable but only one deliveryMethod controls it (RBAC for that deliveryMethods allows control over the rateTable)
{
	relationshipType: "has_{DeliveryMethodStandardLib.DELIVERYMETHOD_GRAPH_NODE_LABEL}Property",
}
{
	relationshipType: "disabled_{DeliveryMethodStandardLib.DELIVERYMETHOD_GRAPH_NODE_LABEL}Property",
}
{
	relationshipType: "is_{DeliveryMethodStandardLib.DELIVERYMETHOD_GRAPH_NODE_LABEL}PropertyLabel",
}

Complex Filter requests

{
	filterType: "handlerDeliveryMethod" //unique id is deliveryMethodId
	type: "group",
	elements:
	[
		{
			type: "logical",
			logicalTag: "currencyId",
			comparison: "equals",
			value: "xx"
		},
		{
			type: "logical",
			logicalTag: "fromLocationNodeId",
			comparison: "equals",
			value: "xx"
		},
		{
			type: "complexFilter",
			complexFilter: {
				filterType: "deliveryMethodRateTable",
				// see [[Service - Delivery Method Rate Table|Complex Filter requests]]
			}
		},
		{
			type: "complexFilter",
			complexFilter: {
				filterType: "deliveryMethodProperty",
				// see [[NPM module - Izara Core - Property Node|Complex Filter requests]]
			}
		},
		{
			type: "complexFilter",
			complexFilter: {
				filterType: "deliveryMethodNameTranslation" //unique id is deliveryMethodId
				type: "group",
				elements: 
				[
					{
						// see [[Service - Translations|Complex Filter requests]]
						type: "logical",
						logicalTag: "textTag_languageId_text",
						resultType: "deliveryMethod",
						textTag: "deliveryMethodName",
						languageId: "en",
						text: "Is a great term",
						subjectIdentifierPropertyName: "deliveryMethodId",
						caseSensitive: true
					},
				]
			}
		},		
		...
	]
}

Translate Ids - deliveryMethodRateTable to deliveryMethod

  • only find deliveryMethodIds that are enabled

Data structure notes

  • Users can create new deliveryMethods which are uniquely identified by their translation
  • deliveryMethods have RBAC structure, default to creator having admin permissions, but admin can add other roles etc..
  • Any user can attach any deliveryMethod to a SellOfferPlan

Working documents

Delivery Method Standard