depend

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 24, 2024 License: MIT Imports: 4 Imported by: 0

README

depend

Resource Depend and Access Management

  • 支持完全由用户自定义的资源、资源类型(ResType)、资源操作(ResOp)、依赖方式(Type)
  • 提供两种使用方式:全局单例方式与管理器方式
  • 提供基于gorm的数据存储
  • Goroutine Safe & Developer Friendly

安装

go get github.com/gromitlee/depend

引入

import "github.com/gromitlee/depend"

使用方式1:全局单例

API详见api.go

示例详见examples/depend_test.go

depend.Init(db)

使用方式2:管理器

API详见mgr.go

示例同上

mgr, err := NewDependMgr(db)

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddDepends

func AddDepends(db *gorm.DB, res []rel.Res, resB rel.Res, relTyp ...rel.Type) error

AddDepends 记录关系:资源B 依赖 一组资源 relTyp长度不超过1;relType为空,指定默认依赖方式

func AddRelation

func AddRelation(db *gorm.DB, resA rel.Res, resB rel.Res, relTyp ...rel.Type) error

AddRelation 记录关系:资源A 被 资源B 依赖 relTyp长度不超过1;relType为空,指定默认依赖方式

func AddRelations

func AddRelations(db *gorm.DB, resA rel.Res, res []rel.Res, relTyp ...rel.Type) error

AddRelations 记录关系:资源A 被 一组资源 依赖 relTyp长度不超过1;relType为空,指定默认依赖方式

func CheckOp

func CheckOp(db *gorm.DB, res rel.Res, op rel.ResOp) error

CheckOp 检查是否可以对某个资源执行op操作

func CheckRelation

func CheckRelation(db *gorm.DB, resA rel.Res, resB rel.Res, relTyp ...rel.Type) error

CheckRelation 检查关系:资源A 是否被 资源B 依赖 relTyp长度不超过1;relType为空,指定默认依赖方式

func DelRelation

func DelRelation(db *gorm.DB, resA rel.Res, resB rel.Res, relTyp ...rel.Type) error

DelRelation 删除关系:资源A 被 资源B 依赖 relTyp长度不超过1;relType为空,指定默认依赖方式

func DelRes

func DelRes(db *gorm.DB, res rel.Res) error

DelRes 删除某个资源的所有关系记录

func GetDependents

func GetDependents(db *gorm.DB, res rel.Res, relTypes ...rel.Type) ([]*rel.Relation, error)

GetDependents 查询关系:查询某个资源【所依赖】的关系 relTypes为空,会检查该资源的所有所依赖关系

func GetRelations

func GetRelations(db *gorm.DB, res rel.Res, relTypes ...rel.Type) ([]*rel.Relation, error)

GetRelations 查询关系:查询某个资源【被依赖】的关系 relTypes为空,会检查该资源的所有被依赖关系

func Init

func Init(db *gorm.DB) error

func NewDependMgr

func NewDependMgr(db *gorm.DB) (*internal.Mgr, error)

func Register

func Register(typ rel.ResType, op rel.ResOp, ignores []rel.ResType) error

Register 表示typ类型的资源,在被ignore类型的资源依赖时,依然可以执行op操作

Types

type IDependMgr

type IDependMgr interface {
	Register(typ rel.ResType, op rel.ResOp, ignores []rel.ResType) error
	AddRelation(db *gorm.DB, idA string, typA rel.ResType, relTyp rel.Type, idB string, typB rel.ResType) error
	AddRelations(db *gorm.DB, idA string, typA rel.ResType, relTyp rel.Type, res []rel.Res) error
	AddDepends(db *gorm.DB, res []rel.Res, relTyp rel.Type, idB string, typB rel.ResType) error
	DelRelation(db *gorm.DB, idA string, typA rel.ResType, relTyp rel.Type, idB string, typB rel.ResType) error
	CheckRelation(db *gorm.DB, idA string, typA rel.ResType, relTyp rel.Type, idB string, typB rel.ResType) error
	GetRelations(db *gorm.DB, id string, typ rel.ResType, relTypes []rel.Type) ([]*rel.Relation, error)
	GetDependents(db *gorm.DB, id string, typ rel.ResType, relTypes []rel.Type) ([]*rel.Relation, error)
	CheckOp(db *gorm.DB, id string, typ rel.ResType, op rel.ResOp) error
	DelRes(db *gorm.DB, id string, typ rel.ResType) error
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL