toolbelt

package module
v0.5.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 25, 2025 License: MIT Imports: 31 Imported by: 16

README

toolbelt

A set of utilities used in every go project

wisshes mascot

Documentation

Index

Constants

View Source
const (
	UnixEpochJulianDay = 2440587.5
)

Variables

View Source
var (
	JulianZeroTime = JulianDayToTime(0)
)

Functions

func AliasHash

func AliasHash(alias string) int64

func AliasHashEncoded

func AliasHashEncoded(alias string) string

func AliasHashEncodedf

func AliasHashEncodedf(format string, args ...interface{}) string

func AliasHashf

func AliasHashf(format string, args ...interface{}) int64

func Camel

func Camel(s string) string

func Cased

func Cased(s string, fn ...CasedFn) string

func Clamp

func Clamp[T Float](v T, minimum T, maximum T) T

func Clamp01

func Clamp01[T Float](v T) T

func ClampFit

func ClampFit[T Float](
	x T,
	oldMin T,
	oldMax T,
	newMin T,
	newMax T,
) T

func ClampFit01

func ClampFit01[T Float](x T, newMin T, newMax T) T

func CtxSlog added in v0.0.3

func CtxSlog(ctx context.Context) (logger *slog.Logger, ok bool)

func CtxWithSlog added in v0.0.3

func CtxWithSlog(ctx context.Context, slog *slog.Logger) context.Context

func DurationToMilliseconds added in v0.2.2

func DurationToMilliseconds(d time.Duration) int64

func Fit

func Fit[T Float](
	x T,
	oldMin T,
	oldMax T,
	newMin T,
	newMax T,
) T

func Fit01

func Fit01[T Float](x T, newMin T, newMax T) T

func FitMax

func FitMax[T Float](x T, newMax T) T

func FreePort added in v0.3.11

func FreePort() (port int, err error)

Returns a free port number that can be used to listen on.

func JulianDayToTime

func JulianDayToTime(d float64) time.Time

JulianDayToTime converts a Julian day into a time.Time.

func JulianDayToTimestamp

func JulianDayToTimestamp(f float64) *timestamppb.Timestamp

func JulianNow

func JulianNow() float64

func Kebab

func Kebab(s string) string

func Lower

func Lower(s string) string

func MigrationsFromFS added in v0.3.13

func MigrationsFromFS(migrationsFS embed.FS, migrationsDir string) ([]string, error)

func MillisecondsToDuration added in v0.2.2

func MillisecondsToDuration(ms int64) time.Duration

func MustProtoJSONMarshal added in v0.1.1

func MustProtoJSONMarshal(msg proto.Message) []byte

func MustProtoJSONUnmarshal added in v0.1.1

func MustProtoJSONUnmarshal(b []byte, msg proto.Message)

func MustProtoMarshal added in v0.1.1

func MustProtoMarshal(msg proto.Message) []byte

func MustProtoUnmarshal added in v0.1.1

func MustProtoUnmarshal(b []byte, msg proto.Message)

func NextEncodedID

func NextEncodedID() string

func NextID

func NextID() int64

func Pascal

func Pascal(s string) string

func RandIntRange

func RandIntRange[T Integer](r *rand.Rand, min, max T) T

func RandNegOneToOneClamped

func RandNegOneToOneClamped[T Float](r *rand.Rand) T

func RandSliceItem added in v0.3.1

func RandSliceItem[T any](r *rand.Rand, slice []T) T

func RoundFit01

func RoundFit01[T Float](x T, newMin T, newMax T) T

func ScreamingSnake added in v0.3.8

func ScreamingSnake(s string) string

func Snake

func Snake(s string) string

func StmtBytes added in v0.2.0

func StmtBytes(stmt *sqlite.Stmt, colName string) []byte

func StmtBytesByCol added in v0.2.14

func StmtBytesByCol(stmt *sqlite.Stmt, col int) []byte

func StmtJulianToTime added in v0.2.0

func StmtJulianToTime(stmt *sqlite.Stmt, colName string) time.Time

func StmtJulianToTimestamp added in v0.2.0

func StmtJulianToTimestamp(stmt *sqlite.Stmt, colName string) *timestamppb.Timestamp

func TimeToJulianDay

func TimeToJulianDay(t time.Time) float64

TimeToJulianDay converts a time.Time into a Julian day.

func TimestampJulian

func TimestampJulian(ts *timestamppb.Timestamp) float64

func Upper

func Upper(s string) string

Types

type CasedFn added in v0.0.26

type CasedFn func(string) string

type CasedString

type CasedString struct {
	Original       string
	Pascal         string
	Camel          string
	Snake          string
	ScreamingSnake string
	Kebab          string
	Upper          string
	Lower          string
}

func ToCasedString added in v0.0.26

func ToCasedString(s string) CasedString

type CtxErrFunc

type CtxErrFunc func(ctx context.Context) error

func CallNTimesWithDelay added in v0.3.14

func CallNTimesWithDelay(d time.Duration, n int, fn CtxErrFunc) CtxErrFunc

func Debounce added in v0.3.14

func Debounce(d time.Duration, fn CtxErrFunc) CtxErrFunc

