mirror of
https://github.com/hanzoai/team.git
synced 2026-10-30 14:49:35 +00:00
* Adds a groupID filter to the property service methods This allows the property service caller to directly ensure that a given call is only going to affect a field or value that belongs to a given group, instead of (for example) retrieving a property value before deleting it by id to ensure that the value belongs to a specific property group. The groupID filter is optional and has no effect if called with the empty string value. The changes also remove references to input sanitization on trimming the whitespace for the CPA field names and validate at the API level the input for the field patch endpoint. * Fix linter --------- Co-authored-by: Miguel de la Cruz <[email protected]> Co-authored-by: Mattermost Build <[email protected]>
64 lines
2.0 KiB
Go
64 lines
2.0 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package properties
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/mattermost/mattermost/server/public/model"
|
|
)
|
|
|
|
func (ps *PropertyService) CreatePropertyField(field *model.PropertyField) (*model.PropertyField, error) {
|
|
return ps.fieldStore.Create(field)
|
|
}
|
|
|
|
func (ps *PropertyService) GetPropertyField(groupID, id string) (*model.PropertyField, error) {
|
|
return ps.fieldStore.Get(groupID, id)
|
|
}
|
|
|
|
func (ps *PropertyService) GetPropertyFields(groupID string, ids []string) ([]*model.PropertyField, error) {
|
|
return ps.fieldStore.GetMany(groupID, ids)
|
|
}
|
|
|
|
func (ps *PropertyService) CountActivePropertyFieldsForGroup(groupID string) (int64, error) {
|
|
return ps.fieldStore.CountForGroup(groupID, false)
|
|
}
|
|
|
|
func (ps *PropertyService) SearchPropertyFields(groupID, targetID string, opts model.PropertyFieldSearchOpts) ([]*model.PropertyField, error) {
|
|
// groupID and targetID are part of the search method signature to
|
|
// incentivize the use of the database indexes in searches
|
|
opts.GroupID = groupID
|
|
opts.TargetID = targetID
|
|
|
|
return ps.fieldStore.SearchPropertyFields(opts)
|
|
}
|
|
|
|
func (ps *PropertyService) UpdatePropertyField(groupID string, field *model.PropertyField) (*model.PropertyField, error) {
|
|
fields, err := ps.UpdatePropertyFields(groupID, []*model.PropertyField{field})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return fields[0], nil
|
|
}
|
|
|
|
func (ps *PropertyService) UpdatePropertyFields(groupID string, fields []*model.PropertyField) ([]*model.PropertyField, error) {
|
|
return ps.fieldStore.Update(groupID, fields)
|
|
}
|
|
|
|
func (ps *PropertyService) DeletePropertyField(groupID, id string) error {
|
|
// if groupID is not empty, we need to check first that the field belongs to the group
|
|
if groupID != "" {
|
|
if _, err := ps.GetPropertyField(groupID, id); err != nil {
|
|
return fmt.Errorf("error getting property field %q for group %q: %w", id, groupID, err)
|
|
}
|
|
}
|
|
|
|
if err := ps.valueStore.DeleteForField(id); err != nil {
|
|
return err
|
|
}
|
|
|
|
return ps.fieldStore.Delete(groupID, id)
|
|
}
|