Service - Unit Manager
Revision as of 08:30, 6 August 2023 by Sven the Barbarian (talk | contribs)
Overview
Each unit is handled by a Service - Unit (handlers) service.
The Unit Manager service handles shared orchestration of the Unit Handler services.
Repository
https://bitbucket.org/izara-market-products/izara-market-products-unit-manager
DynamoDB tables
Standard Config Table Per Service
Configuration tags
{
configKey: "SupplyGraphServiceName"
configTag: "SupplyGraphServiceName"
configValue: xxx // eg: "SupplyGraph"
}
{
configKey: "UnitHandlerService"
configTag: xxx // unitHandlerServiceNameTag, eg: "UnitStandard"|"UnitPacking", this is what is saved in each record
configValue: {
serviceName: xxx // eg: "UnitStandard", this is the actual deployed service name}
}
}
UnitRecord
Records which Handler manages each unit
{
unitId
unitHandlerServiceNameTag
}
- partition key: unitId
- sort key: (none)
Graph database
Service - Supply Graph
Nodes
{
nodeLabel: "{UnitSharedLib.UNIT_GRAPH_NODE_LABEL}", // stored in shared npm, shared by all unit Handlers
schema: {
identifier: true,
restrictProperties: true,
restrictRelationships: true,
properties: {
unitId: {
identifier: true, //(random uuid)
},
unitHandlerServiceNameTag: {
immutable: true,
},
},
}
}
- Unit Manager is responsible for this object type because shared by all Unit Handlers
Relationships
{
relationshipType: "{UnitSharedLib.UNIT_OWNED_BY_USER_GRAPH_REL_TYPE}", // "unitOwnedBy_user"
schema: {
elementCanBeRemoved: true,
allPropertiesImmutable: false,
restrictProperties: true,
properties: {
originTimestamp: //timestamp the request to create/change this relationship was sent
},
}
}
- Links to the user who currently owns the unit
{
relationshipType: "{UnitSharedLib.UNIT_PREVIOUSLY_OWNED_BY_USER_GRAPH_REL_TYPE}", // "unitPreviouslyOwnedBy_user"
schema: {
elementCanBeRemoved: false,
allPropertiesImmutable: true,
restrictProperties: true,
properties: {
originTimestamp: //timestamp the request to create/change this relationship was sent
fromTimestamp: //timestamp ownership began
toTimestamp: //timestamp ownership ended
},
}
}
- Links to users who previously owned the unit
- Method of creating this link will be similar to versionedData, creating a new unitOwnedBy_user relationship at the same time as creating a new unitPreviouslyOwnedBy_user relationship
Ownership
Each Unit is owned by one user, who can transfer ownership to another user. Owner can set user level permissions for other users to manage their units, like any other user owned object.