Debounce will only call the function after d duration has passed since the last call.

func Throttle added in v0.3.14

func Throttle(d time.Duration, fn CtxErrFunc) CtxErrFunc

Throttle will only allow the function to be called once every d duration.

type CtxKey added in v0.0.3

type CtxKey string
const CtxSlogKey CtxKey = "slog"

type Database

type Database struct {
	// contains filtered or unexported fields
}

func NewDatabase

func NewDatabase(ctx context.Context, dbFilename string, migrations []string) (*Database, error)

func (*Database) Close

func (db *Database) Close() error

func (*Database) ReadTX

func (db *Database) ReadTX(ctx context.Context, fn TxFn) (err error)

func (*Database) Reset added in v0.2.5

func (db *Database) Reset(ctx context.Context, shouldClear bool) (err error)

func (*Database) WriteTX

func (db *Database) WriteTX(ctx context.Context, fn TxFn) (err error)

func (*Database) WriteWithoutTx added in v0.2.10

func (db *Database) WriteWithoutTx(ctx context.Context, fn TxFn) error

type ErrGroupSeparateCtx

type ErrGroupSeparateCtx struct {
	// contains filtered or unexported fields
}

func NewErrGroupSeparateCtx

func NewErrGroupSeparateCtx() *ErrGroupSeparateCtx

func (*ErrGroupSeparateCtx) Go

func (egc *ErrGroupSeparateCtx) Go(ctx context.Context, funcs ...CtxErrFunc)

func (*ErrGroupSeparateCtx) Wait

func (egc *ErrGroupSeparateCtx) Wait() error

type ErrGroupSharedCtx

type ErrGroupSharedCtx struct {
	// contains filtered or unexported fields
}

func NewErrGroupSharedCtx

func NewErrGroupSharedCtx(ctx context.Context, funcs ...CtxErrFunc) *ErrGroupSharedCtx

func (*ErrGroupSharedCtx) Go

func (egc *ErrGroupSharedCtx) Go(funcs ...CtxErrFunc)

func (*ErrGroupSharedCtx) Wait

func (egc *ErrGroupSharedCtx) Wait() error

type EventBus added in v0.4.4

type EventBus[T any] interface {
	Subscribe(ctx context.Context, fn Subscriber[T]) context.CancelFunc
	Emit(ctx context.Context, msg T) error
	Count() int
}

type EventBusAsync added in v0.4.4

type EventBusAsync[T any] struct {
	// contains filtered or unexported fields
}

func NewEventBusAsync added in v0.4.4

func NewEventBusAsync[T any]() *EventBusAsync[T]

func (EventBusAsync) Count added in v0.4.4

func (b EventBusAsync) Count() int

func (*EventBusAsync[T]) Emit added in v0.4.4

func (b *EventBusAsync[T]) Emit(ctx context.Context, msg T) error

func (EventBusAsync) Subscribe added in v0.4.4

func (b EventBusAsync) Subscribe(ctx context.Context, fn Subscriber[T]) context.CancelFunc

type EventBusSync added in v0.4.4

type EventBusSync[T any] struct {
	// contains filtered or unexported fields
}

func NewEventBusSync added in v0.4.4

func NewEventBusSync[T any]() *EventBusSync[T]

func (EventBusSync) Count added in v0.4.4

func (b EventBusSync) Count() int

func (*EventBusSync[T]) Emit added in v0.4.4

func (b *EventBusSync[T]) Emit(ctx context.Context, msg T) error

func (EventBusSync) Subscribe added in v0.4.4

func (b EventBusSync) Subscribe(ctx context.Context, fn Subscriber[T]) context.CancelFunc

type Float

type Float interface {
	~float32 | ~float64
}

type Integer

type Integer interface {
	~int | ~uint8 | ~int8 | ~uint16 | ~int16 | ~uint32 | ~int32 | ~uint64 | ~int64
}

type MustProtobufHandler added in v0.2.0

type MustProtobufHandler struct {
	// contains filtered or unexported fields
}

func NewProtobufHandler added in v0.2.0

func NewProtobufHandler(isJSON bool) *MustProtobufHandler

func (*MustProtobufHandler) Marshal added in v0.2.0

func (h *MustProtobufHandler) Marshal(msg proto.Message) []byte

func (*MustProtobufHandler) Unmarshal added in v0.2.0

func (h *MustProtobufHandler) Unmarshal(b []byte, msg proto.Message)

type Pool added in v0.2.1

type Pool[T any] struct {
	// contains filtered or unexported fields
}

A Pool is a generic wrapper around a sync.Pool.

func New added in v0.2.1

func New[T any](fn func() T) Pool[T]

New creates a new Pool with the provided new function.

The equivalent sync.Pool construct is "sync.Pool{New: fn}"

func (*Pool[T]) Get added in v0.2.1

func (p *Pool[T]) Get() T

Get is a generic wrapper around sync.Pool's Get method.

func (*Pool[T]) Put added in v0.2.1

func (p *Pool[T]) Put(x T)

Get is a generic wrapper around sync.Pool's Put method.

type Subscriber added in v0.4.4

type Subscriber[T any] func(msg T) error

type TxFn

type TxFn func(tx *sqlite.Conn) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL