Skip to content
Snippets Groups Projects
Select Git revision
  • 3806828488959544c90dc456f7a550a4556f9233
  • master default protected
  • feature/3149-LocaleCodeAsID-Implementation
  • feature/PRXS-3383-CollectionsRankSortAPI
  • fix/PRXS-3401-ValidateValidationOpts
  • feature/3149-LocaleCodeAsID-Feature
  • feature/PRXS-3383-CollectionsSort
  • feature/3109-SerializeFeature
  • release/0.33
  • feature/3109-RecoverySchema
  • feature/3109-feature
  • fix/PRXS-3369-ValidateFields
  • refactor/PRXS-3306-MovePkgGroup1
  • refactor/6-pkg-refactor-expr
  • fix/PRXS-3360-TemplateBuilderPatch
  • feature/3293-MongoV2
  • feature/3272-GoVersionUp
  • feature/PRXS-3218-HideTemplateActions
  • feature/PRXS-3234-PruneIdents
  • feature/3146-UpdateItemStorageInterface
  • feature/3274-ObjectIndexesFixes
  • v0.33.1
  • v0.32.0
  • v0.31.1
  • v0.31.0
  • v0.30.0
  • v0.29.0
  • v0.28.0
  • v0.27.0-alpha.1+16
  • v0.27.0-alpha.1+15
  • v0.27.0-alpha.1+14
  • v0.27.0-alpha.1+13
  • v0.27.0-alpha.1+12
  • v0.27.0-alpha.1+11
  • v0.27.0-alpha.1+10
  • v0.27.0-alpha.1+9
  • v0.27.0-alpha.1+8
  • v0.27.0-alpha.1+7
  • v0.27.0-alpha.1+6
  • v0.27.0-alpha.1+5
  • v0.27.0-alpha.1+4
41 results

collection.go

Blame
  • collection.go 9.76 KiB
    package collections
    
    import (
    	"time"
    
    	"git.perx.ru/perxis/perxis-go/pkg/data"
    	"git.perx.ru/perxis/perxis-go/pkg/permission"
    	"git.perx.ru/perxis/perxis-go/pkg/schema"
    )
    
    // Config
    type Config struct {
    	SourceSpaceID      string
    	SourceEnvID        string
    	SourceCollectionID string
    	SourceSchema       *schema.Schema
    }
    
    // Access - описывает текущие ограничения на доступ к элементам коллекции для текущего
    // пользователя
    type Access struct {
    	Actions         []permission.Action // Список разрешенных действия с элементами коллекции
    	HiddenFields    []string            // Поля не отображаемые в интерфейсе и не возвращаемые API
    	DenyReadFields  []string            // Поля недоступные для редактирования и не обновляемые через API
    	DenyWriteFields []string            // Поля отображаемые в интерфейсе, но не возвращаемые в API
    	ReadFilter      string              // Дополнительный фильтр на чтение
    	WriteFilter     string              // Дополнительный фильтр на запись
    	Hidden          bool                // Скрыть коллекцию в интерфейсе от пользователя
    }
    
    func (a Access) Clone() *Access {
    
    	clone := &Access{
    		Actions:         make([]permission.Action, len(a.Actions)),
    		HiddenFields:    make([]string, len(a.HiddenFields)),
    		DenyReadFields:  make([]string, len(a.DenyReadFields)),
    		DenyWriteFields: make([]string, len(a.DenyWriteFields)),
    		Hidden:          a.Hidden,
    	}
    
    	copy(clone.Actions, a.Actions)
    	copy(clone.HiddenFields, a.HiddenFields)
    	copy(clone.DenyReadFields, a.DenyReadFields)
    	copy(clone.DenyWriteFields, a.DenyWriteFields)
    
    	return clone
    }
    
    func (a Access) Can(action permission.Action) bool {
    	for _, act := range a.Actions {
    		if act == action {
    			return true
    		}
    	}
    	return false
    }
    
    type Collection struct {
    	ID      string `json:"id" bson:"id"`
    	SpaceID string `json:"spaceId" bson:"-"`
    	EnvID   string `json:"envId" bson:"-"`
    	Name    string `json:"name" bson:"name"`
    	Single  *bool  `json:"single" bson:"single,omitempty"` // В коллекции может быть только один документ
    	System  *bool  `json:"system" bson:"system,omitempty"` // Системная коллекция
    	NoData  *bool  `json:"no_data" bson:"no_data"`         // Коллекция не содержит элементы. Схема используется для включения в другие схемы
    	Hidden  bool   `json:"hidden" bson:"hidden"`           // Коллекция скрыта в административном интерфейсе
    
    	NoArchive bool `json:"no_archive" bson:"no_archive,omitempty"` // Коллекция без архива
    
    	NoRevisions  bool          `json:"no_revisions" bson:"no_revisions,omitempty"`   // Не хранить историю изменений