mirror of
https://github.com/hanzoai/team.git
synced 2026-09-30 01:57:35 +00:00
* Adds the main Property System Architecture components
This change adds the necessary migrations for the Property Groups,
Fields and Values tables to be created, the store layer and a Property
Service that can be used from the app layer.
* Update property field type to use user instead of person
* Update PropertyFields to allow for unique nondeleted fields and remove redundant indexes
* Update PropertyValues to allow for unique nondeleted fields and remove redundant indexes
* Use StringMap instead of the map[string]any on property fields
* Add i18n strings
* Revert "Use StringMap instead of the map[string]any on property fields"
This reverts commit 15c23544b6.
* Cast JSON binary data to string and add todo note for StringMap use
* Add mocks to the retrylayer tests
* Cast JSON binary data to string in property value store
* Check for binary parameter instead of casting to string for JSON data
* Check property field type is one of the allowed ones
* Avoid reusing err variable to be explicit about the returned value
* Merge Property System Migrations into one file
* Adds NOT NULL to timestamps at the DB level
* Update stores to use tableSelectQuery instead of a slice var
* Update PropertyField model translations to be more explicit and avoid repetition
* Update PropertyValue model translations to be more explicit and avoid repetition
* Use ExecBuilder instead of ToSql&Exec
* Update property field errors to add context
* Ensure PerPage is greater than zero
* Update store errors to give more context
* Use ExecBuilder in the property stores where possible
* Add an on conflict suffix to the group register to avoid race conditions
* Remove badly used translation string
* Remove unused get in register group method
---------
Co-authored-by: Mattermost Build <[email protected]>
42 lines
1002 B
Go
42 lines
1002 B
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package properties
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/mattermost/mattermost/server/v8/channels/store"
|
|
)
|
|
|
|
type PropertyService struct {
|
|
groupStore store.PropertyGroupStore
|
|
fieldStore store.PropertyFieldStore
|
|
valueStore store.PropertyValueStore
|
|
}
|
|
|
|
type ServiceConfig struct {
|
|
PropertyGroupStore store.PropertyGroupStore
|
|
PropertyFieldStore store.PropertyFieldStore
|
|
PropertyValueStore store.PropertyValueStore
|
|
}
|
|
|
|
func New(c ServiceConfig) (*PropertyService, error) {
|
|
if err := c.validate(); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &PropertyService{
|
|
groupStore: c.PropertyGroupStore,
|
|
fieldStore: c.PropertyFieldStore,
|
|
valueStore: c.PropertyValueStore,
|
|
}, nil
|
|
}
|
|
|
|
func (c *ServiceConfig) validate() error {
|
|
if c.PropertyGroupStore == nil || c.PropertyFieldStore == nil || c.PropertyValueStore == nil {
|
|
return errors.New("required parameters are not provided")
|
|
}
|
|
return nil
|
|
}
|