Service - Delivery Method Standard: Difference between revisions
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",
}
- see DataSchemaLib
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",
}
- see DataSchemaLib
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