Service - Product Attributes: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 34: | Line 34: | ||
=== Nodes === | === Nodes === | ||
<syntaxhighlight lang="JavaScript"> | |||
{ | |||
nodeLabel: "productAttributeLabel", | |||
schema: { | |||
identifier: true, | |||
restrictProperties: true, | |||
restrictRelationships: true, | |||
properties: { | |||
productAttributeLabelId: { | |||
identifier: true, //(random uuid) | |||
}, | |||
}, | |||
} | |||
} | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="JavaScript"> | <syntaxhighlight lang="JavaScript"> | ||
Line 96: | Line 112: | ||
<syntaxhighlight lang="JavaScript"> | <syntaxhighlight lang="JavaScript"> | ||
{ | { | ||
relationshipType: " | relationshipType: "hasProductAttributeLink", | ||
schema: { | |||
elementCanBeRemoved: true, | |||
allPropertiesImmutable: true, | |||
restrictProperties: true, | |||
properties: { | |||
originTimestamp: //timestamp the request to create/change this relationship was sent | |||
}, | |||
} | |||
} | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="JavaScript"> | |||
{ | |||
relationshipType: "disabledProductAttributeLink", | |||
schema: { | |||
elementCanBeRemoved: true, | |||
allPropertiesImmutable: true, | |||
restrictProperties: true, | |||
properties: { | |||
originTimestamp: //timestamp the request to create/change this relationship was sent | |||
}, | |||
} | |||
} | |||
</syntaxhighlight> | |||
* creates a link in attribute tree between a Product or ProductAttributeLink, and a child ProductAttributeLink | |||
<syntaxhighlight lang="JavaScript"> | |||
{ | |||
relationshipType: "isProductAttribute", | |||
schema: { | schema: { | ||
elementCanBeRemoved: true, | elementCanBeRemoved: true, | ||
Line 107: | Line 151: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* links one ProductAttributeLink to one ProductAttribute | |||
<syntaxhighlight lang="JavaScript"> | |||
{ | |||
relationshipType: "isProductAttribute", | |||
schema: { | |||
elementCanBeRemoved: true, | |||
allPropertiesImmutable: true, | |||
restrictProperties: true, | |||
properties: { | |||
originTimestamp: //timestamp the request to create/change this relationship was sent | |||
}, | |||
} | |||
} | |||
</syntaxhighlight> | |||
* links one ProductAttributeLink to one ProductAttribute | |||
<syntaxhighlight lang="JavaScript"> | |||
{ | |||
relationshipType: "isProductLabel", | |||
schema: { | |||
elementCanBeRemoved: true, | |||
allPropertiesImmutable: true, | |||
restrictProperties: true, | |||
properties: { | |||
originTimestamp: //timestamp the request to create/change this relationship was sent | |||
}, | |||
} | |||
} | |||
</syntaxhighlight> | |||
* links one ProductAttribute to one ProductAttributeLabel | |||
<syntaxhighlight lang="JavaScript"> | <syntaxhighlight lang="JavaScript"> | ||
{ | { | ||
relationshipType: " | relationshipType: "hasProductAttributeProperty", | ||
schema: { | schema: { | ||
elementCanBeRemoved: true, | elementCanBeRemoved: true, | ||
Line 120: | Line 196: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* | * ProductAttribute links to Properties | ||
== [[Service - Translations Graph]]== | == [[Service - Translations Graph]]== | ||
Line 128: | Line 204: | ||
<syntaxhighlight lang="JavaScript"> | <syntaxhighlight lang="JavaScript"> | ||
{ | { | ||
nodeLabel: " | nodeLabel: "productAttributeLabel", | ||
schema: { | schema: { | ||
identifier: true, | identifier: true, |
Revision as of 03:01, 10 August 2021
Overview
Manages Product Attributes and ProductAttributeLinks. Product Attributes can be shared by many Products, ProductAttributeLinks are used to create an attribute tree for one Product.
Repository
https://bitbucket.org/izara-market-products/izara-market-products-product-attributes/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 productAttributeLinkId
}
- partition key: resultId
- sort key: dataId
Graph database
Service - Products Graph
Nodes
{
nodeLabel: "productAttributeLabel",
schema: {
identifier: true,
restrictProperties: true,
restrictRelationships: true,
properties: {
productAttributeLabelId: {
identifier: true, //(random uuid)
},
},
}
}
{
nodeLabel: "productAttribute",
schema: {
identifier: true,
restrictProperties: true,
restrictRelationships: true,
properties: {
productAttributeId: {
identifier: true, //(random uuid)
},
},
}
}
{
nodeLabel: "productAttributeLink",
schema: {
identifier: true,
restrictProperties: true,
restrictRelationships: true,
properties: {
productAttributeLinkId: {
identifier: true, //(random uuid)
},
productId: {
immutable: true,
},
productAttributeId: {
immutable: true,
},
},
}
}
{
nodeLabel: "productAttributeProperty",
schema: {
identifier: true,
restrictProperties: true,
restrictRelationships: true,
properties: {
propertyId: {
identifier: true, //(random uuid)
},
productAttributeId: {
immutable: true,
},
},
}
}
Relationships
{
relationshipType: "hasProductAttributeLink",
schema: {
elementCanBeRemoved: true,
allPropertiesImmutable: true,
restrictProperties: true,
properties: {
originTimestamp: //timestamp the request to create/change this relationship was sent
},
}
}
{
relationshipType: "disabledProductAttributeLink",
schema: {
elementCanBeRemoved: true,
allPropertiesImmutable: true,
restrictProperties: true,
properties: {
originTimestamp: //timestamp the request to create/change this relationship was sent
},
}
}
- creates a link in attribute tree between a Product or ProductAttributeLink, and a child ProductAttributeLink
{
relationshipType: "isProductAttribute",
schema: {
elementCanBeRemoved: true,
allPropertiesImmutable: true,
restrictProperties: true,
properties: {
originTimestamp: //timestamp the request to create/change this relationship was sent
},
}
}
- links one ProductAttributeLink to one ProductAttribute
{
relationshipType: "isProductAttribute",
schema: {
elementCanBeRemoved: true,
allPropertiesImmutable: true,
restrictProperties: true,
properties: {
originTimestamp: //timestamp the request to create/change this relationship was sent
},
}
}
- links one ProductAttributeLink to one ProductAttribute
{
relationshipType: "isProductLabel",
schema: {
elementCanBeRemoved: true,
allPropertiesImmutable: true,
restrictProperties: true,
properties: {
originTimestamp: //timestamp the request to create/change this relationship was sent
},
}
}
- links one ProductAttribute to one ProductAttributeLabel
{
relationshipType: "hasProductAttributeProperty",
schema: {
elementCanBeRemoved: true,
allPropertiesImmutable: true,
restrictProperties: true,
properties: {
originTimestamp: //timestamp the request to create/change this relationship was sent
},
}
}
- ProductAttribute links to Properties
Service - Translations Graph
Nodes
{
nodeLabel: "productAttributeLabel",
schema: {
identifier: true,
restrictProperties: true,
restrictRelationships: true,
properties: {
productAttributeId: {
identifier: true,
},
},
}
}
{
nodeLabel: "productAttributeValue",
schema: {
identifier: true,
restrictProperties: true,
restrictRelationships: true,
properties: {
productAttributeId: {
identifier: true,
},
},
}
}
{
nodeLabel: "productAttributePropertyName",
schema: {
identifier: true,
restrictProperties: true,
restrictRelationships: true,
properties: {
propertyId: {
identifier: true,
},
},
}
}
{
nodeLabel: "productAttributePropertyValue",
schema: {
identifier: true,
restrictProperties: true,
restrictRelationships: true,
properties: {
propertyId: {
identifier: true,
},
},
}
}