Skip to content
Snippets Groups Projects
Commit 29b07b71 authored by Alena Petraki's avatar Alena Petraki :nail_care_tone1:
Browse files

wip

parent 5021f50b
No related branches found
No related tags found
No related merge requests found
......@@ -343,11 +343,7 @@ func ElPtrItemsGetPublishedOptionsToProto(options []*items.GetPublishedOptions)
}
func ProtoToElPtrItemsGetPublishedOptions(protoOptions *itemspb.GetPublishedOptions) ([]*items.GetPublishedOptions, error) {
if protoOptions == nil {
return nil, nil
}
return []*items.GetPublishedOptions{{LocaleID: protoOptions.LocaleId}}, nil
return []*items.GetPublishedOptions{items.GetPublishedOptionsFromProto(protoOptions)}, nil
}
func ElPtrItemsFindPublishedOptionsToProto(options []*items.FindPublishedOptions) (*itemspb.FindPublishedOptions, error) {
......
......@@ -30,6 +30,28 @@ func MergeOptions(opts ...Options) Options {
return o
}
type LocalizeOptions struct {
// Язык перевода, который будет использоваться. Если не указан, то возвращаются данные для языка по умолчанию
LocaleID string
// Список идентификаторов переводов/локалей, которых должны быть включены в результат
TranslationsIDs []string
}
func MergeLocalizeOptions(opts ...*LocalizeOptions) *LocalizeOptions {
o := &LocalizeOptions{}
for _, opt := range opts {
if opt == nil {
continue
}
if opt.LocaleID != "" {
o.LocaleID = opt.LocaleID
}
o.TranslationsIDs = append(o.TranslationsIDs, opt.TranslationsIDs...)
}
return o
}
type CreateOptions struct {
Options
......@@ -134,6 +156,7 @@ func GetOptionsFromProto(opts *pb.GetOptions) *GetOptions {
type FindOptions struct {
Options
options.FindOptions
Deleted bool
Regular bool
Hidden bool
......@@ -495,13 +518,19 @@ func FindPublishedOptionsFromProto(opts *pb.FindPublishedOptions) *FindPublished
},
}
if fo := options.FindOptionsFromPB(opts.Options); fo != nil {
o.FindOptions = *fo
o.FindOptions.FindOptions = *fo
}
return o
}
type GetRevisionOptions struct {
Options
// Язык перевода, который будет использоваться. Если не указан, то возвращаются данные для языка по умолчанию
LocaleID string
// Список идентификаторов переводов/локалей, которых должны быть включены в результат
TranslationsIDs []string
}
func MergeGetRevisionOptions(opts ...*GetRevisionOptions) *GetRevisionOptions {
......@@ -511,6 +540,10 @@ func MergeGetRevisionOptions(opts ...*GetRevisionOptions) *GetRevisionOptions {
continue
}
o.Options = MergeOptions(o.Options, opt.Options)
if opt.LocaleID != "" {
o.LocaleID = opt.LocaleID
}
o.TranslationsIDs = append(o.TranslationsIDs, opt.TranslationsIDs...)
}
return o
}
......@@ -518,6 +551,12 @@ func MergeGetRevisionOptions(opts ...*GetRevisionOptions) *GetRevisionOptions {
type ListRevisionsOptions struct {
Options
options.FindOptions
// Язык перевода, который будет использоваться. Если не указан, то возвращаются данные для языка по умолчанию
LocaleID string
// Список идентификаторов переводов/локалей, которых должны быть включены в результат
TranslationsIDs []string
}
func MergeListRevisionsOptions(opts ...*ListRevisionsOptions) *ListRevisionsOptions {
......@@ -528,6 +567,10 @@ func MergeListRevisionsOptions(opts ...*ListRevisionsOptions) *ListRevisionsOpti
}
o.Options = MergeOptions(o.Options, opt.Options)
o.FindOptions = *options.MergeFindOptions(&o.FindOptions, &opt.FindOptions)
if opt.LocaleID != "" {
o.LocaleID = opt.LocaleID
}
o.TranslationsIDs = append(o.TranslationsIDs, opt.TranslationsIDs...)
}
return o
}
......
......@@ -4,7 +4,6 @@ import (
"context"
"git.perx.ru/perxis/perxis-go/pkg/collections"
"git.perx.ru/perxis/perxis-go/pkg/locales"
)
type Storage interface {
......@@ -32,17 +31,17 @@ type Storage interface {
// CreateRevision - перенести ревизию в коллекцию Revisions
CreateRevision(ctx context.Context, spaceId, envId, collectionId, itemId string) error
// Update - Обновление текущей ревизии или создание новой, если в опциях передан флаг `ReplacePublishedRevision`
// Update - Обновление текущей ревизии
Update(ctx context.Context, coll *collections.Collection, item *Item, options ...*UpdateOptions) error
// Find - поиск записей по рабочим записям, коллекция 'items'
Find(ctx context.Context, coll *collections.Collection, filter *Filter, opts ...*StorageFindOptions) ([]*Item, int, error)
// GetRevision - поиск одной ревизии одной записи
GetRevision(ctx context.Context, coll *collections.Collection, itemId, revisionId string, options ...*GetRevisionOptions) (*Item, error)
GetRevision(ctx context.Context, coll *collections.Collection, itemId, revisionId string, options ...*StorageGetRevisionOptions) (*Item, error)
// ListRevisions - поиск всех ревизий одной записи
ListRevisions(ctx context.Context, coll *collections.Collection, itemId string, options ...*ListRevisionsOptions) ([]*Item, error)
ListRevisions(ctx context.Context, coll *collections.Collection, itemId string, options ...*StorageListRevisionsOptions) ([]*Item, error)
// ChangeRevisionsItemID - заменить ID элемента у его ревизий
ChangeRevisionsItemID(ctx context.Context, spaceId, envId, collectionId, itemId, newItemId string) error
......@@ -91,47 +90,3 @@ type Storage interface {
// AggregatePublished выполняет агрегацию опубликованных данных
AggregatePublished(ctx context.Context, coll *collections.Collection, filter *Filter, options ...*AggregatePublishedOptions) (result map[string]interface{}, err error)
}
type StorageFindOptions struct {
FindOptions
// Список локалей пространства
Locales []*locales.Locale
}
func NewStorageFindOptions(opts ...interface{}) *StorageFindOptions {
fo := &StorageFindOptions{}
for _, o := range opts {
switch o := o.(type) {
case FindOptions:
fo.FindOptions = o
case *FindOptions:
fo.FindOptions = *o
case FindPublishedOptions:
fo.FindOptions = o.FindOptions
case *FindPublishedOptions:
fo.FindOptions = o.FindOptions
case FindArchivedOptions:
fo.FindOptions = o.FindOptions
case *FindArchivedOptions:
fo.FindOptions = o.FindOptions
case *locales.Locale:
fo.Locales = append(fo.Locales, o)
case []*locales.Locale:
fo.Locales = append(fo.Locales, o...)
}
}
return fo
}
func MergeStorageFindOptions(opts ...*StorageFindOptions) *StorageFindOptions {
o := NewStorageFindOptions()
for _, opt := range opts {
if opt == nil {
continue
}
o.FindOptions = *MergeFindOptions(&o.FindOptions, &opt.FindOptions)
o.Locales = append(o.Locales, opt.Locales...)
}
return o
}
package items
import "git.perx.ru/perxis/perxis-go/pkg/locales"
type StorageFindOptions struct {
FindOptions
// Список локалей пространства
Locales []*locales.Locale
}
func NewStorageFindOptions(opts ...interface{}) *StorageFindOptions {
fo := &StorageFindOptions{}
for _, o := range opts {
switch o := o.(type) {
case FindOptions:
fo.FindOptions = o
case *FindOptions:
fo.FindOptions = *o
case FindPublishedOptions:
fo.FindOptions = o.FindOptions
case *FindPublishedOptions:
fo.FindOptions = o.FindOptions
case FindArchivedOptions:
fo.FindOptions = o.FindOptions
case *FindArchivedOptions:
fo.FindOptions = o.FindOptions
case *locales.Locale:
fo.Locales = append(fo.Locales, o)
case []*locales.Locale:
fo.Locales = append(fo.Locales, o...)
}
}
return fo
}
func MergeStorageFindOptions(opts ...*StorageFindOptions) *StorageFindOptions {
o := NewStorageFindOptions()
for _, opt := range opts {
if opt == nil {
continue
}
o.FindOptions = *MergeFindOptions(&o.FindOptions, &opt.FindOptions)
o.Locales = append(o.Locales, opt.Locales...)
}
return o
}
type StorageGetRevisionOptions struct {
GetRevisionOptions
// Список локалей пространства
Locales []*locales.Locale
}
func NewStorageGetRevisionOptions(opts ...interface{}) *StorageGetRevisionOptions {
gro := &StorageGetRevisionOptions{}
for _, o := range opts {
switch o := o.(type) {
case GetRevisionOptions:
gro.GetRevisionOptions = o
case *GetRevisionOptions:
gro.GetRevisionOptions = *o
case *locales.Locale:
gro.Locales = append(gro.Locales, o)
case []*locales.Locale:
gro.Locales = append(gro.Locales, o...)
}
}
return gro
}
func MergeStorageGetRevisionOptions(opts ...*StorageGetRevisionOptions) *StorageGetRevisionOptions {
o := NewStorageGetRevisionOptions()
for _, opt := range opts {
if opt == nil {
continue
}
o.GetRevisionOptions = *MergeGetRevisionOptions(&o.GetRevisionOptions, &opt.GetRevisionOptions)
o.Locales = append(o.Locales, opt.Locales...)
}
return o
}
type StorageListRevisionsOptions struct {
ListRevisionsOptions
// Список локалей пространства
Locales []*locales.Locale
}
func NewStorageListRevisionsOptions(opts ...interface{}) *StorageListRevisionsOptions {
lro := &StorageListRevisionsOptions{}
for _, o := range opts {
switch o := o.(type) {
case ListRevisionsOptions:
lro.ListRevisionsOptions = o
case *ListRevisionsOptions:
lro.ListRevisionsOptions = *o
case *locales.Locale:
lro.Locales = append(lro.Locales, o)
case []*locales.Locale:
lro.Locales = append(lro.Locales, o...)
}
}
return lro
}
func MergeStorageListRevisionsOptions(opts ...*StorageListRevisionsOptions) *StorageListRevisionsOptions {
o := NewStorageListRevisionsOptions()
for _, opt := range opts {
if opt == nil {
continue
}
o.ListRevisionsOptions = *MergeListRevisionsOptions(&o.ListRevisionsOptions, &opt.ListRevisionsOptions)
o.Locales = append(o.Locales, opt.Locales...)
}
return o
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment