internal

package
v1.2.1 Latest Latest
Warning

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

Go to latest
Published: Jun 15, 2024 License: Apache-2.0 Imports: 1 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	Success      = goenum.NewEnum[ErrorCode]("Success", ErrorCode{code: 0, desc: "成功"})
	Failed       = goenum.NewEnum[ErrorCode]("Failed", ErrorCode{code: -1, desc: "未知异常"})
	NetworkError = goenum.NewEnum[ErrorCode]("NetworkError", ErrorCode{code: 500, desc: "网络错误"})
	EncodeError  = goenum.NewEnum[ErrorCode]("EncodeError", ErrorCode{code: 600, desc: "编码错误"})
)
View Source
var (
	Payment  = goenum.NewEnum[BizCode]("Member", BizCode{code: 2, desc: "支付服务"})
	Trade    = goenum.NewEnum[BizCode]("Trade", BizCode{code: 2, desc: "交易服务"})
	Delivery = goenum.NewEnum[BizCode]("Delivery", BizCode{code: 2, desc: "履约服务"})
)
View Source
var (
	Red    = goenum.NewEnum[*ColorEnum]("Red")
	Yellow = goenum.NewEnum[*ColorEnum]("Yellow")
)
View Source
var (
	AddLabels           = goenum.NewEnum[Permission]("AddLabels")
	AddTopic            = goenum.NewEnum[Permission]("AddTopic")
	ViewMergeRequest    = goenum.NewEnum[Permission]("ViewMergeRequest")
	ApproveMergeRequest = goenum.NewEnum[Permission]("ApproveMergeRequest")
	DeleteMergeRequest  = goenum.NewEnum[Permission]("DeleteMergeRequest")
)

定义权限

View Source
var (
	Issues        = goenum.NewEnum[Module]("Issues", Module{perms: []Permission{AddLabels, AddTopic}, basePath: "/issues/"})
	MergeRequests = goenum.NewEnum[Module]("MergeRequests", Module{perms: []Permission{ViewMergeRequest, ApproveMergeRequest, DeleteMergeRequest}, basePath: "/merge/"})
)

定义模块

View Source
var (
	Reporter  = goenum.NewEnum[Role]("Reporter", Role{perms: []Permission{ViewMergeRequest}})
	Developer = goenum.NewEnum[Role]("Developer", Role{perms: []Permission{AddLabels, AddTopic, ViewMergeRequest}})
	Owner     = goenum.NewEnum[Role]("Owner", Role{perms: []Permission{AddLabels, AddTopic, ViewMergeRequest, ApproveMergeRequest, DeleteMergeRequest}}) // 可以考虑给Owner单独定义一个All的权限
)

定义角色

View Source
var (
	TradeCreated   = goenum.NewEnum[TradeState]("Created")
	TradeFailed    = goenum.NewEnum[TradeState]("Failed", TradeState{State: State{final: true}})
	TradePaid      = goenum.NewEnum[TradeState]("Paid")
	TradeShipped   = goenum.NewEnum[TradeState]("Shipped")
	TradeDelivered = goenum.NewEnum[TradeState]("Delivered", TradeState{State: State{final: true}})
)
View Source
var (
	ReverseCreated  = goenum.NewEnum[ReverseState]("Created")
	ReverseFailed   = goenum.NewEnum[ReverseState]("Failed", ReverseState{State: State{final: true}})
	ReverseRefunded = goenum.NewEnum[ReverseState]("Refunded", ReverseState{State: State{final: true}})
)

Functions

This section is empty.

Types

type BizCode added in v1.2.1

type BizCode = Code

type Code added in v1.2.1

type Code struct {
	goenum.Enum
	// contains filtered or unexported fields
}

func (Code) Code added in v1.2.1

func (c Code) Code() int

func (Code) Desc added in v1.2.1

func (c Code) Desc() string

type ColorEnum added in v1.2.1

type ColorEnum struct {
	*goenum.Enum // 支持组合指针,NewEnum传入相应的也需要指针类型
}

type ErrorCode added in v1.2.1

type ErrorCode = Code

ErrorCode 这里加等号与不加等号含义是不同的, 加等号,ErrorCode = Code, 表示完全是相同的类型,reflect.Type(Success) = Code。 而不加等号,则是创建了一个新的类型, reflect.Type(Success) = ErrorCode 所以,如果加等号,就不能出现name相同的枚举,否则会破坏同类型枚举不能出现同名枚举的原则。类似的示例可以参考 state.go

type Module

type Module struct {
	goenum.Enum
	// contains filtered or unexported fields
}

func (Module) BasePath

func (m Module) BasePath() string

func (Module) GetPerms

func (m Module) GetPerms() []Permission

type Permission

type Permission struct {
	goenum.Enum
}

type ReverseState added in v1.2.1

type ReverseState struct {
	State
}

type Role

type Role struct {
	goenum.Enum
	// contains filtered or unexported fields
}

Role 参考 https://docs.gitlab.com/ee/user/permissions.html

func (*Role) HasPerm

func (r *Role) HasPerm(p Permission) bool

func (*Role) UnmarshalJSON added in v1.2.1

func (r *Role) UnmarshalJSON(data []byte) (err error)

UnmarshalJSON 枚举类需要自行实现json.Unmarshaler接口

type State added in v1.2.1

type State struct {
	goenum.Enum
	// contains filtered or unexported fields
}

func (State) IsFinal added in v1.2.1

func (s State) IsFinal() bool

type TradeState added in v1.2.1

type TradeState struct {
	State
}

TradeState 不能使用type TradeState State定义类型,这样TradeState无法访问IsFinal方法

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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