Service - Product Attributes: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
Line 109: | Line 109: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<syntaxhighlight lang="JavaScript"> | <syntaxhighlight lang="JavaScript"> | ||
{ | { | ||
nodeLabel: "productAttributePropertyName", | |||
schema: { | schema: { | ||
identifier: true, | |||
restrictProperties: true, | restrictProperties: true, | ||
restrictRelationships: true, | |||
properties: { | properties: { | ||
propertyId: { | |||
identifier: true, | |||
}, | |||
}, | }, | ||
} | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<syntaxhighlight lang="JavaScript"> | <syntaxhighlight lang="JavaScript"> | ||
{ | { | ||
nodeLabel: "productAttributePropertyValue", | |||
schema: { | schema: { | ||
identifier: true, | |||
restrictProperties: true, | restrictProperties: true, | ||
restrictRelationships: true, | |||
properties: { | properties: { | ||
propertyId: { | |||
identifier: true, | |||
}, | |||
}, | }, | ||
} | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Relationships === | |||
<syntaxhighlight lang="JavaScript"> | <syntaxhighlight lang="JavaScript"> | ||
{ | { | ||
relationshipType: " | relationshipType: "hasProductAttributeLink", | ||
schema: { | schema: { | ||
elementCanBeRemoved: true, | elementCanBeRemoved: true, | ||
Line 153: | Line 157: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<syntaxhighlight lang="JavaScript"> | <syntaxhighlight lang="JavaScript"> | ||
{ | { | ||
relationshipType: " | relationshipType: "disabledProductAttributeLink", | ||
schema: { | schema: { | ||
elementCanBeRemoved: true, | elementCanBeRemoved: true, | ||
Line 168: | Line 170: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* | * creates a link in attribute tree between a Product or ProductAttributeLink, and a child ProductAttributeLink | ||
<syntaxhighlight lang="JavaScript"> | <syntaxhighlight lang="JavaScript"> | ||
{ | { | ||
relationshipType: " | relationshipType: "isProductAttribute", | ||
schema: { | schema: { | ||
elementCanBeRemoved: true, | elementCanBeRemoved: true, | ||
Line 183: | Line 185: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* | * links one ProductAttributeLink to one ProductAttribute | ||
<syntaxhighlight lang="JavaScript"> | <syntaxhighlight lang="JavaScript"> | ||
{ | { | ||
relationshipType: "isProductLabel", | |||
schema: { | schema: { | ||
elementCanBeRemoved: true, | |||
allPropertiesImmutable: true, | |||
restrictProperties: true, | restrictProperties: true, | ||
properties: { | properties: { | ||
originTimestamp: //timestamp the request to create/change this relationship was sent | |||
}, | }, | ||
} | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* links one ProductAttribute to one ProductAttributeLabel | |||
<syntaxhighlight lang="JavaScript"> | <syntaxhighlight lang="JavaScript"> | ||
{ | { | ||
relationshipType: "hasProductAttributeProperty", | |||
schema: { | schema: { | ||
elementCanBeRemoved: true, | |||
allPropertiesImmutable: true, | |||
restrictProperties: true, | restrictProperties: true, | ||
properties: { | properties: { | ||
originTimestamp: //timestamp the request to create/change this relationship was sent | |||
}, | }, | ||
} | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* ProductAttribute links to it's Properties | |||
== Basic node schemas == | |||
productAttribute | |||
* [[Service - Media Graph]] | |||
* [[Service - Translations Graph]] | |||
productAttributeLabel | |||
* [[Service - Translations Graph]] | |||
productAttributePropertyName | |||
* [[Service - Translations Graph]] | |||
* [[Service - | productAttributePropertyValue | ||
* [[Service - Translations Graph]] | |||
= Working documents = | = Working documents = |
Revision as of 13:04, 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)
},
},
}
}
- groups product attributes, eg: "colour", "size", etc..
{
nodeLabel: "productAttribute",
schema: {
identifier: true,
restrictProperties: true,
restrictRelationships: true,
properties: {
productAttributeId: {
identifier: true, //(random uuid)
},
},
}
}
- one product attributes value inside one product label, eg: "green" under the "colour" label
{
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,
},
},
}
}
{
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,
},
},
}
}
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: "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 it's Properties
Basic node schemas
productAttribute
productAttributeLabel
productAttributePropertyName
productAttributePropertyValue