Service - Payment Method Generic: Difference between revisions

From Izara Wiki
Jump to navigation Jump to search
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 315: Line 315:
{
{
   "relationshipServiceTag": "PaymentMethodGeneric",
   "relationshipServiceTag": "PaymentMethodGeneric",
   "fieldNames": {
   "fieldNames": {},
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {
 
      }
    }
  },
   "storageResources": {
   "storageResources": {
     "graph": {
     "graph": {
Line 376: Line 365:
{
{
   "relationshipServiceTag": "PaymentMethodGeneric",
   "relationshipServiceTag": "PaymentMethodGeneric",
   "fieldNames": {
   "fieldNames": {},
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {
 
      }
    }
  },
   "storageResources": {
   "storageResources": {
     "graph": {
     "graph": {
Line 430: Line 408:




=== ===
=== disabledUserPaymentMethodGenericSalePropertyValue ===
<syntaxhighlight lang="JavaScript">
 
</syntaxhighlight>
=== ===
<syntaxhighlight lang="JavaScript">
 
</syntaxhighlight>
=== ===
<syntaxhighlight lang="JavaScript">
 
</syntaxhighlight>
=== ===
<syntaxhighlight lang="JavaScript">
 
</syntaxhighlight>
=== ===
<syntaxhighlight lang="JavaScript">
 
</syntaxhighlight>
=== ===
<syntaxhighlight lang="JavaScript">
 
</syntaxhighlight>
 
= DynamoDB tables =
 
== [[Standard Config Table Per Service]] ==
 
=== Configuration tags ===
 
<syntaxhighlight lang="JavaScript">
<syntaxhighlight lang="JavaScript">
{
{
configTag: "PaymentMethodHandlerServiceNameTag"
  "relationshipServiceTag": "PaymentMethodGeneric",
configKey: "PaymentMethodHandlerServiceNameTag"
  "fieldNames": {},
configValue: xxx // this own services ServiceNameTag, eg "PaymentMethodGeneric"
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "userPaymentMethodGeneric",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "userPaymentMethodGenericSalePropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canChangeToRelTypes": [
    {
      "serviceTag": "PaymentMethodGeneric",
      "relationshipTag": "hasUserPaymentMethodGenericSalePropertyValue"
    }
  ],
  "canMove": false
}
}
</syntaxhighlight>
</syntaxhighlight>
 
=== hasPaymentMethodGenericPropertyValue ===
<syntaxhighlight lang="JavaScript">
<syntaxhighlight lang="JavaScript">
{
{
configTag: "ProductGraphServiceName"
  "relationshipServiceTag": "PaymentMethodGeneric",
configKey: "ProductGraphServiceName"
  "fieldNames": {},
configValue: xxx // eg: "ProductGraph"
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "paymentMethodGeneric",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "paymentMethodGenericPropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": true,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canChangeToRelTypes": [
    {
      "serviceTag": "PaymentMethodGeneric",
      "relationshipTag": "disabledPaymentMethodGenericPropertyValue"
    }
  ],
  "canMove": false
}
}
</syntaxhighlight>
</syntaxhighlight>
 
=== hasUserPaymentMethodGenericPropertyValue ===
<syntaxhighlight lang="JavaScript">
<syntaxhighlight lang="JavaScript">
{
{
configTag: "PaymentMethodManagerServiceName"
  "relationshipServiceTag": "PaymentMethodGeneric",
configKey: "PaymentMethodManagerServiceName"
  "fieldNames": {},
configValue: xxx // eg: "PaymentMethodManager"
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "userPaymentMethodGeneric",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "userPaymentMethodGenericPropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": true,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canChangeToRelTypes": [
    {
      "serviceTag": "PaymentMethodGeneric",
      "relationshipTag": "disabledUserPaymentMethodGenericPropertyValue"
    }
  ],
  "canMove": false
}
}
</syntaxhighlight>
</syntaxhighlight>
 
=== hasUserPaymentMethodGenericSalePropertyValue ===
= Graph database =  
 
== [[Service - Products Graph]]==
 
=== Nodes ===
 
<syntaxhighlight lang="JavaScript">
<syntaxhighlight lang="JavaScript">
{
{
nodeLabel: "paymentMethodGeneric",
  "relationshipServiceTag": "PaymentMethodGeneric",
schema: {
  "fieldNames": {},
identifier: true,
  "storageResources": {
restrictProperties: true,
    "graph": {
restrictRelationships: true,
      "storageType": "graph",
properties: {
      "graphServerTag": "GraphHandler"
paymentMethodId: {
    }
identifier: true, // create unique id from translation
  },
}
  "links": [
},
    {
}
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "userPaymentMethodGeneric",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "userPaymentMethodGenericSalePropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": true,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canChangeToRelTypes": [
    {
      "serviceTag": "PaymentMethodGeneric",
      "relationshipTag": "disabledUserPaymentMethodGenericSalePropertyValue"
    }
  ],
  "canMove": false
}
}
</syntaxhighlight>
</syntaxhighlight>
 
=== isPaymentMethodGenericPropertyLabel ===
<syntaxhighlight lang="JavaScript">
<syntaxhighlight lang="JavaScript">
{
{
nodeLabel: "{PaymentMethodManagerLib.USERPAYMENTMETHOD_GRAPH_NODE_LABEL}", // "userPaymentMethod"
  "relationshipServiceTag": "PaymentMethodGeneric",
schema: {
  "fieldNames": {},
identifier: true,
  "storageResources": {
restrictProperties: true,
    "graph": {
restrictRelationships: true,
      "storageType": "graph",
properties: {
      "graphServerTag": "GraphHandler"
userPaymentMethodId: {
    }
identifier: true, // create unique id from user and uniqueMessageId
  },
},
  "links": [
paymentMethodId: { // stored here to reduce queries finding matching methods, eg sellOffers
    {
immutable: true,
      "storageResourceTags": [
},
        "graph"
userPaymentMethodTag: { // users reference name for this userPaymentMethod
      ],
},
      "from": {
},
        "objType": {
}
          "objectType": "paymentMethodGenericPropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "from",
        "requiredOnCreate": true,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "paymentMethodGenericPropertyLabel",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canMove": false
}
}
</syntaxhighlight>
</syntaxhighlight>
* adds a node between a user and a payment method
=== isUserPaymentMethodGenericPropertyLabel ===
* this is the node linked to by sellOfferPlans
 
<syntaxhighlight lang="JavaScript">
<syntaxhighlight lang="JavaScript">
{
{
nodeLabel: "{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}PropertyLabel",
  "relationshipServiceTag": "PaymentMethodGeneric",
}
  "fieldNames": {},
{
  "storageResources": {
nodeLabel: "{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}Property",
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "userPaymentMethodGenericPropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "from",
        "requiredOnCreate": true,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "userPaymentMethodGenericPropertyLabel",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canMove": false
}
}
</syntaxhighlight>
</syntaxhighlight>
 
=== isUserPaymentMethodGenericSalePropertyLabel ===
<syntaxhighlight lang="JavaScript">
<syntaxhighlight lang="JavaScript">
{
{
nodeLabel: "{PaymentMethodGenericLib.USERPAYMENTMETHOD_GRAPH_NODE_LABEL}PropertyLabel",
  "relationshipServiceTag": "PaymentMethodGeneric",
}
  "fieldNames": {},
{
  "storageResources": {
nodeLabel: "{PaymentMethodGenericLib.USERPAYMENTMETHOD_GRAPH_NODE_LABEL}Property",
    "graph": {
}
      "storageType": "graph",
</syntaxhighlight>
      "graphServerTag": "GraphHandler"
<syntaxhighlight lang="JavaScript">
    }
{
  },
nodeLabel: "{PaymentMethodGenericLib.USERPAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}PropertyLabel", // userPaymentMethodSalePropertyLabel
  "links": [
}
    {
{
      "storageResourceTags": [
nodeLabel: "{PaymentMethodGenericLib.USERPAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}Property",
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "userPaymentMethodGenericSalePropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "from",
        "requiredOnCreate": true,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "userPaymentMethodGenericSalePropertyLabel",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canMove": false
}
}
</syntaxhighlight>
</syntaxhighlight>
* see [[NPM module - Izara Core - Property Node|DataSchemaLib]]
* two sets of property nodes for userPaymentMethod, one for presentation properties (when browsing), paymentMethodSale for after sale, properties that get sent to the buyer, eg bank account number


=== Relationships ===
<syntaxhighlight lang="JavaScript">
{
relationshipType: "{PaymentMethodManagerLib.createIsPaymentMethodGraphRelationshipType()}", // "is_paymentMethod"
schema: {
elementCanBeRemoved: false,
allPropertiesImmutable: true,
restrictProperties: true,
properties: {
originTimestamp: //timestamp the request to create/change this relationship was sent
},
}
}
</syntaxhighlight>
<syntaxhighlight lang="JavaScript">
{
relationshipType: "{PaymentMethodManagerLib.createIsUserPaymentMethodGraphRelationshipType()}", // "is_userPaymentMethod"
schema: {
elementCanBeRemoved: false,
allPropertiesImmutable: true,
restrictProperties: true,
properties: {
originTimestamp: //timestamp the request to create/change this relationship was sent
},
}
}
</syntaxhighlight>
* not setup logic to disable userPaymentMethods at this time
<syntaxhighlight lang="JavaScript">
{
relationshipType: "has_{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}Property",
}
{
relationshipType: "disabled_{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}Property",
}
{
relationshipType: "is_{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}PropertyLabel",
}
</syntaxhighlight>
<syntaxhighlight lang="JavaScript">
{
relationshipType: "has_{PaymentMethodGenericLib.USERPAYMENTMETHOD_GRAPH_NODE_LABEL}Property",
}
{
relationshipType: "disabled_{PaymentMethodGenericLib.USERPAYMENTMETHOD_GRAPH_NODE_LABEL}Property",
}
{
relationshipType: "is_{PaymentMethodGenericLib.USERPAYMENTMETHOD_GRAPH_NODE_LABEL}PropertyLabel",
}
</syntaxhighlight>
<syntaxhighlight lang="JavaScript">
{
relationshipType: "has_{PaymentMethodGenericLib.USERPAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}Property",
}
{
relationshipType: "disabled_{PaymentMethodGenericLib.USERPAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}Property",
}
{
relationshipType: "is_{PaymentMethodGenericLib.USERPAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}PropertyLabel",
}
</syntaxhighlight>
* see [[NPM module - Izara Core - Property Node|DataSchemaLib]]


== Basic node schemas ==
== Basic node schemas ==

Latest revision as of 08:54, 13 January 2026

Overview

Handler service for generic payment methods that give text instruction to buyer at completion of sale. userPaymentMethod is also handled by each Payment Method Handler because there will be unique settings depending on the Payment Method.

Repository

https://bitbucket.org/izara-market-products/izara-market-products-payment-method-generic/src/master/

Schemas

ObjectSchemas

paymentMethodGeneric

  • ExtendObjType:paymentMethod
{
  "objectType": "paymentMethodGeneric",
  "extendObjType": {
    "serviceTag": "PaymentMethodManager",
    "objectType": "paymentMethod"
  },
  "addOnDataStructure": [
    {
      "type": "propertyValue"
    }
  ],
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    },
    "dynamoDB": {
      "storageType": "dynamoDB",
      "tableName": "PaymentMethodRecords",
      "serviceTag": "PaymentMethodManager"
    }
  },
  "fieldNames": {},
  "generatedBy": "userGenerated"
}

userPaymentMethodGeneric

  • ExtendObjType:userPaymentMethod
{
  "objectType": "userPaymentMethodGeneric",
  "extendObjType": {
    "serviceTag": "PaymentMethodManager",
    "objectType": "userPaymentMethod"
  },
  "addOnDataStructure": [
    {
      "type": "propertyValue"
    }
  ],
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    },
    "dynamoDB": {
      "storageType": "dynamoDB",
      "tableName": "UserPaymentMethodsRecords",
      "serviceTag": "PaymentMethodManager"
    }
  },
  "fieldNames": {},
  "generatedBy": "userGenerated"
}

userPaymentMethodGenericSalePropertyValue

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

userPaymentMethodGenericSalePropertyLabel

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

property

paymentMethodGenericPropertyLabel

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

paymentMethodGenericPropertyValue

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

userPaymentMethodGenericPropertyLabel

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

userPaymentMethodGenericPropertyValue

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

RelationshipSchemas

disabledPaymentMethodGenericPropertyValue

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {},
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "paymentMethodGeneric",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "paymentMethodGenericPropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canMove": true
  "canChangeToRelTypes": [
        {  
          serviceTag:"PaymentMethodGeneric",
          relationshipTag: "hasPaymentMethodGenericPropertyValue"
        },
   ]
}


disabledUserPaymentMethodGenericPropertyValue

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {},
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "userPaymentMethodGeneric",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "userPaymentMethodGenericPropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
   
  "canMove": true
}



disabledUserPaymentMethodGenericSalePropertyValue

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {},
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "userPaymentMethodGeneric",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "userPaymentMethodGenericSalePropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canChangeToRelTypes": [
    {
      "serviceTag": "PaymentMethodGeneric",
      "relationshipTag": "hasUserPaymentMethodGenericSalePropertyValue"
    }
  ],
  "canMove": false
}

hasPaymentMethodGenericPropertyValue

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {},
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "paymentMethodGeneric",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "paymentMethodGenericPropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": true,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canChangeToRelTypes": [
    {
      "serviceTag": "PaymentMethodGeneric",
      "relationshipTag": "disabledPaymentMethodGenericPropertyValue"
    }
  ],
  "canMove": false
}

hasUserPaymentMethodGenericPropertyValue

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {},
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "userPaymentMethodGeneric",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "userPaymentMethodGenericPropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": true,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canChangeToRelTypes": [
    {
      "serviceTag": "PaymentMethodGeneric",
      "relationshipTag": "disabledUserPaymentMethodGenericPropertyValue"
    }
  ],
  "canMove": false
}

hasUserPaymentMethodGenericSalePropertyValue

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {},
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "userPaymentMethodGeneric",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "userPaymentMethodGenericSalePropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": true,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canChangeToRelTypes": [
    {
      "serviceTag": "PaymentMethodGeneric",
      "relationshipTag": "disabledUserPaymentMethodGenericSalePropertyValue"
    }
  ],
  "canMove": false
}

isPaymentMethodGenericPropertyLabel

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {},
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "paymentMethodGenericPropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "from",
        "requiredOnCreate": true,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "paymentMethodGenericPropertyLabel",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canMove": false
}

isUserPaymentMethodGenericPropertyLabel

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {},
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "userPaymentMethodGenericPropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "from",
        "requiredOnCreate": true,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "userPaymentMethodGenericPropertyLabel",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canMove": false
}

isUserPaymentMethodGenericSalePropertyLabel

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {},
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "userPaymentMethodGenericSalePropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "from",
        "requiredOnCreate": true,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "userPaymentMethodGenericSalePropertyLabel",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canMove": false
}


Basic node schemas

{
	nodeLabel: "{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}", // "paymentMethod"
	schema: {
		identifier: true,
		restrictProperties: true,
		restrictRelationships: true,
		properties: {
			paymentMethodId: {
				identifier: true,
			},
			paymentMethodHandlerServiceNameTag: {
				immutable: true,
			},
		},
	}
}

Schema comes from BasicNodeSchemaLib

  1. paymentMethodPropertyLabel
  2. paymentMethodProperty
  3. paymentMethodSalePropertyLabel
  4. paymentMethodSaleProperty

Complex Filter requests

{
	filterType: "handlerPaymentMethod" //unique id is paymentMethodId
	type: "group",
	elements:
	[
		{
			type: "logical",
			logicalTag: "currencyId",
			comparison: "equals",
			value: "xx"
		},
		{
			type: "complexFilter",
			complexFilter: {
				filterType: "paymentMethodProperty",
				// see [[NPM module - Izara Core - Property Node|Complex Filter requests]]
			}
		},
		{
			type: "complexFilter",
			complexFilter: {
				filterType: "paymentMethodNameTranslation" //unique id is paymentMethodId
				type: "group",
				elements: 
				[
					{
						// see [[Service - Translations|Complex Filter requests]]
						type: "logical",
						logicalTag: "textTag_languageId_text",
						resultType: "paymentMethod",
						textTag: "paymentMethodName",
						languageId: "en",
						text: "Is a great term",
						subjectIdentifierPropertyName: "paymentMethodId",
						caseSensitive: true
					},
				]
			}
		},		
		...
	]
}
{
	filterType: "handlerUserPaymentMethod" //unique id is userPaymentMethodId
	type: "group",
	elements:
	[
		{
			type: "logical",
			logicalTag: "paymentMethodId",
			comparison: "equals",
			value: "xx"
		},
		{
			type: "complexFilter",
			complexFilter: {
				filterType: "paymentMethod",
				// see above
			}
		},		
		{
			type: "complexFilter",
			complexFilter: {
				filterType: "userPaymentMethodProperty",
				// see [[NPM module - Izara Core - Property Node|Complex Filter requests]]
			}
		},
		{
			type: "complexFilter",
			complexFilter: {
				filterType: "userPaymentMethodSaleProperty",
				// see [[NPM module - Izara Core - Property Node|Complex Filter requests]]
			}
		},
		...
	]
}

Data structure notes

  • Users can create new paymentMethods which are uniquely identified by their translation
  • Users can create userPaymentMethod nodes for their account which connect to paymentMethods, one user can have multiple userPaymentMethod links to the same paymentMethod, eg different Bank Transfer nodes for different bank accounts, which can be applied to sell offers in any combination

Working documents

Payment Method Generic