Files
golib/context
Nicolas JUHEL 2a1ecadf01 Package context:
- gin: apply change following bumping gin (move value from interface{} to any, move key from string to any)

Package Database:
- gorm: removing clickhouse driver following cve and no update since publicated

Other:
- bump dependencies
2025-09-26 11:21:22 +02:00
..
2025-09-26 11:21:22 +02:00
2024-10-06 18:28:59 +02:00
2021-04-13 14:21:07 +02:00
2025-05-25 06:29:25 +02:00

context Package

The context package extends Go's standard context.Context with advanced configuration and management features. It provides generic, thread-safe context storage, context cloning, merging, and key-value management, making it easier to handle complex application state and configuration.

Features

  • Generic context configuration with type-safe keys
  • Thread-safe key-value storage and retrieval
  • Context cloning and merging
  • Walk and filter stored values
  • Integration with Go's context.Context interface

Main Types & Functions

  • Config[T comparable]: Generic interface for context configuration and key-value management.
  • MapManage[T]: Interface for map operations (load, store, delete, clean).
  • FuncContext: Function type returning a context.Context.
  • NewConfig: Create a new generic context configuration.

Example Usage

import "github.com/nabbar/golib/context"

type MyKey string

cfg := context.NewConfig[MyKey](nil)
cfg.Store("myKey", "myValue")
val, ok := cfg.Load("myKey")

Key Methods

  • SetContext(ctx FuncContext)
  • Clone(ctx context.Context) Config[T]
  • Merge(cfg Config[T]) bool
  • Walk(fct FuncWalk[T]) bool
  • LoadOrStore(key T, cfg interface{}) (val interface{}, loaded bool)
  • Clean()

IsolateParent

Creates a new context with cancelation, isolated from the parent.

ctx := context.IsolateParent(parentCtx)

context/gin Subpackage

The context/gin subpackage provides a bridge between Go's context and the Gin web framework. It wraps Gin's Context to add context management, signal handling, and metadata utilities for HTTP request handling.

Features

  • Wraps Gin's Context with Go's context.Context
  • Signal-based cancellation (e.g., on OS signals)
  • Key-value storage and retrieval for request-scoped data
  • Type-safe getters for common types (string, int, bool, etc.)
  • Integrated logging support

Main Types & Functions

  • GinTonic: Interface combining context.Context and Gin's Context with extra helpers.
  • New: Create a new GinTonic context from a Gin Context and logger.

Example Usage

import (
    "github.com/nabbar/golib/context/gin"
    "github.com/gin-gonic/gin"
    "github.com/nabbar/golib/logger"
)

func handler(c *gin.Context) {
    ctx := gin.New(c, logger.New(nil))
    ctx.Set("userID", 123)
    id := ctx.GetInt("userID")
    // ...
}

Key Methods

  • Set(key string, value interface{})
  • Get(key string) (value interface{}, exists bool)
  • GetString(key string) string
  • CancelOnSignal(s ...os.Signal)
  • SetLogger(log liblog.FuncLog)