package system

import "context"

type DataScope struct {
	All           bool
	Scope         int
	UserID        uint
	AuthorityID   uint
	PrimaryDeptID uint
	OwnerUserID   uint
	DepartmentIDs []uint
	RequestID     string
	Method        string
	Path          string
}

type dataScopeKey struct{}

func NewDataScopeContext(ctx context.Context, scope DataScope) context.Context {
	return context.WithValue(ctx, dataScopeKey{}, scope)
}

func DataScopeFromContext(ctx context.Context) (DataScope, bool) {
	scope, ok := ctx.Value(dataScopeKey{}).(DataScope)
	return scope, ok
}
