3
0

Remove transaction from create/update/remove procedures

This commit is contained in:
Denis Arh
2020-08-19 15:32:40 +02:00
parent b0ea1da89f
commit 3d4c2e2f9a
16 changed files with 404 additions and 708 deletions

View File

@@ -12,7 +12,6 @@ import (
"context"
"database/sql"
"fmt"
"github.com/jmoiron/sqlx"
"github.com/Masterminds/squirrel"
"github.com/cortezaproject/corteza-server/store"
{{- if not $.Search.DisablePaging }}
@@ -300,21 +299,15 @@ func (s Store) Lookup{{ pubIdent $.Types.Singular }}By{{ pubIdent $lookup.Suffix
{{ end }}
// Create{{ pubIdent $.Types.Singular }} creates one or more rows in {{ $.RDBMS.Table }} table
func (s Store) Create{{ pubIdent $.Types.Singular }}(ctx context.Context, rr ... *{{ $.Types.GoType }}) error {
if len(rr) == 0 {
return nil
func (s Store) Create{{ pubIdent $.Types.Singular }}(ctx context.Context, rr ... *{{ $.Types.GoType }}) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.{{ $.Types.Singular }}Table()).SetMap(s.internal{{ pubIdent $.Types.Singular }}Encoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.{{ $.Types.Singular }}Table()).SetMap(s.internal{{ pubIdent $.Types.Singular }}Encoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// Update{{ pubIdent $.Types.Singular }} updates one or more existing rows in {{ $.RDBMS.Table }}
@@ -325,48 +318,36 @@ func (s Store) Update{{ pubIdent $.Types.Singular }}(ctx context.Context, rr ...
// PartialUpdate{{ pubIdent $.Types.Singular }} updates one or more existing rows in {{ $.RDBMS.Table }}
//
// It wraps the update into transaction and can perform partial update by providing list of updatable columns
func (s Store) PartialUpdate{{ pubIdent $.Types.Singular }}(ctx context.Context, onlyColumns []string, rr ... *{{ $.Types.GoType }}) error {
if len(rr) == 0 {
return nil
func (s Store) PartialUpdate{{ pubIdent $.Types.Singular }}(ctx context.Context, onlyColumns []string, rr ... *{{ $.Types.GoType }}) (err error) {
for _, res := range rr {
err = s.ExecUpdate{{ pubIdent $.Types.Plural }}(
ctx,
{{ template "filterByPrimaryKeys" $.Fields }},
s.internal{{ pubIdent $.Types.Singular }}Encoder(res).Skip(
{{- range $field := $.Fields -}}
{{- if $field.IsPrimaryKey -}}
{{ printf "%q" $field.Column }},
{{- end -}}
{{- end -}}
).Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = s.ExecUpdate{{ pubIdent $.Types.Plural }}(
ctx,
{{ template "filterByPrimaryKeys" $.Fields }},
s.internal{{ pubIdent $.Types.Singular }}Encoder(res).Skip(
{{- range $field := $.Fields -}}
{{- if $field.IsPrimaryKey -}}
{{ printf "%q" $field.Column }},
{{- end -}}
{{- end -}}
).Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// Remove{{ pubIdent $.Types.Singular }} removes one or more rows from {{ $.RDBMS.Table }} table
func (s Store) Remove{{ pubIdent $.Types.Singular }}(ctx context.Context, rr ... *{{ $.Types.GoType }}) error {
if len(rr) == 0 {
return nil
func (s Store) Remove{{ pubIdent $.Types.Singular }}(ctx context.Context, rr ... *{{ $.Types.GoType }}) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.{{ $.Types.Singular }}Table({{ printf "%q" .RDBMS.Alias }})).Where({{ template "filterByPrimaryKeys" $.Fields }},))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.{{ $.Types.Singular }}Table({{ printf "%q" .RDBMS.Alias }})).Where({{ template "filterByPrimaryKeys" $.Fields }},))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return nil
}

View File

@@ -15,7 +15,6 @@ import (
"github.com/Masterminds/squirrel"
"github.com/cortezaproject/corteza-server/pkg/actionlog"
"github.com/cortezaproject/corteza-server/store"
"github.com/jmoiron/sqlx"
"strings"
)
@@ -192,21 +191,15 @@ func (s Store) SearchActionlogs(ctx context.Context, f actionlog.Filter) (action
}
// CreateActionlog creates one or more rows in actionlog table
func (s Store) CreateActionlog(ctx context.Context, rr ...*actionlog.Action) error {
if len(rr) == 0 {
return nil
func (s Store) CreateActionlog(ctx context.Context, rr ...*actionlog.Action) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.ActionlogTable()).SetMap(s.internalActionlogEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.ActionlogTable()).SetMap(s.internalActionlogEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// UpdateActionlog updates one or more existing rows in actionlog
@@ -217,42 +210,30 @@ func (s Store) UpdateActionlog(ctx context.Context, rr ...*actionlog.Action) err
// PartialUpdateActionlog updates one or more existing rows in actionlog
//
// It wraps the update into transaction and can perform partial update by providing list of updatable columns
func (s Store) PartialUpdateActionlog(ctx context.Context, onlyColumns []string, rr ...*actionlog.Action) error {
if len(rr) == 0 {
return nil
func (s Store) PartialUpdateActionlog(ctx context.Context, onlyColumns []string, rr ...*actionlog.Action) (err error) {
for _, res := range rr {
err = s.ExecUpdateActionlogs(
ctx,
squirrel.Eq{s.preprocessColumn("alg.id", ""): s.preprocessValue(res.ID, "")},
s.internalActionlogEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = s.ExecUpdateActionlogs(
ctx,
squirrel.Eq{s.preprocessColumn("alg.id", ""): s.preprocessValue(res.ID, "")},
s.internalActionlogEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// RemoveActionlog removes one or more rows from actionlog table
func (s Store) RemoveActionlog(ctx context.Context, rr ...*actionlog.Action) error {
if len(rr) == 0 {
return nil
func (s Store) RemoveActionlog(ctx context.Context, rr ...*actionlog.Action) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.ActionlogTable("alg")).Where(squirrel.Eq{s.preprocessColumn("alg.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.ActionlogTable("alg")).Where(squirrel.Eq{s.preprocessColumn("alg.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return nil
}
// RemoveActionlogByID removes row from the actionlog table

View File

@@ -15,7 +15,6 @@ import (
"github.com/Masterminds/squirrel"
"github.com/cortezaproject/corteza-server/store"
"github.com/cortezaproject/corteza-server/system/types"
"github.com/jmoiron/sqlx"
"strings"
)
@@ -232,21 +231,15 @@ func (s Store) LookupApplicationByID(ctx context.Context, id uint64) (*types.App
}
// CreateApplication creates one or more rows in applications table
func (s Store) CreateApplication(ctx context.Context, rr ...*types.Application) error {
if len(rr) == 0 {
return nil
func (s Store) CreateApplication(ctx context.Context, rr ...*types.Application) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.ApplicationTable()).SetMap(s.internalApplicationEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.ApplicationTable()).SetMap(s.internalApplicationEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// UpdateApplication updates one or more existing rows in applications
@@ -257,42 +250,30 @@ func (s Store) UpdateApplication(ctx context.Context, rr ...*types.Application)
// PartialUpdateApplication updates one or more existing rows in applications
//
// It wraps the update into transaction and can perform partial update by providing list of updatable columns
func (s Store) PartialUpdateApplication(ctx context.Context, onlyColumns []string, rr ...*types.Application) error {
if len(rr) == 0 {
return nil
func (s Store) PartialUpdateApplication(ctx context.Context, onlyColumns []string, rr ...*types.Application) (err error) {
for _, res := range rr {
err = s.ExecUpdateApplications(
ctx,
squirrel.Eq{s.preprocessColumn("app.id", ""): s.preprocessValue(res.ID, "")},
s.internalApplicationEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = s.ExecUpdateApplications(
ctx,
squirrel.Eq{s.preprocessColumn("app.id", ""): s.preprocessValue(res.ID, "")},
s.internalApplicationEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// RemoveApplication removes one or more rows from applications table
func (s Store) RemoveApplication(ctx context.Context, rr ...*types.Application) error {
if len(rr) == 0 {
return nil
func (s Store) RemoveApplication(ctx context.Context, rr ...*types.Application) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.ApplicationTable("app")).Where(squirrel.Eq{s.preprocessColumn("app.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.ApplicationTable("app")).Where(squirrel.Eq{s.preprocessColumn("app.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return nil
}
// RemoveApplicationByID removes row from the applications table

View File

@@ -15,7 +15,6 @@ import (
"github.com/Masterminds/squirrel"
"github.com/cortezaproject/corteza-server/store"
"github.com/cortezaproject/corteza-server/system/types"
"github.com/jmoiron/sqlx"
)
// SearchAttachments returns all matching rows
@@ -77,21 +76,15 @@ func (s Store) LookupAttachmentByID(ctx context.Context, id uint64) (*types.Atta
}
// CreateAttachment creates one or more rows in attachments table
func (s Store) CreateAttachment(ctx context.Context, rr ...*types.Attachment) error {
if len(rr) == 0 {
return nil
func (s Store) CreateAttachment(ctx context.Context, rr ...*types.Attachment) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.AttachmentTable()).SetMap(s.internalAttachmentEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.AttachmentTable()).SetMap(s.internalAttachmentEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// UpdateAttachment updates one or more existing rows in attachments
@@ -102,42 +95,30 @@ func (s Store) UpdateAttachment(ctx context.Context, rr ...*types.Attachment) er
// PartialUpdateAttachment updates one or more existing rows in attachments
//
// It wraps the update into transaction and can perform partial update by providing list of updatable columns
func (s Store) PartialUpdateAttachment(ctx context.Context, onlyColumns []string, rr ...*types.Attachment) error {
if len(rr) == 0 {
return nil
func (s Store) PartialUpdateAttachment(ctx context.Context, onlyColumns []string, rr ...*types.Attachment) (err error) {
for _, res := range rr {
err = s.ExecUpdateAttachments(
ctx,
squirrel.Eq{s.preprocessColumn("att.id", ""): s.preprocessValue(res.ID, "")},
s.internalAttachmentEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = s.ExecUpdateAttachments(
ctx,
squirrel.Eq{s.preprocessColumn("att.id", ""): s.preprocessValue(res.ID, "")},
s.internalAttachmentEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// RemoveAttachment removes one or more rows from attachments table
func (s Store) RemoveAttachment(ctx context.Context, rr ...*types.Attachment) error {
if len(rr) == 0 {
return nil
func (s Store) RemoveAttachment(ctx context.Context, rr ...*types.Attachment) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.AttachmentTable("att")).Where(squirrel.Eq{s.preprocessColumn("att.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.AttachmentTable("att")).Where(squirrel.Eq{s.preprocessColumn("att.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return nil
}
// RemoveAttachmentByID removes row from the attachments table

View File

@@ -15,7 +15,6 @@ import (
"github.com/Masterminds/squirrel"
"github.com/cortezaproject/corteza-server/compose/types"
"github.com/cortezaproject/corteza-server/store"
"github.com/jmoiron/sqlx"
"strings"
)
@@ -239,21 +238,15 @@ func (s Store) LookupComposeChartByHandle(ctx context.Context, handle string) (*
}
// CreateComposeChart creates one or more rows in compose_chart table
func (s Store) CreateComposeChart(ctx context.Context, rr ...*types.Chart) error {
if len(rr) == 0 {
return nil
func (s Store) CreateComposeChart(ctx context.Context, rr ...*types.Chart) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.ComposeChartTable()).SetMap(s.internalComposeChartEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.ComposeChartTable()).SetMap(s.internalComposeChartEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// UpdateComposeChart updates one or more existing rows in compose_chart
@@ -264,42 +257,30 @@ func (s Store) UpdateComposeChart(ctx context.Context, rr ...*types.Chart) error
// PartialUpdateComposeChart updates one or more existing rows in compose_chart
//
// It wraps the update into transaction and can perform partial update by providing list of updatable columns
func (s Store) PartialUpdateComposeChart(ctx context.Context, onlyColumns []string, rr ...*types.Chart) error {
if len(rr) == 0 {
return nil
func (s Store) PartialUpdateComposeChart(ctx context.Context, onlyColumns []string, rr ...*types.Chart) (err error) {
for _, res := range rr {
err = s.ExecUpdateComposeCharts(
ctx,
squirrel.Eq{s.preprocessColumn("cch.id", ""): s.preprocessValue(res.ID, "")},
s.internalComposeChartEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = s.ExecUpdateComposeCharts(
ctx,
squirrel.Eq{s.preprocessColumn("cch.id", ""): s.preprocessValue(res.ID, "")},
s.internalComposeChartEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// RemoveComposeChart removes one or more rows from compose_chart table
func (s Store) RemoveComposeChart(ctx context.Context, rr ...*types.Chart) error {
if len(rr) == 0 {
return nil
func (s Store) RemoveComposeChart(ctx context.Context, rr ...*types.Chart) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.ComposeChartTable("cch")).Where(squirrel.Eq{s.preprocessColumn("cch.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.ComposeChartTable("cch")).Where(squirrel.Eq{s.preprocessColumn("cch.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return nil
}
// RemoveComposeChartByID removes row from the compose_chart table

View File

@@ -15,25 +15,18 @@ import (
"github.com/Masterminds/squirrel"
"github.com/cortezaproject/corteza-server/compose/types"
"github.com/cortezaproject/corteza-server/store"
"github.com/jmoiron/sqlx"
)
// CreateComposeModuleField creates one or more rows in compose_module_field table
func (s Store) CreateComposeModuleField(ctx context.Context, rr ...*types.ModuleField) error {
if len(rr) == 0 {
return nil
func (s Store) CreateComposeModuleField(ctx context.Context, rr ...*types.ModuleField) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.ComposeModuleFieldTable()).SetMap(s.internalComposeModuleFieldEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.ComposeModuleFieldTable()).SetMap(s.internalComposeModuleFieldEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// UpdateComposeModuleField updates one or more existing rows in compose_module_field
@@ -44,42 +37,30 @@ func (s Store) UpdateComposeModuleField(ctx context.Context, rr ...*types.Module
// PartialUpdateComposeModuleField updates one or more existing rows in compose_module_field
//
// It wraps the update into transaction and can perform partial update by providing list of updatable columns
func (s Store) PartialUpdateComposeModuleField(ctx context.Context, onlyColumns []string, rr ...*types.ModuleField) error {
if len(rr) == 0 {
return nil
func (s Store) PartialUpdateComposeModuleField(ctx context.Context, onlyColumns []string, rr ...*types.ModuleField) (err error) {
for _, res := range rr {
err = s.ExecUpdateComposeModuleFields(
ctx,
squirrel.Eq{s.preprocessColumn("cmf.id", ""): s.preprocessValue(res.ID, "")},
s.internalComposeModuleFieldEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = s.ExecUpdateComposeModuleFields(
ctx,
squirrel.Eq{s.preprocessColumn("cmf.id", ""): s.preprocessValue(res.ID, "")},
s.internalComposeModuleFieldEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// RemoveComposeModuleField removes one or more rows from compose_module_field table
func (s Store) RemoveComposeModuleField(ctx context.Context, rr ...*types.ModuleField) error {
if len(rr) == 0 {
return nil
func (s Store) RemoveComposeModuleField(ctx context.Context, rr ...*types.ModuleField) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.ComposeModuleFieldTable("cmf")).Where(squirrel.Eq{s.preprocessColumn("cmf.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.ComposeModuleFieldTable("cmf")).Where(squirrel.Eq{s.preprocessColumn("cmf.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return nil
}
// RemoveComposeModuleFieldByID removes row from the compose_module_field table

View File

@@ -15,7 +15,6 @@ import (
"github.com/Masterminds/squirrel"
"github.com/cortezaproject/corteza-server/compose/types"
"github.com/cortezaproject/corteza-server/store"
"github.com/jmoiron/sqlx"
"strings"
)
@@ -239,21 +238,15 @@ func (s Store) LookupComposeModuleByID(ctx context.Context, id uint64) (*types.M
}
// CreateComposeModule creates one or more rows in compose_module table
func (s Store) CreateComposeModule(ctx context.Context, rr ...*types.Module) error {
if len(rr) == 0 {
return nil
func (s Store) CreateComposeModule(ctx context.Context, rr ...*types.Module) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.ComposeModuleTable()).SetMap(s.internalComposeModuleEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.ComposeModuleTable()).SetMap(s.internalComposeModuleEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// UpdateComposeModule updates one or more existing rows in compose_module
@@ -264,42 +257,30 @@ func (s Store) UpdateComposeModule(ctx context.Context, rr ...*types.Module) err
// PartialUpdateComposeModule updates one or more existing rows in compose_module
//
// It wraps the update into transaction and can perform partial update by providing list of updatable columns
func (s Store) PartialUpdateComposeModule(ctx context.Context, onlyColumns []string, rr ...*types.Module) error {
if len(rr) == 0 {
return nil
func (s Store) PartialUpdateComposeModule(ctx context.Context, onlyColumns []string, rr ...*types.Module) (err error) {
for _, res := range rr {
err = s.ExecUpdateComposeModules(
ctx,
squirrel.Eq{s.preprocessColumn("cmd.id", ""): s.preprocessValue(res.ID, "")},
s.internalComposeModuleEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = s.ExecUpdateComposeModules(
ctx,
squirrel.Eq{s.preprocessColumn("cmd.id", ""): s.preprocessValue(res.ID, "")},
s.internalComposeModuleEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// RemoveComposeModule removes one or more rows from compose_module table
func (s Store) RemoveComposeModule(ctx context.Context, rr ...*types.Module) error {
if len(rr) == 0 {
return nil
func (s Store) RemoveComposeModule(ctx context.Context, rr ...*types.Module) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.ComposeModuleTable("cmd")).Where(squirrel.Eq{s.preprocessColumn("cmd.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.ComposeModuleTable("cmd")).Where(squirrel.Eq{s.preprocessColumn("cmd.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return nil
}
// RemoveComposeModuleByID removes row from the compose_module table

View File

@@ -15,7 +15,6 @@ import (
"github.com/Masterminds/squirrel"
"github.com/cortezaproject/corteza-server/compose/types"
"github.com/cortezaproject/corteza-server/store"
"github.com/jmoiron/sqlx"
"strings"
)
@@ -239,21 +238,15 @@ func (s Store) LookupComposeNamespaceByID(ctx context.Context, id uint64) (*type
}
// CreateComposeNamespace creates one or more rows in compose_namespace table
func (s Store) CreateComposeNamespace(ctx context.Context, rr ...*types.Namespace) error {
if len(rr) == 0 {
return nil
func (s Store) CreateComposeNamespace(ctx context.Context, rr ...*types.Namespace) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.ComposeNamespaceTable()).SetMap(s.internalComposeNamespaceEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.ComposeNamespaceTable()).SetMap(s.internalComposeNamespaceEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// UpdateComposeNamespace updates one or more existing rows in compose_namespace
@@ -264,42 +257,30 @@ func (s Store) UpdateComposeNamespace(ctx context.Context, rr ...*types.Namespac
// PartialUpdateComposeNamespace updates one or more existing rows in compose_namespace
//
// It wraps the update into transaction and can perform partial update by providing list of updatable columns
func (s Store) PartialUpdateComposeNamespace(ctx context.Context, onlyColumns []string, rr ...*types.Namespace) error {
if len(rr) == 0 {
return nil
func (s Store) PartialUpdateComposeNamespace(ctx context.Context, onlyColumns []string, rr ...*types.Namespace) (err error) {
for _, res := range rr {
err = s.ExecUpdateComposeNamespaces(
ctx,
squirrel.Eq{s.preprocessColumn("cns.id", ""): s.preprocessValue(res.ID, "")},
s.internalComposeNamespaceEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = s.ExecUpdateComposeNamespaces(
ctx,
squirrel.Eq{s.preprocessColumn("cns.id", ""): s.preprocessValue(res.ID, "")},
s.internalComposeNamespaceEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// RemoveComposeNamespace removes one or more rows from compose_namespace table
func (s Store) RemoveComposeNamespace(ctx context.Context, rr ...*types.Namespace) error {
if len(rr) == 0 {
return nil
func (s Store) RemoveComposeNamespace(ctx context.Context, rr ...*types.Namespace) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.ComposeNamespaceTable("cns")).Where(squirrel.Eq{s.preprocessColumn("cns.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.ComposeNamespaceTable("cns")).Where(squirrel.Eq{s.preprocessColumn("cns.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return nil
}
// RemoveComposeNamespaceByID removes row from the compose_namespace table

View File

@@ -15,7 +15,6 @@ import (
"github.com/Masterminds/squirrel"
"github.com/cortezaproject/corteza-server/compose/types"
"github.com/cortezaproject/corteza-server/store"
"github.com/jmoiron/sqlx"
"strings"
)
@@ -239,21 +238,15 @@ func (s Store) LookupComposePageByID(ctx context.Context, id uint64) (*types.Pag
}
// CreateComposePage creates one or more rows in compose_page table
func (s Store) CreateComposePage(ctx context.Context, rr ...*types.Page) error {
if len(rr) == 0 {
return nil
func (s Store) CreateComposePage(ctx context.Context, rr ...*types.Page) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.ComposePageTable()).SetMap(s.internalComposePageEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.ComposePageTable()).SetMap(s.internalComposePageEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// UpdateComposePage updates one or more existing rows in compose_page
@@ -264,42 +257,30 @@ func (s Store) UpdateComposePage(ctx context.Context, rr ...*types.Page) error {
// PartialUpdateComposePage updates one or more existing rows in compose_page
//
// It wraps the update into transaction and can perform partial update by providing list of updatable columns
func (s Store) PartialUpdateComposePage(ctx context.Context, onlyColumns []string, rr ...*types.Page) error {
if len(rr) == 0 {
return nil
func (s Store) PartialUpdateComposePage(ctx context.Context, onlyColumns []string, rr ...*types.Page) (err error) {
for _, res := range rr {
err = s.ExecUpdateComposePages(
ctx,
squirrel.Eq{s.preprocessColumn("cpg.id", ""): s.preprocessValue(res.ID, "")},
s.internalComposePageEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = s.ExecUpdateComposePages(
ctx,
squirrel.Eq{s.preprocessColumn("cpg.id", ""): s.preprocessValue(res.ID, "")},
s.internalComposePageEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// RemoveComposePage removes one or more rows from compose_page table
func (s Store) RemoveComposePage(ctx context.Context, rr ...*types.Page) error {
if len(rr) == 0 {
return nil
func (s Store) RemoveComposePage(ctx context.Context, rr ...*types.Page) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.ComposePageTable("cpg")).Where(squirrel.Eq{s.preprocessColumn("cpg.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.ComposePageTable("cpg")).Where(squirrel.Eq{s.preprocessColumn("cpg.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return nil
}
// RemoveComposePageByID removes row from the compose_page table

View File

@@ -15,7 +15,6 @@ import (
"github.com/Masterminds/squirrel"
"github.com/cortezaproject/corteza-server/store"
"github.com/cortezaproject/corteza-server/system/types"
"github.com/jmoiron/sqlx"
)
// SearchCredentials returns all matching rows
@@ -77,21 +76,15 @@ func (s Store) LookupCredentialsByID(ctx context.Context, id uint64) (*types.Cre
}
// CreateCredentials creates one or more rows in credentials table
func (s Store) CreateCredentials(ctx context.Context, rr ...*types.Credentials) error {
if len(rr) == 0 {
return nil
func (s Store) CreateCredentials(ctx context.Context, rr ...*types.Credentials) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.CredentialsTable()).SetMap(s.internalCredentialsEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.CredentialsTable()).SetMap(s.internalCredentialsEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// UpdateCredentials updates one or more existing rows in credentials
@@ -102,42 +95,30 @@ func (s Store) UpdateCredentials(ctx context.Context, rr ...*types.Credentials)
// PartialUpdateCredentials updates one or more existing rows in credentials
//
// It wraps the update into transaction and can perform partial update by providing list of updatable columns
func (s Store) PartialUpdateCredentials(ctx context.Context, onlyColumns []string, rr ...*types.Credentials) error {
if len(rr) == 0 {
return nil
func (s Store) PartialUpdateCredentials(ctx context.Context, onlyColumns []string, rr ...*types.Credentials) (err error) {
for _, res := range rr {
err = s.ExecUpdateCredentials(
ctx,
squirrel.Eq{s.preprocessColumn("crd.id", ""): s.preprocessValue(res.ID, "")},
s.internalCredentialsEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = s.ExecUpdateCredentials(
ctx,
squirrel.Eq{s.preprocessColumn("crd.id", ""): s.preprocessValue(res.ID, "")},
s.internalCredentialsEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// RemoveCredentials removes one or more rows from credentials table
func (s Store) RemoveCredentials(ctx context.Context, rr ...*types.Credentials) error {
if len(rr) == 0 {
return nil
func (s Store) RemoveCredentials(ctx context.Context, rr ...*types.Credentials) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.CredentialsTable("crd")).Where(squirrel.Eq{s.preprocessColumn("crd.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.CredentialsTable("crd")).Where(squirrel.Eq{s.preprocessColumn("crd.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return nil
}
// RemoveCredentialsByID removes row from the credentials table

View File

@@ -15,7 +15,6 @@ import (
"github.com/Masterminds/squirrel"
"github.com/cortezaproject/corteza-server/pkg/permissions"
"github.com/cortezaproject/corteza-server/store"
"github.com/jmoiron/sqlx"
)
// SearchRbacRules returns all matching rows
@@ -65,21 +64,15 @@ func (s Store) SearchRbacRules(ctx context.Context, f permissions.RuleFilter) (p
}
// CreateRbacRule creates one or more rows in rbac_rules table
func (s Store) CreateRbacRule(ctx context.Context, rr ...*permissions.Rule) error {
if len(rr) == 0 {
return nil
func (s Store) CreateRbacRule(ctx context.Context, rr ...*permissions.Rule) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.RbacRuleTable()).SetMap(s.internalRbacRuleEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.RbacRuleTable()).SetMap(s.internalRbacRuleEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// UpdateRbacRule updates one or more existing rows in rbac_rules
@@ -90,48 +83,36 @@ func (s Store) UpdateRbacRule(ctx context.Context, rr ...*permissions.Rule) erro
// PartialUpdateRbacRule updates one or more existing rows in rbac_rules
//
// It wraps the update into transaction and can perform partial update by providing list of updatable columns
func (s Store) PartialUpdateRbacRule(ctx context.Context, onlyColumns []string, rr ...*permissions.Rule) error {
if len(rr) == 0 {
return nil
func (s Store) PartialUpdateRbacRule(ctx context.Context, onlyColumns []string, rr ...*permissions.Rule) (err error) {
for _, res := range rr {
err = s.ExecUpdateRbacRules(
ctx,
squirrel.Eq{s.preprocessColumn("rls.rel_role", ""): s.preprocessValue(res.RoleID, ""),
s.preprocessColumn("rls.resource", ""): s.preprocessValue(res.Resource, ""),
s.preprocessColumn("rls.operation", ""): s.preprocessValue(res.Operation, ""),
},
s.internalRbacRuleEncoder(res).Skip("rel_role", "resource", "operation").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = s.ExecUpdateRbacRules(
ctx,
squirrel.Eq{s.preprocessColumn("rls.rel_role", ""): s.preprocessValue(res.RoleID, ""),
s.preprocessColumn("rls.resource", ""): s.preprocessValue(res.Resource, ""),
s.preprocessColumn("rls.operation", ""): s.preprocessValue(res.Operation, ""),
},
s.internalRbacRuleEncoder(res).Skip("rel_role", "resource", "operation").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// RemoveRbacRule removes one or more rows from rbac_rules table
func (s Store) RemoveRbacRule(ctx context.Context, rr ...*permissions.Rule) error {
if len(rr) == 0 {
return nil
func (s Store) RemoveRbacRule(ctx context.Context, rr ...*permissions.Rule) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.RbacRuleTable("rls")).Where(squirrel.Eq{s.preprocessColumn("rls.rel_role", ""): s.preprocessValue(res.RoleID, ""),
s.preprocessColumn("rls.resource", ""): s.preprocessValue(res.Resource, ""),
s.preprocessColumn("rls.operation", ""): s.preprocessValue(res.Operation, ""),
}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.RbacRuleTable("rls")).Where(squirrel.Eq{s.preprocessColumn("rls.rel_role", ""): s.preprocessValue(res.RoleID, ""),
s.preprocessColumn("rls.resource", ""): s.preprocessValue(res.Resource, ""),
s.preprocessColumn("rls.operation", ""): s.preprocessValue(res.Operation, ""),
}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return nil
}
// RemoveRbacRuleByRoleIDResourceOperation removes row from the rbac_rules table

View File

@@ -15,7 +15,6 @@ import (
"github.com/Masterminds/squirrel"
"github.com/cortezaproject/corteza-server/store"
"github.com/cortezaproject/corteza-server/system/types"
"github.com/jmoiron/sqlx"
"strings"
)
@@ -232,21 +231,15 @@ func (s Store) LookupReminderByID(ctx context.Context, id uint64) (*types.Remind
}
// CreateReminder creates one or more rows in reminders table
func (s Store) CreateReminder(ctx context.Context, rr ...*types.Reminder) error {
if len(rr) == 0 {
return nil
func (s Store) CreateReminder(ctx context.Context, rr ...*types.Reminder) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.ReminderTable()).SetMap(s.internalReminderEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.ReminderTable()).SetMap(s.internalReminderEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// UpdateReminder updates one or more existing rows in reminders
@@ -257,42 +250,30 @@ func (s Store) UpdateReminder(ctx context.Context, rr ...*types.Reminder) error
// PartialUpdateReminder updates one or more existing rows in reminders
//
// It wraps the update into transaction and can perform partial update by providing list of updatable columns
func (s Store) PartialUpdateReminder(ctx context.Context, onlyColumns []string, rr ...*types.Reminder) error {
if len(rr) == 0 {
return nil
func (s Store) PartialUpdateReminder(ctx context.Context, onlyColumns []string, rr ...*types.Reminder) (err error) {
for _, res := range rr {
err = s.ExecUpdateReminders(
ctx,
squirrel.Eq{s.preprocessColumn("rmd.id", ""): s.preprocessValue(res.ID, "")},
s.internalReminderEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = s.ExecUpdateReminders(
ctx,
squirrel.Eq{s.preprocessColumn("rmd.id", ""): s.preprocessValue(res.ID, "")},
s.internalReminderEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// RemoveReminder removes one or more rows from reminders table
func (s Store) RemoveReminder(ctx context.Context, rr ...*types.Reminder) error {
if len(rr) == 0 {
return nil
func (s Store) RemoveReminder(ctx context.Context, rr ...*types.Reminder) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.ReminderTable("rmd")).Where(squirrel.Eq{s.preprocessColumn("rmd.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.ReminderTable("rmd")).Where(squirrel.Eq{s.preprocessColumn("rmd.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return nil
}
// RemoveReminderByID removes row from the reminders table

View File

@@ -15,7 +15,6 @@ import (
"github.com/Masterminds/squirrel"
"github.com/cortezaproject/corteza-server/store"
"github.com/cortezaproject/corteza-server/system/types"
"github.com/jmoiron/sqlx"
)
// SearchRoleMembers returns all matching rows
@@ -65,21 +64,15 @@ func (s Store) SearchRoleMembers(ctx context.Context, f types.RoleMemberFilter)
}
// CreateRoleMember creates one or more rows in role_members table
func (s Store) CreateRoleMember(ctx context.Context, rr ...*types.RoleMember) error {
if len(rr) == 0 {
return nil
func (s Store) CreateRoleMember(ctx context.Context, rr ...*types.RoleMember) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.RoleMemberTable()).SetMap(s.internalRoleMemberEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.RoleMemberTable()).SetMap(s.internalRoleMemberEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// UpdateRoleMember updates one or more existing rows in role_members
@@ -90,46 +83,34 @@ func (s Store) UpdateRoleMember(ctx context.Context, rr ...*types.RoleMember) er
// PartialUpdateRoleMember updates one or more existing rows in role_members
//
// It wraps the update into transaction and can perform partial update by providing list of updatable columns
func (s Store) PartialUpdateRoleMember(ctx context.Context, onlyColumns []string, rr ...*types.RoleMember) error {
if len(rr) == 0 {
return nil
func (s Store) PartialUpdateRoleMember(ctx context.Context, onlyColumns []string, rr ...*types.RoleMember) (err error) {
for _, res := range rr {
err = s.ExecUpdateRoleMembers(
ctx,
squirrel.Eq{s.preprocessColumn("rm.rel_user", ""): s.preprocessValue(res.UserID, ""),
s.preprocessColumn("rm.rel_role", ""): s.preprocessValue(res.RoleID, ""),
},
s.internalRoleMemberEncoder(res).Skip("rel_user", "rel_role").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = s.ExecUpdateRoleMembers(
ctx,
squirrel.Eq{s.preprocessColumn("rm.rel_user", ""): s.preprocessValue(res.UserID, ""),
s.preprocessColumn("rm.rel_role", ""): s.preprocessValue(res.RoleID, ""),
},
s.internalRoleMemberEncoder(res).Skip("rel_user", "rel_role").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// RemoveRoleMember removes one or more rows from role_members table
func (s Store) RemoveRoleMember(ctx context.Context, rr ...*types.RoleMember) error {
if len(rr) == 0 {
return nil
func (s Store) RemoveRoleMember(ctx context.Context, rr ...*types.RoleMember) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.RoleMemberTable("rm")).Where(squirrel.Eq{s.preprocessColumn("rm.rel_user", ""): s.preprocessValue(res.UserID, ""),
s.preprocessColumn("rm.rel_role", ""): s.preprocessValue(res.RoleID, ""),
}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.RoleMemberTable("rm")).Where(squirrel.Eq{s.preprocessColumn("rm.rel_user", ""): s.preprocessValue(res.UserID, ""),
s.preprocessColumn("rm.rel_role", ""): s.preprocessValue(res.RoleID, ""),
}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return nil
}
// RemoveRoleMemberByUserIDRoleID removes row from the role_members table

View File

@@ -15,7 +15,6 @@ import (
"github.com/Masterminds/squirrel"
"github.com/cortezaproject/corteza-server/store"
"github.com/cortezaproject/corteza-server/system/types"
"github.com/jmoiron/sqlx"
"strings"
)
@@ -254,21 +253,15 @@ func (s Store) LookupRoleByName(ctx context.Context, name string) (*types.Role,
}
// CreateRole creates one or more rows in roles table
func (s Store) CreateRole(ctx context.Context, rr ...*types.Role) error {
if len(rr) == 0 {
return nil
func (s Store) CreateRole(ctx context.Context, rr ...*types.Role) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.RoleTable()).SetMap(s.internalRoleEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.RoleTable()).SetMap(s.internalRoleEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// UpdateRole updates one or more existing rows in roles
@@ -279,42 +272,30 @@ func (s Store) UpdateRole(ctx context.Context, rr ...*types.Role) error {
// PartialUpdateRole updates one or more existing rows in roles
//
// It wraps the update into transaction and can perform partial update by providing list of updatable columns
func (s Store) PartialUpdateRole(ctx context.Context, onlyColumns []string, rr ...*types.Role) error {
if len(rr) == 0 {
return nil
func (s Store) PartialUpdateRole(ctx context.Context, onlyColumns []string, rr ...*types.Role) (err error) {
for _, res := range rr {
err = s.ExecUpdateRoles(
ctx,
squirrel.Eq{s.preprocessColumn("rl.id", ""): s.preprocessValue(res.ID, "")},
s.internalRoleEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = s.ExecUpdateRoles(
ctx,
squirrel.Eq{s.preprocessColumn("rl.id", ""): s.preprocessValue(res.ID, "")},
s.internalRoleEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// RemoveRole removes one or more rows from roles table
func (s Store) RemoveRole(ctx context.Context, rr ...*types.Role) error {
if len(rr) == 0 {
return nil
func (s Store) RemoveRole(ctx context.Context, rr ...*types.Role) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.RoleTable("rl")).Where(squirrel.Eq{s.preprocessColumn("rl.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.RoleTable("rl")).Where(squirrel.Eq{s.preprocessColumn("rl.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return nil
}
// RemoveRoleByID removes row from the roles table

View File

@@ -15,7 +15,6 @@ import (
"github.com/Masterminds/squirrel"
"github.com/cortezaproject/corteza-server/store"
"github.com/cortezaproject/corteza-server/system/types"
"github.com/jmoiron/sqlx"
)
// SearchSettings returns all matching rows
@@ -76,21 +75,15 @@ func (s Store) LookupSettingByNameOwnedBy(ctx context.Context, name string, owne
}
// CreateSetting creates one or more rows in settings table
func (s Store) CreateSetting(ctx context.Context, rr ...*types.SettingValue) error {
if len(rr) == 0 {
return nil
func (s Store) CreateSetting(ctx context.Context, rr ...*types.SettingValue) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.SettingTable()).SetMap(s.internalSettingEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.SettingTable()).SetMap(s.internalSettingEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// UpdateSetting updates one or more existing rows in settings
@@ -101,46 +94,34 @@ func (s Store) UpdateSetting(ctx context.Context, rr ...*types.SettingValue) err
// PartialUpdateSetting updates one or more existing rows in settings
//
// It wraps the update into transaction and can perform partial update by providing list of updatable columns
func (s Store) PartialUpdateSetting(ctx context.Context, onlyColumns []string, rr ...*types.SettingValue) error {
if len(rr) == 0 {
return nil
func (s Store) PartialUpdateSetting(ctx context.Context, onlyColumns []string, rr ...*types.SettingValue) (err error) {
for _, res := range rr {
err = s.ExecUpdateSettings(
ctx,
squirrel.Eq{s.preprocessColumn("st.name", ""): s.preprocessValue(res.Name, ""),
s.preprocessColumn("st.rel_owner", ""): s.preprocessValue(res.OwnedBy, ""),
},
s.internalSettingEncoder(res).Skip("name", "rel_owner").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = s.ExecUpdateSettings(
ctx,
squirrel.Eq{s.preprocessColumn("st.name", ""): s.preprocessValue(res.Name, ""),
s.preprocessColumn("st.rel_owner", ""): s.preprocessValue(res.OwnedBy, ""),
},
s.internalSettingEncoder(res).Skip("name", "rel_owner").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// RemoveSetting removes one or more rows from settings table
func (s Store) RemoveSetting(ctx context.Context, rr ...*types.SettingValue) error {
if len(rr) == 0 {
return nil
func (s Store) RemoveSetting(ctx context.Context, rr ...*types.SettingValue) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.SettingTable("st")).Where(squirrel.Eq{s.preprocessColumn("st.name", ""): s.preprocessValue(res.Name, ""),
s.preprocessColumn("st.rel_owner", ""): s.preprocessValue(res.OwnedBy, ""),
}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.SettingTable("st")).Where(squirrel.Eq{s.preprocessColumn("st.name", ""): s.preprocessValue(res.Name, ""),
s.preprocessColumn("st.rel_owner", ""): s.preprocessValue(res.OwnedBy, ""),
}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return nil
}
// RemoveSettingByNameOwnedBy removes row from the settings table

View File

@@ -15,7 +15,6 @@ import (
"github.com/Masterminds/squirrel"
"github.com/cortezaproject/corteza-server/store"
"github.com/cortezaproject/corteza-server/system/types"
"github.com/jmoiron/sqlx"
"strings"
)
@@ -265,21 +264,15 @@ func (s Store) LookupUserByUsername(ctx context.Context, username string) (*type
}
// CreateUser creates one or more rows in users table
func (s Store) CreateUser(ctx context.Context, rr ...*types.User) error {
if len(rr) == 0 {
return nil
func (s Store) CreateUser(ctx context.Context, rr ...*types.User) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.UserTable()).SetMap(s.internalUserEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Insert(s.UserTable()).SetMap(s.internalUserEncoder(res)))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// UpdateUser updates one or more existing rows in users
@@ -290,42 +283,30 @@ func (s Store) UpdateUser(ctx context.Context, rr ...*types.User) error {
// PartialUpdateUser updates one or more existing rows in users
//
// It wraps the update into transaction and can perform partial update by providing list of updatable columns
func (s Store) PartialUpdateUser(ctx context.Context, onlyColumns []string, rr ...*types.User) error {
if len(rr) == 0 {
return nil
func (s Store) PartialUpdateUser(ctx context.Context, onlyColumns []string, rr ...*types.User) (err error) {
for _, res := range rr {
err = s.ExecUpdateUsers(
ctx,
squirrel.Eq{s.preprocessColumn("usr.id", ""): s.preprocessValue(res.ID, "")},
s.internalUserEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = s.ExecUpdateUsers(
ctx,
squirrel.Eq{s.preprocessColumn("usr.id", ""): s.preprocessValue(res.ID, "")},
s.internalUserEncoder(res).Skip("id").Only(onlyColumns...))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return
}
// RemoveUser removes one or more rows from users table
func (s Store) RemoveUser(ctx context.Context, rr ...*types.User) error {
if len(rr) == 0 {
return nil
func (s Store) RemoveUser(ctx context.Context, rr ...*types.User) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.UserTable("usr")).Where(squirrel.Eq{s.preprocessColumn("usr.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return Tx(ctx, s.db, s.config, nil, func(db *sqlx.Tx) (err error) {
for _, res := range rr {
err = ExecuteSqlizer(ctx, s.DB(), s.Delete(s.UserTable("usr")).Where(squirrel.Eq{s.preprocessColumn("usr.id", ""): s.preprocessValue(res.ID, "")}))
if err != nil {
return s.config.ErrorHandler(err)
}
}
return nil
})
return nil
}
// RemoveUserByID removes row from the users table