package mycontext import ( "context" "furtuna-be/internal/constants/role" "furtuna-be/internal/entity" ) type ContextKey string type Context interface { context.Context RequestedBy() int64 IsSuperAdmin() bool GetPartnerID() *int64 } type MyContextImpl struct { context.Context requestedBy int64 requestID string partnerID int64 roleID int } func (m *MyContextImpl) RequestedBy() int64 { return m.requestedBy } func (m *MyContextImpl) IsSuperAdmin() bool { return m.roleID == int(role.SuperAdmin) } func (m *MyContextImpl) GetPartnerID() *int64 { if m.partnerID != 0 { return &m.partnerID } return nil } func NewMyContext(parent context.Context, claims *entity.JWTAuthClaims) (*MyContextImpl, error) { return &MyContextImpl{ Context: parent, requestedBy: claims.UserID, partnerID: claims.PartnerID, roleID: claims.Role, }, nil } func NewContext(parent context.Context) *MyContextImpl { return &MyContextImpl{ Context: parent, } }