diff --git a/pkg/codegen/assets/store_rdbms.gen.go.tpl b/pkg/codegen/assets/store_rdbms.gen.go.tpl index a24b46510..ab3bab804 100644 --- a/pkg/codegen/assets/store_rdbms.gen.go.tpl +++ b/pkg/codegen/assets/store_rdbms.gen.go.tpl @@ -566,7 +566,7 @@ func (s Store) internal{{ export $.Types.Singular }}RowScanner({{ template "extr } if err != nil { - return nil, errors.Store("could not scan {{ unexport $.Types.Singular }} db row").Wrap(err) + return nil, errors.Store("could not scan {{ unexport $.Types.Singular }} db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/actionlog.gen.go b/store/rdbms/actionlog.gen.go index c7cec8116..8c560ac44 100644 --- a/store/rdbms/actionlog.gen.go +++ b/store/rdbms/actionlog.gen.go @@ -141,7 +141,7 @@ func (s Store) internalActionlogRowScanner(row rowScanner) (res *actionlog.Actio } if err != nil { - return nil, errors.Store("could not scan actionlog db row").Wrap(err) + return nil, errors.Store("could not scan actionlog db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/applications.gen.go b/store/rdbms/applications.gen.go index 25fd1932c..b15b7c391 100644 --- a/store/rdbms/applications.gen.go +++ b/store/rdbms/applications.gen.go @@ -448,7 +448,7 @@ func (s Store) internalApplicationRowScanner(row rowScanner) (res *types.Applica } if err != nil { - return nil, errors.Store("could not scan application db row").Wrap(err) + return nil, errors.Store("could not scan application db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/attachments.gen.go b/store/rdbms/attachments.gen.go index 789e2d7ae..41808da51 100644 --- a/store/rdbms/attachments.gen.go +++ b/store/rdbms/attachments.gen.go @@ -263,7 +263,7 @@ func (s Store) internalAttachmentRowScanner(row rowScanner) (res *types.Attachme } if err != nil { - return nil, errors.Store("could not scan attachment db row").Wrap(err) + return nil, errors.Store("could not scan attachment db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/compose_attachments.gen.go b/store/rdbms/compose_attachments.gen.go index 5d8294b4e..80e7cb05c 100644 --- a/store/rdbms/compose_attachments.gen.go +++ b/store/rdbms/compose_attachments.gen.go @@ -264,7 +264,7 @@ func (s Store) internalComposeAttachmentRowScanner(row rowScanner) (res *types.A } if err != nil { - return nil, errors.Store("could not scan composeAttachment db row").Wrap(err) + return nil, errors.Store("could not scan composeAttachment db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/compose_charts.gen.go b/store/rdbms/compose_charts.gen.go index 5fa1e1522..2c09287e2 100644 --- a/store/rdbms/compose_charts.gen.go +++ b/store/rdbms/compose_charts.gen.go @@ -457,7 +457,7 @@ func (s Store) internalComposeChartRowScanner(row rowScanner) (res *types.Chart, } if err != nil { - return nil, errors.Store("could not scan composeChart db row").Wrap(err) + return nil, errors.Store("could not scan composeChart db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/compose_module_fields.gen.go b/store/rdbms/compose_module_fields.gen.go index 3df4f7dfe..2baaee4c4 100644 --- a/store/rdbms/compose_module_fields.gen.go +++ b/store/rdbms/compose_module_fields.gen.go @@ -260,7 +260,7 @@ func (s Store) internalComposeModuleFieldRowScanner(row rowScanner) (res *types. } if err != nil { - return nil, errors.Store("could not scan composeModuleField db row").Wrap(err) + return nil, errors.Store("could not scan composeModuleField db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/compose_modules.gen.go b/store/rdbms/compose_modules.gen.go index e95f8d0ec..66dc1cdf6 100644 --- a/store/rdbms/compose_modules.gen.go +++ b/store/rdbms/compose_modules.gen.go @@ -467,7 +467,7 @@ func (s Store) internalComposeModuleRowScanner(row rowScanner) (res *types.Modul } if err != nil { - return nil, errors.Store("could not scan composeModule db row").Wrap(err) + return nil, errors.Store("could not scan composeModule db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/compose_namespaces.gen.go b/store/rdbms/compose_namespaces.gen.go index e4d48efc7..c9425dcdb 100644 --- a/store/rdbms/compose_namespaces.gen.go +++ b/store/rdbms/compose_namespaces.gen.go @@ -456,7 +456,7 @@ func (s Store) internalComposeNamespaceRowScanner(row rowScanner) (res *types.Na } if err != nil { - return nil, errors.Store("could not scan composeNamespace db row").Wrap(err) + return nil, errors.Store("could not scan composeNamespace db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/compose_pages.gen.go b/store/rdbms/compose_pages.gen.go index ef9a437c9..dbdabc343 100644 --- a/store/rdbms/compose_pages.gen.go +++ b/store/rdbms/compose_pages.gen.go @@ -472,7 +472,7 @@ func (s Store) internalComposePageRowScanner(row rowScanner) (res *types.Page, e } if err != nil { - return nil, errors.Store("could not scan composePage db row").Wrap(err) + return nil, errors.Store("could not scan composePage db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/compose_record_values.gen.go b/store/rdbms/compose_record_values.gen.go index 0da88a7b0..44cc261aa 100644 --- a/store/rdbms/compose_record_values.gen.go +++ b/store/rdbms/compose_record_values.gen.go @@ -244,7 +244,7 @@ func (s Store) internalComposeRecordValueRowScanner(_mod *types.Module, row rowS } if err != nil { - return nil, errors.Store("could not scan composeRecordValue db row").Wrap(err) + return nil, errors.Store("could not scan composeRecordValue db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/compose_records.gen.go b/store/rdbms/compose_records.gen.go index 9537348d1..409de488a 100644 --- a/store/rdbms/compose_records.gen.go +++ b/store/rdbms/compose_records.gen.go @@ -383,7 +383,7 @@ func (s Store) internalComposeRecordRowScanner(_mod *types.Module, row rowScanne } if err != nil { - return nil, errors.Store("could not scan composeRecord db row").Wrap(err) + return nil, errors.Store("could not scan composeRecord db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/credentials.gen.go b/store/rdbms/credentials.gen.go index 3de17d880..48de98a60 100644 --- a/store/rdbms/credentials.gen.go +++ b/store/rdbms/credentials.gen.go @@ -254,7 +254,7 @@ func (s Store) internalCredentialsRowScanner(row rowScanner) (res *types.Credent } if err != nil { - return nil, errors.Store("could not scan credentials db row").Wrap(err) + return nil, errors.Store("could not scan credentials db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/federation_exposed_modules.gen.go b/store/rdbms/federation_exposed_modules.gen.go index 04d5b06de..679d14c6b 100644 --- a/store/rdbms/federation_exposed_modules.gen.go +++ b/store/rdbms/federation_exposed_modules.gen.go @@ -452,7 +452,7 @@ func (s Store) internalFederationExposedModuleRowScanner(row rowScanner) (res *t } if err != nil { - return nil, errors.Store("could not scan federationExposedModule db row").Wrap(err) + return nil, errors.Store("could not scan federationExposedModule db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/federation_module_mappings.gen.go b/store/rdbms/federation_module_mappings.gen.go index d835a1f29..bdbd0a453 100644 --- a/store/rdbms/federation_module_mappings.gen.go +++ b/store/rdbms/federation_module_mappings.gen.go @@ -470,7 +470,7 @@ func (s Store) internalFederationModuleMappingRowScanner(row rowScanner) (res *t } if err != nil { - return nil, errors.Store("could not scan federationModuleMapping db row").Wrap(err) + return nil, errors.Store("could not scan federationModuleMapping db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/federation_nodes.gen.go b/store/rdbms/federation_nodes.gen.go index 1a50428a1..f3b029bc5 100644 --- a/store/rdbms/federation_nodes.gen.go +++ b/store/rdbms/federation_nodes.gen.go @@ -282,7 +282,7 @@ func (s Store) internalFederationNodeRowScanner(row rowScanner) (res *types.Node } if err != nil { - return nil, errors.Store("could not scan federationNode db row").Wrap(err) + return nil, errors.Store("could not scan federationNode db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/federation_nodes_sync.gen.go b/store/rdbms/federation_nodes_sync.gen.go index df6191ae5..523377ad9 100644 --- a/store/rdbms/federation_nodes_sync.gen.go +++ b/store/rdbms/federation_nodes_sync.gen.go @@ -456,7 +456,7 @@ func (s Store) internalFederationNodesSyncRowScanner(row rowScanner) (res *types } if err != nil { - return nil, errors.Store("could not scan federationNodesSync db row").Wrap(err) + return nil, errors.Store("could not scan federationNodesSync db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/federation_shared_modules.gen.go b/store/rdbms/federation_shared_modules.gen.go index 9a9f55a9d..9bd5e0ecd 100644 --- a/store/rdbms/federation_shared_modules.gen.go +++ b/store/rdbms/federation_shared_modules.gen.go @@ -451,7 +451,7 @@ func (s Store) internalFederationSharedModuleRowScanner(row rowScanner) (res *ty } if err != nil { - return nil, errors.Store("could not scan federationSharedModule db row").Wrap(err) + return nil, errors.Store("could not scan federationSharedModule db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/labels.gen.go b/store/rdbms/labels.gen.go index bf97a8899..e14dd7def 100644 --- a/store/rdbms/labels.gen.go +++ b/store/rdbms/labels.gen.go @@ -251,7 +251,7 @@ func (s Store) internalLabelRowScanner(row rowScanner) (res *types.Label, err er } if err != nil { - return nil, errors.Store("could not scan label db row").Wrap(err) + return nil, errors.Store("could not scan label db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/rbac_rules.gen.go b/store/rdbms/rbac_rules.gen.go index da82568a1..75ca96b8f 100644 --- a/store/rdbms/rbac_rules.gen.go +++ b/store/rdbms/rbac_rules.gen.go @@ -239,7 +239,7 @@ func (s Store) internalRbacRuleRowScanner(row rowScanner) (res *rbac.Rule, err e } if err != nil { - return nil, errors.Store("could not scan rbacRule db row").Wrap(err) + return nil, errors.Store("could not scan rbacRule db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/rdbms_schema.go b/store/rdbms/rdbms_schema.go index b604954fc..a933da1d0 100644 --- a/store/rdbms/rdbms_schema.go +++ b/store/rdbms/rdbms_schema.go @@ -77,6 +77,10 @@ func (s Schema) Tables() []*Table { s.FederationModuleMapping(), s.FederationNodes(), s.FederationNodesSync(), + s.AutomationWorkflows(), + s.AutomationTriggers(), + s.AutomationSessions(), + //s.AutomationState(), } } @@ -565,3 +569,62 @@ func (Schema) FederationNodesSync() *Table { ColumnDef("time_action", ColumnTypeTimestamp), ) } + +func (Schema) AutomationWorkflows() *Table { + return TableDef("automation_workflows", + ID, + ColumnDef("handle", ColumnTypeVarchar, ColumnTypeLength(handleLength)), + ColumnDef("meta", ColumnTypeJson), + ColumnDef("enabled", ColumnTypeBoolean), + ColumnDef("trace", ColumnTypeBoolean), + ColumnDef("keep_sessions", ColumnTypeInteger), + ColumnDef("scope", ColumnTypeJson), + ColumnDef("steps", ColumnTypeJson), + ColumnDef("paths", ColumnTypeJson), + ColumnDef("run_as", ColumnTypeIdentifier), + ColumnDef("owned_by", ColumnTypeIdentifier), + CUDTimestamps, + CUDUsers, + + AddIndex("unique_handle", IExpr("LOWER(handle)"), IWhere("LENGTH(handle) > 0 AND deleted_at IS NULL")), + ) +} + +func (Schema) AutomationSessions() *Table { + return TableDef("automation_sessions", + ID, + ColumnDef("rel_workflow", ColumnTypeIdentifier), + ColumnDef("status", ColumnTypeInteger), + ColumnDef("event_type", ColumnTypeText, ColumnTypeLength(handleLength)), + ColumnDef("resource_type", ColumnTypeText, ColumnTypeLength(handleLength)), + ColumnDef("input", ColumnTypeJson), + ColumnDef("output", ColumnTypeJson), + ColumnDef("stacktrace", ColumnTypeJson), + ColumnDef("created_by", ColumnTypeIdentifier), + ColumnDef("created_at", ColumnTypeTimestamp), + ColumnDef("purge_at", ColumnTypeTimestamp, Null), + ColumnDef("suspended_at", ColumnTypeTimestamp, Null), + ColumnDef("completed_at", ColumnTypeTimestamp, Null), + ColumnDef("error", ColumnTypeText), + + AddIndex("workflow", IColumn("rel_workflow")), + ) +} + +func (Schema) AutomationTriggers() *Table { + return TableDef("automation_triggers", + ID, + ColumnDef("rel_workflow", ColumnTypeIdentifier), + ColumnDef("rel_step", ColumnTypeIdentifier), + ColumnDef("enabled", ColumnTypeBoolean), + ColumnDef("resource_type", ColumnTypeText, ColumnTypeLength(handleLength)), + ColumnDef("event_type", ColumnTypeText, ColumnTypeLength(handleLength)), + ColumnDef("constraints", ColumnTypeJson), + ColumnDef("input", ColumnTypeJson), + ColumnDef("owned_by", ColumnTypeIdentifier), + CUDTimestamps, + CUDUsers, + + AddIndex("workflow", IColumn("rel_workflow")), + ) +} diff --git a/store/rdbms/reminders.gen.go b/store/rdbms/reminders.gen.go index ab603420a..2a95a1628 100644 --- a/store/rdbms/reminders.gen.go +++ b/store/rdbms/reminders.gen.go @@ -452,7 +452,7 @@ func (s Store) internalReminderRowScanner(row rowScanner) (res *types.Reminder, } if err != nil { - return nil, errors.Store("could not scan reminder db row").Wrap(err) + return nil, errors.Store("could not scan reminder db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/role_members.gen.go b/store/rdbms/role_members.gen.go index 879ef62c7..c7180ac42 100644 --- a/store/rdbms/role_members.gen.go +++ b/store/rdbms/role_members.gen.go @@ -238,7 +238,7 @@ func (s Store) internalRoleMemberRowScanner(row rowScanner) (res *types.RoleMemb } if err != nil { - return nil, errors.Store("could not scan roleMember db row").Wrap(err) + return nil, errors.Store("could not scan roleMember db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/roles.gen.go b/store/rdbms/roles.gen.go index d6f80f513..388cb1844 100644 --- a/store/rdbms/roles.gen.go +++ b/store/rdbms/roles.gen.go @@ -470,7 +470,7 @@ func (s Store) internalRoleRowScanner(row rowScanner) (res *types.Role, err erro } if err != nil { - return nil, errors.Store("could not scan role db row").Wrap(err) + return nil, errors.Store("could not scan role db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/settings.gen.go b/store/rdbms/settings.gen.go index 66228327a..300d3c345 100644 --- a/store/rdbms/settings.gen.go +++ b/store/rdbms/settings.gen.go @@ -259,7 +259,7 @@ func (s Store) internalSettingRowScanner(row rowScanner) (res *types.SettingValu } if err != nil { - return nil, errors.Store("could not scan setting db row").Wrap(err) + return nil, errors.Store("could not scan setting db row: %s", err).Wrap(err) } else { return res, nil } diff --git a/store/rdbms/users.gen.go b/store/rdbms/users.gen.go index 34d9bdc94..843633f09 100644 --- a/store/rdbms/users.gen.go +++ b/store/rdbms/users.gen.go @@ -484,7 +484,7 @@ func (s Store) internalUserRowScanner(row rowScanner) (res *types.User, err erro } if err != nil { - return nil, errors.Store("could not scan user db row").Wrap(err) + return nil, errors.Store("could not scan user db row: %s", err).Wrap(err) } else { return res, nil }