3
0

Refactor module/field dal enc strategy config

This commit is contained in:
Denis Arh
2022-09-16 12:58:36 +02:00
parent 0ba9e06c85
commit bc2186fa2f
2 changed files with 38 additions and 22 deletions

View File

@@ -47,27 +47,6 @@ type (
Name string `json:"name"`
}
SystemFieldEncoding struct {
ID *EncodingStrategy `json:"id"`
ModuleID *EncodingStrategy `json:"moduleID"`
NamespaceID *EncodingStrategy `json:"namespaceID"`
Revision *EncodingStrategy `json:"revision"`
Meta *EncodingStrategy `json:"meta"`
OwnedBy *EncodingStrategy `json:"ownedBy"`
CreatedAt *EncodingStrategy `json:"createdAt"`
CreatedBy *EncodingStrategy `json:"createdBy"`
UpdatedAt *EncodingStrategy `json:"updatedAt"`
UpdatedBy *EncodingStrategy `json:"updatedBy"`
DeletedAt *EncodingStrategy `json:"deletedAt"`
DeletedBy *EncodingStrategy `json:"deletedBy"`
}
ModuleConfig struct {
// How and where the records of this module are stored in the database
DAL ModuleConfigDAL `json:"dal"`

View File

@@ -58,8 +58,12 @@ type (
RecordRevisions ModuleFieldConfigRecordRevisions `json:"recordRevisions"`
}
// ModuleFieldConfigDAL holds DAL configuration for a specific field
//
// If strategy is not set for a specific field (nil)
// then a default strategy is used
ModuleFieldConfigDAL struct {
EncodingStrategy EncodingStrategy `json:"encodingStrategy"`
EncodingStrategy *EncodingStrategy `json:"encodingStrategy"`
}
ModuleFieldConfigDataPrivacy struct {
@@ -75,11 +79,42 @@ type (
Skip bool `json:"enabled"`
}
// SystemFieldEncoding holds configuration for encoding record system fields
//
// If strategy is not set for a specific field (nil)
// then a default strategy is used, assuming system field/column presence
SystemFieldEncoding struct {
ID *EncodingStrategy `json:"id"`
ModuleID *EncodingStrategy `json:"moduleID"`
NamespaceID *EncodingStrategy `json:"namespaceID"`
Revision *EncodingStrategy `json:"revision"`
Meta *EncodingStrategy `json:"meta"`
OwnedBy *EncodingStrategy `json:"ownedBy"`
CreatedAt *EncodingStrategy `json:"createdAt"`
CreatedBy *EncodingStrategy `json:"createdBy"`
UpdatedAt *EncodingStrategy `json:"updatedAt"`
UpdatedBy *EncodingStrategy `json:"updatedBy"`
DeletedAt *EncodingStrategy `json:"deletedAt"`
DeletedBy *EncodingStrategy `json:"deletedBy"`
}
// EncodingStrategy is used by both: Module (for system fields) and ModuleField
//
EncodingStrategy struct {
//Type string `json:"type"`
//TypeParams map[string]any `json:"typeParams"`
Omit bool `json:"omit,omitempty"`
*EncodingStrategyAlias `json:"alias,omitempty"`
*EncodingStrategyJSON `json:"json,omitempty"`
*EncodingStrategyPlain `json:"plain,omitempty"`
}
EncodingStrategyAlias struct {
@@ -90,6 +125,8 @@ type (
Ident string `json:"ident"`
}
EncodingStrategyPlain struct{}
ModuleFieldFilter struct {
ModuleID []uint64
Deleted filter.State