Service - Media Link: Difference between revisions
No edit summary |
|||
(7 intermediate revisions by the same user not shown) | |||
Line 18: | Line 18: | ||
configTag: "MediaGraphServiceName" | configTag: "MediaGraphServiceName" | ||
configValue: xxx // eg: "MediaGraph" | configValue: xxx // eg: "MediaGraph" | ||
} | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="JavaScript"> | |||
{ | |||
configKey: "TranslationGraphServiceName" | |||
configTag: "TranslationGraphServiceName" | |||
configValue: xxx // eg: "TranslationGraph" | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 43: | Line 51: | ||
<syntaxhighlight lang="JavaScript"> | <syntaxhighlight lang="JavaScript"> | ||
{ | { | ||
nodeLabel: " | nodeLabel: "{MediaSharedLib.MEDIALINK_GRAPH_NODE_LABEL}", | ||
schema: { | schema: { | ||
identifier: true, | identifier: true, | ||
Line 54: | Line 62: | ||
mediaId: { | mediaId: { | ||
immutable: true, | immutable: true, | ||
}, | }, | ||
mediaHandlerServiceNameTag: { | mediaHandlerServiceNameTag: { | ||
Line 71: | Line 73: | ||
<syntaxhighlight lang="JavaScript"> | <syntaxhighlight lang="JavaScript"> | ||
{ | { | ||
nodeLabel: " | nodeLabel: "{MediaSharedLib.MEDIALINK_GRAPH_NODE_LABEL}PropertyLabel", | ||
} | } | ||
{ | { | ||
nodeLabel: " | nodeLabel: "{MediaSharedLib.MEDIALINK_GRAPH_NODE_LABEL}Property", | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 83: | Line 85: | ||
<syntaxhighlight lang="JavaScript"> | <syntaxhighlight lang="JavaScript"> | ||
{ | { | ||
relationshipType: " | relationshipType: "has_{MediaSharedLib.MEDIALINK_GRAPH_NODE_LABEL}Property", | ||
} | |||
{ | |||
relationshipType: "disabled_{MediaSharedLib.MEDIALINK_GRAPH_NODE_LABEL}Property", | |||
} | |||
{ | |||
relationshipType: "is_{MediaSharedLib.MEDIALINK_GRAPH_NODE_LABEL}PropertyLabel", | |||
} | } | ||
{ | { | ||
relationshipType: " | relationshipType: "{MediaSharedLib.IS_MEDIA_GRAPH_REL_TYPE}", | ||
} | } | ||
{ | { | ||
relationshipType: " | relationshipType: "{MediaSharedLib.HAS_MEDIALINK_GRAPH_REL_TYPE}", | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 102: | Line 110: | ||
# mediaLinkProperty | # mediaLinkProperty | ||
#* [[Service - Translations Graph]] | #* [[Service - Translations Graph]] | ||
= Complex Filter requests = | |||
<syntaxhighlight lang="JavaScript"> | |||
{ | |||
filterType: "mediaLink" | |||
type: "group", | |||
elements: | |||
[ | |||
{ | |||
type: "complexFilter", | |||
complexFilter: { | |||
filterType: "mediaLinkProperty", | |||
type: "group", | |||
elements: | |||
[ | |||
{ | |||
type: "logical", | |||
logicalTag: "propertyLabelId", | |||
comparison: "equals", | |||
value: "lksdflkfldfgldfkgjldfg" | |||
}, | |||
] | |||
} | |||
}, | |||
] | |||
} | |||
</syntaxhighlight> | |||
- filterType: "mediaLinkProperty" sends to MediaLink service and returns resultType = "mediaLinkProperty" | |||
- by splitting into a lower level filter_type we can cache results at that level then use translateIds system to change to mediaLinkIds, this could be useful in the future when we want propertyIds to translate to other filterTypes | |||
<syntaxhighlight lang="JavaScript"> | |||
{ | |||
filterType: "mediaLink" | |||
type: "group", | |||
elements: | |||
[ | |||
{ | |||
type: "complexFilter", | |||
complexFilter: { | |||
filterType: "mediaLinkPropertyTranslation" | |||
type: "group", | |||
elements: | |||
[ | |||
{ | |||
type: "logical", | |||
logicalTag: "textTag_languageId_text", | |||
resultType: "mediaLinkProperty", | |||
textTag: "mediaLinkPropertyValue", | |||
languageId: "en", | |||
text: "Blue", | |||
subjectIdentifierPropertyName: "propertyId", | |||
caseSensitive: true | |||
}, | |||
] | |||
} | |||
}, | |||
... | |||
] | |||
} | |||
</syntaxhighlight> | |||
- mediaLinkPropertyTranslation filterType sends logical element directly to Translation service, which recognises logicalTag: "textTag_languageId_text" and caches the subjectIdentifierPropertyName value in its LogicalResults table | |||
= Working documents = | = Working documents = |
Latest revision as of 09:05, 15 November 2021
Overview
Manages Media Links, links might attach to many subject node types, eg Product, Sell Offer, Product Attribute, Sell Offer Term,..
Repository
https://bitbucket.org/izara-core-media/izara-core-media-media-link/src/master/
DynamoDB tables
Standard Config Table Per Service
Configuration tags
{
configKey: "MediaGraphServiceName"
configTag: "MediaGraphServiceName"
configValue: xxx // eg: "MediaGraph"
}
{
configKey: "TranslationGraphServiceName"
configTag: "TranslationGraphServiceName"
configValue: xxx // eg: "TranslationGraph"
}
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 mediaLinkId
}
- partition key: resultId
- sort key: dataId
Graph database
Service - Media Graph
Nodes
{
nodeLabel: "{MediaSharedLib.MEDIALINK_GRAPH_NODE_LABEL}",
schema: {
identifier: true,
restrictProperties: true,
restrictRelationships: true,
properties: {
mediaLinkId: {
identifier: true, // create unique id from request details
},
mediaId: {
immutable: true,
},
mediaHandlerServiceNameTag: {
immutable: true,
},
},
}
}
{
nodeLabel: "{MediaSharedLib.MEDIALINK_GRAPH_NODE_LABEL}PropertyLabel",
}
{
nodeLabel: "{MediaSharedLib.MEDIALINK_GRAPH_NODE_LABEL}Property",
}
- see DataSchemaLib
Relationships
{
relationshipType: "has_{MediaSharedLib.MEDIALINK_GRAPH_NODE_LABEL}Property",
}
{
relationshipType: "disabled_{MediaSharedLib.MEDIALINK_GRAPH_NODE_LABEL}Property",
}
{
relationshipType: "is_{MediaSharedLib.MEDIALINK_GRAPH_NODE_LABEL}PropertyLabel",
}
{
relationshipType: "{MediaSharedLib.IS_MEDIA_GRAPH_REL_TYPE}",
}
{
relationshipType: "{MediaSharedLib.HAS_MEDIALINK_GRAPH_REL_TYPE}",
}
- see DataSchemaLib
Basic node schemas
Schema comes from BasicNodeSchemaLib
- mediaLinkPropertyLabel
- mediaLinkProperty
Complex Filter requests
{
filterType: "mediaLink"
type: "group",
elements:
[
{
type: "complexFilter",
complexFilter: {
filterType: "mediaLinkProperty",
type: "group",
elements:
[
{
type: "logical",
logicalTag: "propertyLabelId",
comparison: "equals",
value: "lksdflkfldfgldfkgjldfg"
},
]
}
},
]
}
- filterType: "mediaLinkProperty" sends to MediaLink service and returns resultType = "mediaLinkProperty" - by splitting into a lower level filter_type we can cache results at that level then use translateIds system to change to mediaLinkIds, this could be useful in the future when we want propertyIds to translate to other filterTypes
{
filterType: "mediaLink"
type: "group",
elements:
[
{
type: "complexFilter",
complexFilter: {
filterType: "mediaLinkPropertyTranslation"
type: "group",
elements:
[
{
type: "logical",
logicalTag: "textTag_languageId_text",
resultType: "mediaLinkProperty",
textTag: "mediaLinkPropertyValue",
languageId: "en",
text: "Blue",
subjectIdentifierPropertyName: "propertyId",
caseSensitive: true
},
]
}
},
...
]
}
- mediaLinkPropertyTranslation filterType sends logical element directly to Translation service, which recognises logicalTag: "textTag_languageId_text" and caches the subjectIdentifierPropertyName value in its LogicalResults table