Service - Sell Offer Terms
Overview
Manages SellOffer Terms and SellOfferTermLinks. SellOffer Terms can be shared by many Sell Offers, SellOfferTermLinks are used to create an attribute tree for one Sell Offer.
Repository
https://bitbucket.org/izara-market-products/izara-market-products-sell-offer-terms/src/master/
DynamoDB tables
Standard Config Table Per Service
Configuration tags
..
LogicalResults
Stores results for any requests to perform logical searches on media links
{
resultId: xxx // eg: filterMainId for a single logical element
dataId: xxx // one sellOfferTermLinkId
}
- partition key: resultId
- sort key: dataId
Graph database
Service - Products Graph
Nodes
{
nodeLabel: "{SellOfferTermsLib.SELL_OFFER_TERM_GRAPH_NODE_LABEL}Label",
}
{
nodeLabel: "{SellOfferTermsLib.SELL_OFFER_TERM_GRAPH_NODE_LABEL}",
}
{
nodeLabel: "{SellOfferTermsLib.SELL_OFFER_TERM_GRAPH_NODE_LABEL}Link",
}
{
nodeLabel: "{SellOfferTermsLib.SELL_OFFER_TERM_GRAPH_NODE_LABEL}PropertyLabel",
}
{
nodeLabel: "{SellOfferTermsLib.SELL_OFFER_TERM_GRAPH_NODE_LABEL}Property",
}
- see DataSchemaLib
Relationships
{
relationshipType: "has_{SellOfferTermsLib.SELL_OFFER_TERM_GRAPH_NODE_LABEL}Link",
}
{
relationshipType: "disabled_{SellOfferTermsLib.SELL_OFFER_TERM_GRAPH_NODE_LABEL}Link",
}
{
relationshipType: "is_{SellOfferTermsLib.SELL_OFFER_TERM_GRAPH_NODE_LABEL}Term",
}
{
relationshipType: "is_{SellOfferTermsLib.SELL_OFFER_TERM_GRAPH_NODE_LABEL}Label",
}
{
relationshipType: "has_{SellOfferTermsLib.SELL_OFFER_TERM_GRAPH_NODE_LABEL}Property",
}
{
relationshipType: "disabled_{SellOfferTermsLib.SELL_OFFER_TERM_GRAPH_NODE_LABEL}Property",
}
{
relationshipType: "is_{SellOfferTermsLib.SELL_OFFER_TERM_GRAPH_NODE_LABEL}PropertyLabel",
}
- see DataSchemaLib
Basic node schemas
Schema comes from BasicNodeSchemaLib
- {SellOfferTermsLib.SELL_OFFER_TERM_GRAPH_NODE_LABEL}Label
- {SellOfferTermsLib.SELL_OFFER_TERM_GRAPH_NODE_LABEL}
- {SellOfferTermsLib.SELL_OFFER_TERM_GRAPH_NODE_LABEL}PropertyLabel
- {SellOfferTermsLib.SELL_OFFER_TERM_GRAPH_NODE_LABEL}Property
Complex Filter requests
{
filterType: "sellOfferTermLink" //unique id is sellOfferTermLinkId
type: "group",
elements:
[
{
// find all sellOfferTermLinks that link to a specific sellOfferTermId
type: "logical",
logicalTag: "sellOfferTermId",
comparison: "equals",
value: "lksdflkfldfgldfkgjldfg"
},
{
type: "complexFilter",
complexFilter: {
filterType: "sellOfferTerm", //unique id is sellOfferTermId
type: "group",
elements:
[
{
type: "complexFilter",
complexFilter: {
filterType: "sellOfferTermProperty", //unique id is propertyId
type: "group",
elements:
[
{
// find all propertyIds that link to a specific propertyLabelId
type: "logical",
logicalTag: "propertyLabelId",
comparison: "equals",
value: "lksdflkfldfgldfkgjldfg"
},
]
}
},
{
type: "complexFilter",
complexFilter: {
filterType: "sellOfferTermPropertyTranslation" //unique id is propertyId
type: "group",
elements:
[
{
// find all propertyIds that have current translation that matches text
type: "logical",
logicalTag: "textTag_languageId_text",
resultType: "sellOfferTermProperty",
textTag: "sellOfferTermPropertyValue",
languageId: "en",
text: "Is a great term",
subjectIdentifierPropertyName: "propertyId",
caseSensitive: true
},
]
}
},
]
}
},
{
type: "complexFilter",
complexFilter: {
filterType: "sellOfferTermTranslation" //unique id is sellOfferTermId
type: "group",
elements:
[
{
// find all sellOfferTermIds that have current translation that matches text
type: "logical",
logicalTag: "textTag_languageId_text",
resultType: "sellOfferTerm",
textTag: "sellOfferTermValue",
languageId: "en",
text: "Accepts",
subjectIdentifierPropertyName: "sellOfferTermId", // finds an identifier property on the subjects node and stores in LogicalResults for the request
caseSensitive: true
},
]
}
},
...
]
}