Skip to content
This repository was archived by the owner on Sep 10, 2025. It is now read-only.

Repository files navigation

Build Status

CJToolkit Context System

Just a simple context system.

Installation

go get github.com/cjtoolkit/ctx/v2

Usage

It's useful for storing configuration and dependencies (Dependency Injection) without having to rely on side effect.

Example

package ctx
import (
"database/sql""encoding/json""log""os"
ctx "github.com/cjtoolkit/ctx/v2"
)
typeConfigstruct {
DbRsnstring`json:"DbRsn"`
}
funcGetConfig(context ctx.Context) Config {
typeConfigContextstruct{}
returncontext.Persist(ConfigContext{}, func() (interface{}, error) {
returninitConfig(), nil
}).(Config)
}
funcinitConfig() (configConfig) {
file, err:=os.Open("setting.json")
iferr!=nil {
log.Fatal(err)
}
deferfile.Close()
err=json.NewDecoder(file).Decode(&config)
iferr!=nil {
log.Fatal(err)
}
return
}
funcGetDatabaseConnection(context ctx.Context) *sql.DB {
typeDatabaseContextstruct{}
returncontext.Persist(DatabaseContext{}, func() (interface{}, error) {
returninitDatabaseConnection(context)
}).(*sql.DB)
}
funcinitDatabaseConnection(context ctx.Context) (*sql.DB, error) {
returnsql.Open("postgres", GetConfig(context).DbRsn)
}

About

🛥 Just a simple context system for background and user request.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages