Documentation ¶
Index ¶
- Constants
- Variables
- func IsGroup(k Kind) bool
- func IsObjectFiltered(obj *Object, filter Filter) bool
- type Access
- type Annotation
- type AnnotationItem
- type ChangeParentAttr
- type ChangeParentOption
- type ChunkSeg
- type DestroyObjectAttr
- type Event
- type EventData
- type ExtendData
- type Filter
- type Kind
- type Label
- type LabelMatch
- type Labels
- type Metadata
- type Notification
- type Object
- type ObjectAttr
- type ObjectMapper
- type OpenAttr
- type Permission
- type PlugScope
- type PluginSpec
- type PluginType
- type Properties
- type Rule
- type RuleFilter
- type RuleFilterLogic
- type RuleOperation
- type ScheduledTask
- type ScheduledTaskFilter
- type SystemInfo
- type WorkflowFilter
- type WorkflowJob
- type WorkflowJobStep
- type WorkflowSpec
- type WorkflowStepSpec
- type WorkflowTarget
Constants ¶
View Source
const ( PermOwnerRead = "owner_read" PermOwnerWrite = "owner_write" PermOwnerExec = "owner_exec" PermGroupRead = "group_read" PermGroupWrite = "group_write" PermGroupExec = "group_exec" PermOthersRead = "others_read" PermOthersWrite = "others_write" PermOthersExec = "others_exec" PermSetUid = "set_uid" PermSetGid = "set_gid" PermSticky = "sticky" )
View Source
const ( ScheduledTaskInitial = "initial" ScheduledTaskWait = "wait" ScheduledTaskExecuting = "executing" ScheduledTaskFinish = "finish" )
View Source
const ( /* system-wide kind */ GroupKind = "group" SmartGroupKind = "smtgroup" MirrorGroupKind = "mirrorgroup" /* text based file kind */ TextKind = "text" /* format doc kind */ FmtDocKind = "fmtdoc" /* media file kind */ ImageKind = "image" VideoKind = "video" AudioKind = "audio" /* web based file kind */ WebArchiveKind = "web" /* workflow kind */ WorkflowKind = "workflow" JobKind = "job" /* time management system object kind */ TodoActionItemKind = "tdaction" TodoProjectKind = "tdproject" TodoGroupKind = "tdgroup" /* ungrouped files */ RawKind = "raw" FIFOKind = "fifo" SocketKind = "socket" SymLinkKind = "symlink" BlkDevKind = "blk" CharDevKind = "chr" )
View Source
const ( VersionKey = "nanafs.version" KindKey = "nanafs.kind" LabelPluginNameKey = "nanafs.plugin.name" )
View Source
const ( RuleOpEqual = "equal" RuleOpBeginWith = "prefix" RuleOpPattern = "pattern" RuleOpBefore = "before" RuleOpAfter = "after" RuleOpIn = "in" )
View Source
const ( RuleLogicAll = "all" RuleLogicAny = "any" )
Variables ¶
View Source
var ( ErrNotFound = errors.New("no record") ErrNameTooLong = errors.New("name too long") ErrIsExist = errors.New("record existed") ErrNotEmpty = errors.New("group not empty") ErrNoGroup = errors.New("not group") ErrIsGroup = errors.New("this object is a group") ErrNoAccess = errors.New("no access") ErrNoPerm = errors.New("no permission") ErrOutOfFS = errors.New("out of nanafs control") ErrUnsupported = errors.New("unsupported operation") )
Functions ¶
func IsObjectFiltered ¶
Types ¶
type Access ¶
type Access struct { Permissions []Permission `json:"permissions,omitempty"` UID int64 `json:"uid"` GID int64 `json:"gid"` }
func (*Access) AddPerm ¶
func (a *Access) AddPerm(p Permission)
func (*Access) HasPerm ¶
func (a *Access) HasPerm(p Permission) bool
func (*Access) RemovePerm ¶
func (a *Access) RemovePerm(p Permission)
type Annotation ¶
type Annotation struct { Annotations []AnnotationItem `json:"annotations,omitempty"` Details string `json:"details,omitempty"` }
func (*Annotation) Add ¶
func (a *Annotation) Add(newA *AnnotationItem)
func (*Annotation) Get ¶
func (a *Annotation) Get(key string) *AnnotationItem
func (*Annotation) Remove ¶
func (a *Annotation) Remove(key string)
type AnnotationItem ¶
type ChangeParentAttr ¶
type ChangeParentOption ¶
type ChangeParentOption struct{}
type DestroyObjectAttr ¶
type Event ¶
type Event struct { Id string `json:"id"` Type string `json:"type"` Source string `json:"source"` SpecVersion string `json:"specversion"` Time time.Time `json:"time"` RefID int64 `json:"nanafsrefid"` RefType string `json:"nanafsreftype"` DataContentType string `json:"datacontenttype"` Data EventData `json:"data"` }
type ExtendData ¶
type ExtendData struct { Properties Properties `json:"properties"` Symlink string `json:"symlink,omitempty"` GroupFilter *Rule `json:"group_filter,omitempty"` PlugScope *PlugScope `json:"plug_scope,omitempty"` }
type LabelMatch ¶
type Metadata ¶
type Metadata struct { ID int64 `json:"id"` Name string `json:"name"` Aliases string `json:"aliases,omitempty"` ParentID int64 `json:"parent_id"` RefID int64 `json:"ref_id,omitempty"` RefCount int `json:"ref_count,omitempty"` Kind Kind `json:"kind"` Hash string `json:"hash"` Size int64 `json:"size"` Inode uint64 `json:"inode"` Dev int64 `json:"dev"` Namespace string `json:"namespace,omitempty"` Storage string `json:"storage"` CreatedAt time.Time `json:"created_at"` ChangedAt time.Time `json:"changed_at"` ModifiedAt time.Time `json:"modified_at"` AccessAt time.Time `json:"access_at"` Access Access `json:"access"` }
func NewMetadata ¶
type Notification ¶
type Object ¶
type Object struct { Metadata *ExtendData *Labels ExtendDataChanged bool `json:"-"` LabelsChanged bool `json:"-"` L sync.Mutex `json:"-"` }
func InitNewObject ¶
func InitNewObject(parent *Metadata, attr ObjectAttr) (*Object, error)
func (*Object) IsSmartGroup ¶
func (*Object) SetExtendData ¶
func (o *Object) SetExtendData(ex ExtendData)
type ObjectMapper ¶
func WorkflowFilterObjectMapper ¶
func WorkflowFilterObjectMapper(f WorkflowFilter) []ObjectMapper
type Permission ¶
type Permission string
type PlugScope ¶
type PlugScope struct { PluginName string `json:"plugin_name"` Version string `json:"version"` PluginType PluginType `json:"plugin_type"` Parameters map[string]string `json:"parameters"` }
type PluginSpec ¶
type PluginSpec struct { Name string `json:"name"` Version string `json:"version"` Type PluginType `json:"type"` Path string `json:"path,omitempty"` Parameters map[string]string `json:"parameters"` }
PluginSpec is Plugin Config File to load a Plugin
type PluginType ¶
type PluginType string
const ( TypeSource PluginType = "source" TypeProcess PluginType = "process" TypeMirror PluginType = "mirror" )
type Properties ¶
type Rule ¶
type Rule struct { Filters RuleFilter `json:"filters"` Selector LabelMatch `json:"selector"` }
type RuleFilter ¶
type RuleFilter struct { Logic RuleFilterLogic `json:"logic,omitempty"` Filters []RuleFilter `json:"filters,omitempty"` Operation RuleOperation `json:"operation,omitempty"` Column string `json:"column,omitempty"` Value string `json:"value,omitempty"` }
type RuleFilterLogic ¶
type RuleFilterLogic string
type RuleOperation ¶
type RuleOperation string
type ScheduledTask ¶
type ScheduledTaskFilter ¶
type SystemInfo ¶
type WorkflowJob ¶
type WorkflowJob struct { Id string `json:"id"` Workflow string `json:"workflow"` TriggerReason string `json:"trigger_reason"` Target WorkflowTarget `json:"target"` Steps []WorkflowJobStep `json:"steps"` Status string `json:"status"` Message string `json:"message"` StartAt time.Time `json:"start_at"` FinishAt time.Time `json:"finish_at"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` }
type WorkflowJobStep ¶
type WorkflowSpec ¶
type WorkflowSpec struct { Id string `json:"id"` Name string `json:"name"` Rule Rule `json:"rule,omitempty"` Steps []WorkflowStepSpec `json:"steps,omitempty"` Enable bool `json:"enable"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` LastTriggeredAt time.Time `json:"last_triggered_at"` }
type WorkflowStepSpec ¶
type WorkflowTarget ¶
Click to show internal directories.
Click to hide internal directories.