mirror of
https://github.com/emo2007/block-accounting.git
synced 2024-11-10 04:36:26 +00:00
49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
package ctxmeta
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/emochka2007/block-accounting/internal/pkg/models"
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type ContextKey string
|
|
|
|
var (
|
|
UserContextKey = ContextKey("user")
|
|
OrganizationIdContextKey = ContextKey("org-id")
|
|
OrganizationParticipantContextKey = ContextKey("org-participant")
|
|
)
|
|
|
|
func UserContext(parent context.Context, user *models.User) context.Context {
|
|
return context.WithValue(parent, UserContextKey, user)
|
|
}
|
|
|
|
func User(ctx context.Context) (*models.User, error) {
|
|
if user, ok := ctx.Value(UserContextKey).(*models.User); ok {
|
|
return user, nil
|
|
}
|
|
|
|
return nil, fmt.Errorf("error user not passed in context")
|
|
}
|
|
|
|
func OrganizationParticipantContext(
|
|
parent context.Context,
|
|
participant models.OrganizationParticipant,
|
|
) context.Context {
|
|
return context.WithValue(parent, OrganizationParticipantContextKey, participant)
|
|
}
|
|
|
|
func OrganizationIdContext(parent context.Context, id uuid.UUID) context.Context {
|
|
return context.WithValue(parent, OrganizationIdContextKey, id)
|
|
}
|
|
|
|
func OrganizationId(ctx context.Context) (uuid.UUID, error) {
|
|
if id, ok := ctx.Value(OrganizationIdContextKey).(uuid.UUID); ok {
|
|
return id, nil
|
|
}
|
|
|
|
return uuid.Nil, fmt.Errorf("error organization id not passed in context")
|
|
}
|