Fix RDBMS store upsert + labels & settings
This commit is contained in:
parent
22785ad10b
commit
66c5501d4f
@ -523,7 +523,7 @@ func (s Store) execUpsert{{ export $.Types.Plural }}(ctx context.Context, set st
|
||||
set,
|
||||
{{ range $.RDBMS.Columns }}
|
||||
{{- if or .IsPrimaryKey -}}
|
||||
{{ printf "%q" .Column }},
|
||||
s.preprocessColumn({{ printf "%q" .Column }}, {{ printf "%q" .LookupFilterPreprocess }}),
|
||||
{{ end }}
|
||||
{{- end }}
|
||||
)
|
||||
|
||||
@ -408,7 +408,7 @@ func (s Store) execUpsertApplications(ctx context.Context, set store.Payload) er
|
||||
s.config,
|
||||
s.applicationTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -222,7 +222,7 @@ func (s Store) execUpsertAttachments(ctx context.Context, set store.Payload) err
|
||||
s.config,
|
||||
s.attachmentTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -222,7 +222,7 @@ func (s Store) execUpsertComposeAttachments(ctx context.Context, set store.Paylo
|
||||
s.config,
|
||||
s.composeAttachmentTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -418,7 +418,7 @@ func (s Store) execUpsertComposeCharts(ctx context.Context, set store.Payload) e
|
||||
s.config,
|
||||
s.composeChartTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -213,7 +213,7 @@ func (s Store) execUpsertComposeModuleFields(ctx context.Context, set store.Payl
|
||||
s.config,
|
||||
s.composeModuleFieldTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -428,7 +428,7 @@ func (s Store) execUpsertComposeModules(ctx context.Context, set store.Payload)
|
||||
s.config,
|
||||
s.composeModuleTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -417,7 +417,7 @@ func (s Store) execUpsertComposeNamespaces(ctx context.Context, set store.Payloa
|
||||
s.config,
|
||||
s.composeNamespaceTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -428,7 +428,7 @@ func (s Store) execUpsertComposePages(ctx context.Context, set store.Payload) er
|
||||
s.config,
|
||||
s.composePageTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -205,9 +205,9 @@ func (s Store) execUpsertComposeRecordValues(ctx context.Context, set store.Payl
|
||||
s.config,
|
||||
s.composeRecordValueTable(),
|
||||
set,
|
||||
"record_id",
|
||||
"name",
|
||||
"place",
|
||||
s.preprocessColumn("record_id", ""),
|
||||
s.preprocessColumn("name", ""),
|
||||
s.preprocessColumn("place", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -342,7 +342,7 @@ func (s Store) execUpsertComposeRecords(ctx context.Context, set store.Payload)
|
||||
s.config,
|
||||
s.composeRecordTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -212,7 +212,7 @@ func (s Store) execUpsertCredentials(ctx context.Context, set store.Payload) err
|
||||
s.config,
|
||||
s.credentialsTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -214,9 +214,9 @@ func (s Store) execUpsertLabels(ctx context.Context, set store.Payload) error {
|
||||
s.config,
|
||||
s.labelTable(),
|
||||
set,
|
||||
"kind",
|
||||
"rel_resource",
|
||||
"name",
|
||||
s.preprocessColumn("kind", ""),
|
||||
s.preprocessColumn("rel_resource", ""),
|
||||
s.preprocessColumn("name", "lower"),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -222,7 +222,7 @@ func (s Store) execUpsertMessagingAttachments(ctx context.Context, set store.Pay
|
||||
s.config,
|
||||
s.messagingAttachmentTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -204,8 +204,8 @@ func (s Store) execUpsertMessagingChannelMembers(ctx context.Context, set store.
|
||||
s.config,
|
||||
s.messagingChannelMemberTable(),
|
||||
set,
|
||||
"rel_channel",
|
||||
"rel_user",
|
||||
s.preprocessColumn("rel_channel", ""),
|
||||
s.preprocessColumn("rel_user", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -408,7 +408,7 @@ func (s Store) execUpsertMessagingChannels(ctx context.Context, set store.Payloa
|
||||
s.config,
|
||||
s.messagingChannelTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -210,7 +210,7 @@ func (s Store) execUpsertMessagingFlags(ctx context.Context, set store.Payload)
|
||||
s.config,
|
||||
s.messagingFlagTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -212,7 +212,7 @@ func (s Store) execUpsertMessagingMentions(ctx context.Context, set store.Payloa
|
||||
s.config,
|
||||
s.messagingMentionTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -188,7 +188,7 @@ func (s Store) execUpsertMessagingMessageAttachments(ctx context.Context, set st
|
||||
s.config,
|
||||
s.messagingMessageAttachmentTable(),
|
||||
set,
|
||||
"rel_message",
|
||||
s.preprocessColumn("rel_message", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -212,7 +212,7 @@ func (s Store) execUpsertMessagingMessages(ctx context.Context, set store.Payloa
|
||||
s.config,
|
||||
s.messagingMessageTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -183,9 +183,9 @@ func (s Store) execUpsertMessagingUnreads(ctx context.Context, set store.Payload
|
||||
s.config,
|
||||
s.messagingUnreadTable(),
|
||||
set,
|
||||
"rel_channel",
|
||||
"rel_reply_to",
|
||||
"rel_user",
|
||||
s.preprocessColumn("rel_channel", ""),
|
||||
s.preprocessColumn("rel_reply_to", ""),
|
||||
s.preprocessColumn("rel_user", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -202,9 +202,9 @@ func (s Store) execUpsertRbacRules(ctx context.Context, set store.Payload) error
|
||||
s.config,
|
||||
s.rbacRuleTable(),
|
||||
set,
|
||||
"rel_role",
|
||||
"resource",
|
||||
"operation",
|
||||
s.preprocessColumn("rel_role", ""),
|
||||
s.preprocessColumn("resource", ""),
|
||||
s.preprocessColumn("operation", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -228,7 +228,7 @@ func (Schema) Labels() *Table {
|
||||
ColumnDef("name", ColumnTypeVarchar, ColumnTypeLength(resourceLength)),
|
||||
ColumnDef("value", ColumnTypeText),
|
||||
|
||||
PrimaryKey(IColumn("kind", "rel_resource", "name")),
|
||||
AddIndex("unique_kind_res_name", IColumn("kind", "rel_resource"), IExpr("LOWER(name)")),
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@ -408,7 +408,7 @@ func (s Store) execUpsertReminders(ctx context.Context, set store.Payload) error
|
||||
s.config,
|
||||
s.reminderTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -201,8 +201,8 @@ func (s Store) execUpsertRoleMembers(ctx context.Context, set store.Payload) err
|
||||
s.config,
|
||||
s.roleMemberTable(),
|
||||
set,
|
||||
"rel_user",
|
||||
"rel_role",
|
||||
s.preprocessColumn("rel_user", ""),
|
||||
s.preprocessColumn("rel_role", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -432,7 +432,7 @@ func (s Store) execUpsertRoles(ctx context.Context, set store.Payload) error {
|
||||
s.config,
|
||||
s.roleTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -92,7 +92,7 @@ func (s Store) QuerySettings(
|
||||
// LookupSettingByNameOwnedBy searches for settings by name and owner
|
||||
func (s Store) LookupSettingByNameOwnedBy(ctx context.Context, name string, owned_by uint64) (*types.SettingValue, error) {
|
||||
return s.execLookupSetting(ctx, squirrel.Eq{
|
||||
s.preprocessColumn("st.name", ""): store.PreprocessValue(name, ""),
|
||||
s.preprocessColumn("st.name", "lower"): store.PreprocessValue(name, "lower"),
|
||||
s.preprocessColumn("st.rel_owner", ""): store.PreprocessValue(owned_by, ""),
|
||||
})
|
||||
}
|
||||
@ -130,7 +130,7 @@ func (s Store) partialSettingUpdate(ctx context.Context, onlyColumns []string, r
|
||||
err = s.execUpdateSettings(
|
||||
ctx,
|
||||
squirrel.Eq{
|
||||
s.preprocessColumn("st.name", ""): store.PreprocessValue(res.Name, ""), s.preprocessColumn("st.rel_owner", ""): store.PreprocessValue(res.OwnedBy, ""),
|
||||
s.preprocessColumn("st.name", "lower"): store.PreprocessValue(res.Name, "lower"), s.preprocessColumn("st.rel_owner", ""): store.PreprocessValue(res.OwnedBy, ""),
|
||||
},
|
||||
s.internalSettingEncoder(res).Skip("name", "rel_owner").Only(onlyColumns...))
|
||||
if err != nil {
|
||||
@ -163,7 +163,7 @@ func (s Store) DeleteSetting(ctx context.Context, rr ...*types.SettingValue) (er
|
||||
for _, res := range rr {
|
||||
|
||||
err = s.execDeleteSettings(ctx, squirrel.Eq{
|
||||
s.preprocessColumn("st.name", ""): store.PreprocessValue(res.Name, ""), s.preprocessColumn("st.rel_owner", ""): store.PreprocessValue(res.OwnedBy, ""),
|
||||
s.preprocessColumn("st.name", "lower"): store.PreprocessValue(res.Name, "lower"), s.preprocessColumn("st.rel_owner", ""): store.PreprocessValue(res.OwnedBy, ""),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
@ -176,7 +176,7 @@ func (s Store) DeleteSetting(ctx context.Context, rr ...*types.SettingValue) (er
|
||||
// DeleteSettingByNameOwnedBy Deletes row from the settings table
|
||||
func (s Store) DeleteSettingByNameOwnedBy(ctx context.Context, name string, ownedBy uint64) error {
|
||||
return s.execDeleteSettings(ctx, squirrel.Eq{
|
||||
s.preprocessColumn("st.name", ""): store.PreprocessValue(name, ""),
|
||||
s.preprocessColumn("st.name", "lower"): store.PreprocessValue(name, "lower"),
|
||||
s.preprocessColumn("st.rel_owner", ""): store.PreprocessValue(ownedBy, ""),
|
||||
})
|
||||
}
|
||||
@ -222,8 +222,8 @@ func (s Store) execUpsertSettings(ctx context.Context, set store.Payload) error
|
||||
s.config,
|
||||
s.settingTable(),
|
||||
set,
|
||||
"name",
|
||||
"rel_owner",
|
||||
s.preprocessColumn("name", "lower"),
|
||||
s.preprocessColumn("rel_owner", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -441,7 +441,7 @@ func (s Store) execUpsertUsers(ctx context.Context, set store.Payload) error {
|
||||
s.config,
|
||||
s.userTable(),
|
||||
set,
|
||||
"id",
|
||||
s.preprocessColumn("id", ""),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
|
||||
@ -6,7 +6,7 @@ types:
|
||||
filterType: types.SettingsFilter
|
||||
|
||||
fields:
|
||||
- { field: Name, isPrimaryKey: true }
|
||||
- { field: Name, isPrimaryKey: true, lookupFilterPreprocessor: lower }
|
||||
- { field: OwnedBy, isPrimaryKey: true }
|
||||
- { field: Value }
|
||||
- { field: UpdatedBy }
|
||||
|
||||
@ -61,15 +61,37 @@ func testSettings(t *testing.T, s store.Settings) {
|
||||
})
|
||||
|
||||
t.Run("update", func(t *testing.T) {
|
||||
t.Skip("Should pass(afaik) but doesn't")
|
||||
|
||||
req, setting := truncAndCreate(t)
|
||||
setting.Name = "new-name"
|
||||
setting.Value = []byte(`42`)
|
||||
req.NoError(s.UpdateSetting(ctx, setting))
|
||||
|
||||
fetched, err := s.LookupSettingByNameOwnedBy(ctx, setting.Name, setting.OwnedBy)
|
||||
req.NoError(err)
|
||||
req.Equal("new-name", fetched.Name)
|
||||
req.Equal(string(`42`), string(fetched.Value))
|
||||
})
|
||||
|
||||
t.Run("upsert", func(t *testing.T) {
|
||||
req := require.New(t)
|
||||
req.NoError(s.TruncateSettings(ctx))
|
||||
|
||||
t.Run("new", func(t *testing.T) {
|
||||
req := require.New(t)
|
||||
req.NoError(s.UpsertSetting(ctx, &types.SettingValue{Name: "foo", Value: []byte(`"foo"`)}))
|
||||
v, err := s.LookupSettingByNameOwnedBy(ctx, "foo", 0)
|
||||
req.NoError(err)
|
||||
req.NotNil(v)
|
||||
req.Equal(string(`"foo"`), string(v.Value))
|
||||
})
|
||||
|
||||
t.Run("existing", func(t *testing.T) {
|
||||
req.NoError(s.CreateSetting(ctx, &types.SettingValue{Name: "baz", Value: []byte(`"created"`)}))
|
||||
req.NoError(s.UpsertSetting(ctx, &types.SettingValue{Name: "baz", Value: []byte(`"updated"`)}))
|
||||
v, err := s.LookupSettingByNameOwnedBy(ctx, "baz", 0)
|
||||
req.NoError(err)
|
||||
req.NotNil(v)
|
||||
req.Equal(string(`"updated"`), string(v.Value))
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
t.Run("delete", func(t *testing.T) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user