Service - FormObjectCreate Config
Jump to navigation
Jump to search
Overview
Manages configuration for one form used to create a new object
Repository
https://bitbucket.org/izara-core-shared/izara-core-shared-formobjectcreate-config
ObjectSchema
formObjectCreateConfig
[
{
objectType: "formObjectCreateConfig",
storageResources: {
"dynamodb": {
storageType: "dynamoDB",
tableName: "FormObjectCreateConfigMain"
}
},
fieldNames: {
formObjectCreateConfigId: {
type: "string",
randomOnCreate: true,
requiredOnCreate: false,
optionalOnCreate: false,
canUpdate: false,
storageResourceTags: ['dynamodb'],
},
formObjectCreateConfig: {
type: "object",
randomOnCreate: false,
requiredOnCreate: true,
optionalOnCreate: false,
canUpdate: false,
storageResourceTags: ['dynamodb'],
},
formObjectCreateConfigName: {
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",
fieldName:"formObjectCreateConfigId"
},
],
},
]
DynamoDB tables
FormObjectCreateConfigMain
{
formObjectCreateConfigId: "xx", // {random uuid}
formObjectCreateConfig: "xx", // json encoded object of configuration
formObjectCreateConfigName: "yy", // user specified name of the config
userId: "xx"
}
- partition key: formObjectCreateConfigId
- sort key: {none}
UsersFormObjectCreateConfigs
{
userId: "xx" // user who owns the config
formObjectCreateConfigId: "xx",
}
- partition key: userId
- sort key: formObjectCreateConfigId
formObjectCreateConfig Object
{
formName: "xx", // set by the creator of the form, displayed in setup pages
// grouping/row/cell/elements structure same tableConfig
// add css theme and overwrite settings
// standardize property names to match tableConfig structure (eg elementTypes)
rows: {
rowName: "xx",
groupings: [
{
groupingName: "xx",
rows: [
{
rowName: "xx",
cells: [
{
cellName: "xx",
elements: [
{
formElementType: "freeText", // freeText|data{same tableConfig}
text: "xxx",
},
{
formElementType: "data{same tableConfig}",
fieldName: "fieldName_1",
},
// want to add way to also create or link to other objects according to relationshipTypes
]
},
// ..
]
},
//...
],
},
//...
],
},
//...
}