Service - Menu Config: Difference between revisions
Jump to navigation
Jump to search
(→OnDrag) |
mNo edit summary |
||
| (4 intermediate revisions by 3 users not shown) | |||
| Line 6: | Line 6: | ||
https://bitbucket.org/izara-core-shared/izara-core-shared-menu-config | https://bitbucket.org/izara-core-shared/izara-core-shared-menu-config | ||
= ObjectSchema = | |||
== MenuConfig == | |||
<syntaxhighlight lang="JavaScript"> | |||
[ | |||
{ | |||
objectType: "menuConfig", | |||
storageResources: { | |||
"dynamodb": { | |||
storageType: "dynamoDB", | |||
tableName: "MenuConfigMain", | |||
} | |||
}, | |||
fieldNames: { | |||
menuConfigId: { | |||
type: "string", | |||
randomOnCreate: true, | |||
requiredOnCreate: false, | |||
optionalOnCreate: false, | |||
canUpdate: false, | |||
storageResourceTags: ['dynamodb'], | |||
}, | |||
menuConfig: { | |||
type: "object", | |||
randomOnCreate: false, | |||
requiredOnCreate: true, | |||
optionalOnCreate: false, | |||
canUpdate: true, | |||
storageResourceTags: ['dynamodb'], | |||
}, | |||
menuConfigName: { | |||
type: "string", | |||
randomOnCreate: false, | |||
requiredOnCreate: true, | |||
optionalOnCreate: false, | |||
canUpdate: true, | |||
storageResourceTags: ['dynamodb'], | |||
}, | |||
userId: { // before put check with base-user-id or targetId | |||
type: "string", | |||
randomOnCreate: false, | |||
requiredOnCreate: true, | |||
optionalOnCreate: false, | |||
canUpdate: false, | |||
storageResourceTags: ['dynamodb'], | |||
}, | |||
}, | |||
identifiers: [ | |||
{ | |||
type: "partitionKey", | |||
fieldNames: "menuConfigId" | |||
}, | |||
], | |||
}, | |||
] | |||
</syntaxhighlight> | |||
= DynamoDB tables = | = DynamoDB tables = | ||
| Line 13: | Line 68: | ||
<syntaxhighlight lang="JavaScript"> | <syntaxhighlight lang="JavaScript"> | ||
{ | { | ||
menuConfigId: "xx", // | menuConfigId: "xx", // {random uuid} | ||
menuConfig: "xx", // json encoded object of configuration | menuConfig: "xx", // json encoded object of configuration | ||
menuConfigName: "yy", // user specified name of the config | menuConfigName: "yy", // user specified name of the config | ||
| Line 22: | Line 77: | ||
* partition key: menuConfigId | * partition key: menuConfigId | ||
* sort key: {none} | * sort key: {none} | ||
== UsersMenuConfigs == | == UsersMenuConfigs == | ||
| Line 52: | Line 106: | ||
}, | }, | ||
{ | { | ||
elementType: " | elementType: "sitePage" | ||
sitePageId: "xx", | |||
}, | }, | ||
{ | { | ||
| Line 73: | Line 125: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
= Working documents = | = Working documents = | ||
Latest revision as of 02:37, 17 July 2025
Overview
Manages configuration for site menus created by users and used in different areas of the project.
Repository
https://bitbucket.org/izara-core-shared/izara-core-shared-menu-config
ObjectSchema
MenuConfig
[
{
objectType: "menuConfig",
storageResources: {
"dynamodb": {
storageType: "dynamoDB",
tableName: "MenuConfigMain",
}
},
fieldNames: {
menuConfigId: {
type: "string",
randomOnCreate: true,
requiredOnCreate: false,
optionalOnCreate: false,
canUpdate: false,
storageResourceTags: ['dynamodb'],
},
menuConfig: {
type: "object",
randomOnCreate: false,
requiredOnCreate: true,
optionalOnCreate: false,
canUpdate: true,
storageResourceTags: ['dynamodb'],
},
menuConfigName: {
type: "string",
randomOnCreate: false,
requiredOnCreate: true,
optionalOnCreate: false,
canUpdate: true,
storageResourceTags: ['dynamodb'],
},
userId: { // before put check with base-user-id or targetId
type: "string",
randomOnCreate: false,
requiredOnCreate: true,
optionalOnCreate: false,
canUpdate: false,
storageResourceTags: ['dynamodb'],
},
},
identifiers: [
{
type: "partitionKey",
fieldNames: "menuConfigId"
},
],
},
]
DynamoDB tables
MenuConfigMain
{
menuConfigId: "xx", // {random uuid}
menuConfig: "xx", // json encoded object of configuration
menuConfigName: "yy", // user specified name of the config
userId: "xx"
}
- partition key: menuConfigId
- sort key: {none}
UsersMenuConfigs
{
userId: "xx" // user who owns the menuConfig
menuConfigId: "xx",
}
- partition key: userId
- sort key: menuConfigId
{
menuRows:[
{
rowName: "xx", // used when configuring only as a reference
menuElements: [
{
elementType: "menu"
menuElements: [
{
elementType: "staticUrl"
url: "xxx",
},
{
elementType: "sitePage"
sitePageId: "xx",
},
{
elementType: "plainText"
plainText: "xxx",
},
],
},
{
elementType: "projectMenu", // used for the main project menu
}
// ..
]
},
// ..
]
}