lifecycle

package
v0.0.0-...-d364ca2 Latest Latest
Warning

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

Go to latest
Published: Aug 17, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package lifecycle defines Soro's model operation hooks and change context.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AfterCommitHook

type AfterCommitHook interface {
	AfterCommit(context.Context, *Context) error
}

type AfterCreateHook

type AfterCreateHook interface {
	AfterCreate(context.Context, *Context) error
}

type AfterDeleteHook

type AfterDeleteHook interface {
	AfterDelete(context.Context, *Context) error
}

type AfterForceDeleteHook

type AfterForceDeleteHook interface {
	AfterForceDelete(context.Context, *Context) error
}

type AfterRestoreHook

type AfterRestoreHook interface {
	AfterRestore(context.Context, *Context) error
}

type AfterRollbackHook

type AfterRollbackHook interface {
	AfterRollback(context.Context, *Context) error
}

type AfterSaveHook

type AfterSaveHook interface {
	AfterSave(context.Context, *Context) error
}

type AfterUpdateHook

type AfterUpdateHook interface {
	AfterUpdate(context.Context, *Context) error
}

type AfterValidateHook

type AfterValidateHook interface {
	AfterValidate(context.Context, *Context) error
}

type BeforeCreateHook

type BeforeCreateHook interface {
	BeforeCreate(context.Context, *Context) error
}

type BeforeDeleteHook

type BeforeDeleteHook interface {
	BeforeDelete(context.Context, *Context) error
}

type BeforeForceDeleteHook

type BeforeForceDeleteHook interface {
	BeforeForceDelete(context.Context, *Context) error
}

type BeforeRestoreHook

type BeforeRestoreHook interface {
	BeforeRestore(context.Context, *Context) error
}

type BeforeSaveHook

type BeforeSaveHook interface {
	BeforeSave(context.Context, *Context) error
}

type BeforeUpdateHook

type BeforeUpdateHook interface {
	BeforeUpdate(context.Context, *Context) error
}

type BeforeValidateHook

type BeforeValidateHook interface {
	BeforeValidate(context.Context, *Context) error
}

type Change

type Change struct {
	Field  string
	Column string
	Old    any
	New    any
}

type Changes

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

func Compare

func Compare(oldValue, newValue any) (Changes, error)

func (Changes) Change

func (c Changes) Change(field string) (Change, bool)

func (Changes) Changed

func (c Changes) Changed(field string) bool

func (Changes) Fields

func (c Changes) Fields() []string

func (Changes) HasChanges

func (c Changes) HasChanges() bool

func (Changes) Is

func (c Changes) Is(field string, expected any) bool

func (Changes) Values

func (c Changes) Values(field string) (oldValue, newValue any, ok bool)

func (Changes) Was

func (c Changes) Was(field string, expected any) bool

type Context

type Context struct {
	Operation Operation
	Changes   Changes
	Tx        bun.IDB
	ActorID   *uuid.UUID
	Metadata  map[string]any
}

type Handler

type Handler func(context.Context, any, *Context) error

type Operation

type Operation string
const (
	OperationCreate      Operation = "create"
	OperationUpdate      Operation = "update"
	OperationDelete      Operation = "delete"
	OperationRestore     Operation = "restore"
	OperationForceDelete Operation = "force_delete"
)

type Registry

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

Registry stores deterministic global and model-specific hooks.

func NewRegistry

func NewRegistry() *Registry

func (*Registry) Register

func (r *Registry) Register(model any, stage Stage, priority int, handler Handler) error

func (*Registry) RegisterGlobal

func (r *Registry) RegisterGlobal(stage Stage, priority int, handler Handler) error

func (*Registry) Run

func (r *Registry) Run(ctx context.Context, stage Stage, entity any, lifecycle *Context) error

Run invokes one stage. Before stages run global, registered, model hooks; after stages run model, registered, global hooks.

type Stage

type Stage string
const (
	BeforeValidate    Stage = "before_validate"
	AfterValidate     Stage = "after_validate"
	BeforeSave        Stage = "before_save"
	AfterSave         Stage = "after_save"
	BeforeCreate      Stage = "before_create"
	AfterCreate       Stage = "after_create"
	BeforeUpdate      Stage = "before_update"
	AfterUpdate       Stage = "after_update"
	BeforeDelete      Stage = "before_delete"
	AfterDelete       Stage = "after_delete"
	BeforeRestore     Stage = "before_restore"
	AfterRestore      Stage = "after_restore"
	BeforeForceDelete Stage = "before_force_delete"
	AfterForceDelete  Stage = "after_force_delete"
	AfterCommit       Stage = "after_commit"
	AfterRollback     Stage = "after_rollback"
)

Jump to

Keyboard shortcuts

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