widgets

package
v0.49.1 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2026 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AreaScopeGlobal   = cmswidgets.AreaScopeGlobal
	AreaScopeTheme    = cmswidgets.AreaScopeTheme
	AreaScopeTemplate = cmswidgets.AreaScopeTemplate
	AreaScopePage     = cmswidgets.AreaScopePage
)
View Source
const (
	DefinitionSyncStatusCreated   = cmswidgets.DefinitionSyncStatusCreated
	DefinitionSyncStatusUpdated   = cmswidgets.DefinitionSyncStatusUpdated
	DefinitionSyncStatusUnchanged = cmswidgets.DefinitionSyncStatusUnchanged
)

Variables

View Source
var (
	ErrFeatureDisabled = cmswidgets.ErrFeatureDisabled

	ErrDefinitionNameRequired          = cmswidgets.ErrDefinitionNameRequired
	ErrDefinitionSchemaRequired        = cmswidgets.ErrDefinitionSchemaRequired
	ErrDefinitionSchemaInvalid         = cmswidgets.ErrDefinitionSchemaInvalid
	ErrDefinitionExists                = cmswidgets.ErrDefinitionExists
	ErrDefinitionDefaultsInvalid       = cmswidgets.ErrDefinitionDefaultsInvalid
	ErrDefinitionInUse                 = cmswidgets.ErrDefinitionInUse
	ErrDefinitionSoftDeleteUnsupported = cmswidgets.ErrDefinitionSoftDeleteUnsupported

	ErrInstanceDefinitionRequired    = cmswidgets.ErrInstanceDefinitionRequired
	ErrInstanceCreatorRequired       = cmswidgets.ErrInstanceCreatorRequired
	ErrInstanceUpdaterRequired       = cmswidgets.ErrInstanceUpdaterRequired
	ErrInstanceIDRequired            = cmswidgets.ErrInstanceIDRequired
	ErrInstancePositionInvalid       = cmswidgets.ErrInstancePositionInvalid
	ErrInstanceConfigurationInvalid  = cmswidgets.ErrInstanceConfigurationInvalid
	ErrInstanceScheduleInvalid       = cmswidgets.ErrInstanceScheduleInvalid
	ErrVisibilityRulesInvalid        = cmswidgets.ErrVisibilityRulesInvalid
	ErrVisibilityScheduleInvalid     = cmswidgets.ErrVisibilityScheduleInvalid
	ErrInstanceSoftDeleteUnsupported = cmswidgets.ErrInstanceSoftDeleteUnsupported

	ErrTranslationContentRequired = cmswidgets.ErrTranslationContentRequired
	ErrTranslationLocaleRequired  = cmswidgets.ErrTranslationLocaleRequired
	ErrTranslationExists          = cmswidgets.ErrTranslationExists
	ErrTranslationNotFound        = cmswidgets.ErrTranslationNotFound

	ErrAreaCodeRequired           = cmswidgets.ErrAreaCodeRequired
	ErrAreaCodeInvalid            = cmswidgets.ErrAreaCodeInvalid
	ErrAreaNameRequired           = cmswidgets.ErrAreaNameRequired
	ErrAreaDefinitionExists       = cmswidgets.ErrAreaDefinitionExists
	ErrAreaDefinitionNotFound     = cmswidgets.ErrAreaDefinitionNotFound
	ErrAreaFeatureDisabled        = cmswidgets.ErrAreaFeatureDisabled
	ErrAreaInstanceRequired       = cmswidgets.ErrAreaInstanceRequired
	ErrAreaPlacementExists        = cmswidgets.ErrAreaPlacementExists
	ErrAreaPlacementPosition      = cmswidgets.ErrAreaPlacementPosition
	ErrAreaPlacementNotFound      = cmswidgets.ErrAreaPlacementNotFound
	ErrAreaWidgetOrderMismatch    = cmswidgets.ErrAreaWidgetOrderMismatch
	ErrVisibilityLocaleRestricted = cmswidgets.ErrVisibilityLocaleRestricted
)

Functions

func Bootstrap

func Bootstrap(ctx context.Context, svc Service, cfg BootstrapConfig) error

Bootstrap registers widget definitions and areas, tolerating duplicates.

func EnsureAreaDefinitions

func EnsureAreaDefinitions(ctx context.Context, svc Service, areas []RegisterAreaDefinitionInput) error

EnsureAreaDefinitions idempotently registers widget area definitions.

func EnsureDefinitions

func EnsureDefinitions(ctx context.Context, svc Service, definitions []RegisterDefinitionInput) error

EnsureDefinitions idempotently registers widget definitions with the provided service.

func NewAreaDefinitionRepository

func NewAreaDefinitionRepository(db *bun.DB) repository.Repository[*AreaDefinition]

NewAreaDefinitionRepository creates a repository for area definitions.

func NewAreaPlacementRepository

func NewAreaPlacementRepository(db *bun.DB) repository.Repository[*AreaPlacement]

NewAreaPlacementRepository creates a repository for area placements.

func NewDefinitionRepository

func NewDefinitionRepository(db *bun.DB) repository.Repository[*Definition]

NewDefinitionRepository creates a repository for widget definitions.

func NewInstanceRepository

func NewInstanceRepository(db *bun.DB) repository.Repository[*Instance]

NewInstanceRepository creates a repository for widget instances.

func NewTranslationRepository

func NewTranslationRepository(db *bun.DB) repository.Repository[*Translation]

NewTranslationRepository creates a repository for widget translations.

Types

type AddTranslationInput

type AddTranslationInput = cmswidgets.AddTranslationInput

type AreaDefinition

type AreaDefinition = cmswidgets.AreaDefinition

type AreaDefinitionRepository

type AreaDefinitionRepository interface {
	Create(ctx context.Context, definition *AreaDefinition) (*AreaDefinition, error)
	GetByCode(ctx context.Context, code string) (*AreaDefinition, error)
	List(ctx context.Context) ([]*AreaDefinition, error)
}

AreaDefinitionRepository manages widget area metadata.

func NewMemoryAreaDefinitionRepository

func NewMemoryAreaDefinitionRepository() AreaDefinitionRepository

NewMemoryAreaDefinitionRepository constructs an in-memory area definition repository.

type AreaPlacement

type AreaPlacement = cmswidgets.AreaPlacement

type AreaPlacementRepository

type AreaPlacementRepository interface {
	ListByAreaAndLocale(ctx context.Context, areaCode string, localeID *uuid.UUID) ([]*AreaPlacement, error)
	Replace(ctx context.Context, areaCode string, localeID *uuid.UUID, placements []*AreaPlacement) error
	DeleteByAreaLocaleInstance(ctx context.Context, areaCode string, localeID *uuid.UUID, instanceID uuid.UUID) error
	DeleteByInstance(ctx context.Context, instanceID uuid.UUID) error
}

AreaPlacementRepository manages widget placements within areas.

func NewMemoryAreaPlacementRepository

func NewMemoryAreaPlacementRepository() AreaPlacementRepository

NewMemoryAreaPlacementRepository constructs an in-memory area placement repository.

type AreaScope

type AreaScope = cmswidgets.AreaScope

type AreaWidgetOrder

type AreaWidgetOrder = cmswidgets.AreaWidgetOrder

type AssignWidgetToAreaInput

type AssignWidgetToAreaInput = cmswidgets.AssignWidgetToAreaInput

type BootstrapConfig

type BootstrapConfig struct {
	Definitions []RegisterDefinitionInput
	Areas       []RegisterAreaDefinitionInput
}

BootstrapConfig bundles the registration payloads applied during startup.

type BunAreaDefinitionRepository

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

BunAreaDefinitionRepository implements AreaDefinitionRepository.

func NewBunAreaDefinitionRepository

func NewBunAreaDefinitionRepository(db *bun.DB) *BunAreaDefinitionRepository

NewBunAreaDefinitionRepository creates an area definition repository.

func (*BunAreaDefinitionRepository) Create

func (*BunAreaDefinitionRepository) GetByCode

func (*BunAreaDefinitionRepository) List

type BunAreaPlacementRepository

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

BunAreaPlacementRepository implements AreaPlacementRepository.

func NewBunAreaPlacementRepository

func NewBunAreaPlacementRepository(db *bun.DB) *BunAreaPlacementRepository

NewBunAreaPlacementRepository creates an area placement repository.

func (*BunAreaPlacementRepository) DeleteByAreaLocaleInstance

func (r *BunAreaPlacementRepository) DeleteByAreaLocaleInstance(ctx context.Context, areaCode string, localeID *uuid.UUID, instanceID uuid.UUID) error

func (*BunAreaPlacementRepository) DeleteByInstance added in v0.2.0

func (r *BunAreaPlacementRepository) DeleteByInstance(ctx context.Context, instanceID uuid.UUID) error

func (*BunAreaPlacementRepository) ListByAreaAndLocale

func (r *BunAreaPlacementRepository) ListByAreaAndLocale(ctx context.Context, areaCode string, localeID *uuid.UUID) ([]*AreaPlacement, error)

func (*BunAreaPlacementRepository) Replace

func (r *BunAreaPlacementRepository) Replace(ctx context.Context, areaCode string, localeID *uuid.UUID, placements []*AreaPlacement) error

type BunDefinitionRepository

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

BunDefinitionRepository implements DefinitionRepository with optional caching.

func NewBunDefinitionRepository

func NewBunDefinitionRepository(db *bun.DB) *BunDefinitionRepository

NewBunDefinitionRepository creates a definition repository without caching.

func NewBunDefinitionRepositoryWithCache

func NewBunDefinitionRepositoryWithCache(db *bun.DB, cacheService cache.CacheService, serializer cache.KeySerializer) *BunDefinitionRepository

NewBunDefinitionRepositoryWithCache creates a definition repository with caching.

func (*BunDefinitionRepository) Create

func (r *BunDefinitionRepository) Create(ctx context.Context, definition *Definition) (*Definition, error)

func (*BunDefinitionRepository) Delete added in v0.2.0

func (*BunDefinitionRepository) GetByID

func (*BunDefinitionRepository) GetByName

func (r *BunDefinitionRepository) GetByName(ctx context.Context, name string) (*Definition, error)

func (*BunDefinitionRepository) List

func (*BunDefinitionRepository) Update added in v0.2.0

func (r *BunDefinitionRepository) Update(ctx context.Context, definition *Definition) (*Definition, error)

type BunInstanceRepository

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

BunInstanceRepository implements InstanceRepository with optional caching.

func NewBunInstanceRepository

func NewBunInstanceRepository(db *bun.DB) *BunInstanceRepository

NewBunInstanceRepository creates an instance repository without caching.

func NewBunInstanceRepositoryWithCache

func NewBunInstanceRepositoryWithCache(db *bun.DB, cacheService cache.CacheService, serializer cache.KeySerializer) *BunInstanceRepository

NewBunInstanceRepositoryWithCache creates an instance repository with caching.

func (*BunInstanceRepository) Create

func (r *BunInstanceRepository) Create(ctx context.Context, instance *Instance) (*Instance, error)

func (*BunInstanceRepository) Delete added in v0.2.0

func (r *BunInstanceRepository) Delete(ctx context.Context, id uuid.UUID) error

func (*BunInstanceRepository) GetByID

func (r *BunInstanceRepository) GetByID(ctx context.Context, id uuid.UUID) (*Instance, error)

func (*BunInstanceRepository) ListAll

func (r *BunInstanceRepository) ListAll(ctx context.Context) ([]*Instance, error)

func (*BunInstanceRepository) ListByArea

func (r *BunInstanceRepository) ListByArea(ctx context.Context, areaCode string) ([]*Instance, error)

func (*BunInstanceRepository) ListByDefinition

func (r *BunInstanceRepository) ListByDefinition(ctx context.Context, definitionID uuid.UUID) ([]*Instance, error)

func (*BunInstanceRepository) Update

func (r *BunInstanceRepository) Update(ctx context.Context, instance *Instance) (*Instance, error)

type BunTranslationRepository

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

BunTranslationRepository implements TranslationRepository with optional caching.

func NewBunTranslationRepository

func NewBunTranslationRepository(db *bun.DB) *BunTranslationRepository

NewBunTranslationRepository creates a translation repository without caching.

func NewBunTranslationRepositoryWithCache

func NewBunTranslationRepositoryWithCache(db *bun.DB, cacheService cache.CacheService, serializer cache.KeySerializer) *BunTranslationRepository

NewBunTranslationRepositoryWithCache creates a translation repository with caching.

func (*BunTranslationRepository) Create

func (r *BunTranslationRepository) Create(ctx context.Context, translation *Translation) (*Translation, error)

func (*BunTranslationRepository) Delete added in v0.2.0

func (*BunTranslationRepository) GetByInstanceAndLocale

func (r *BunTranslationRepository) GetByInstanceAndLocale(ctx context.Context, instanceID uuid.UUID, localeID uuid.UUID) (*Translation, error)

func (*BunTranslationRepository) ListByInstance

func (r *BunTranslationRepository) ListByInstance(ctx context.Context, instanceID uuid.UUID) ([]*Translation, error)

func (*BunTranslationRepository) Update

func (r *BunTranslationRepository) Update(ctx context.Context, translation *Translation) (*Translation, error)

type CreateInstanceInput

type CreateInstanceInput = cmswidgets.CreateInstanceInput

type Definition

type Definition = cmswidgets.Definition

type DefinitionFactory

type DefinitionFactory func() RegisterDefinitionInput

DefinitionFactory returns the registration input for a widget definition.

type DefinitionRepository

type DefinitionRepository interface {
	Create(ctx context.Context, definition *Definition) (*Definition, error)
	GetByID(ctx context.Context, id uuid.UUID) (*Definition, error)
	GetByName(ctx context.Context, name string) (*Definition, error)
	List(ctx context.Context) ([]*Definition, error)
	Update(ctx context.Context, definition *Definition) (*Definition, error)
	Delete(ctx context.Context, id uuid.UUID) error
}

DefinitionRepository exposes persistence operations for widget definitions.

func NewMemoryDefinitionRepository

func NewMemoryDefinitionRepository() DefinitionRepository

NewMemoryDefinitionRepository constructs an in-memory widget definition repository.

type DefinitionSyncResult added in v0.49.0

type DefinitionSyncResult = cmswidgets.DefinitionSyncResult

type DefinitionSyncStatus added in v0.49.0

type DefinitionSyncStatus = cmswidgets.DefinitionSyncStatus

type DeleteDefinitionRequest added in v0.2.0

type DeleteDefinitionRequest = cmswidgets.DeleteDefinitionRequest

type DeleteInstanceRequest added in v0.2.0

type DeleteInstanceRequest = cmswidgets.DeleteInstanceRequest

type DeleteTranslationRequest added in v0.2.0

type DeleteTranslationRequest = cmswidgets.DeleteTranslationRequest

type IDGenerator

type IDGenerator func() uuid.UUID

IDGenerator produces unique identifiers.

type Instance

type Instance = cmswidgets.Instance

type InstanceFactory

type InstanceFactory func(ctx context.Context, definition *Definition, input CreateInstanceInput) (map[string]any, error)

InstanceFactory can generate configuration payloads for a widget instance.

type InstanceRepository

type InstanceRepository interface {
	Create(ctx context.Context, instance *Instance) (*Instance, error)
	GetByID(ctx context.Context, id uuid.UUID) (*Instance, error)
	ListByDefinition(ctx context.Context, definitionID uuid.UUID) ([]*Instance, error)
	ListByArea(ctx context.Context, areaCode string) ([]*Instance, error)
	ListAll(ctx context.Context) ([]*Instance, error)
	Update(ctx context.Context, instance *Instance) (*Instance, error)
	Delete(ctx context.Context, id uuid.UUID) error
}

InstanceRepository exposes persistence operations for widget instances.

func NewMemoryInstanceRepository

func NewMemoryInstanceRepository() InstanceRepository

NewMemoryInstanceRepository constructs an in-memory widget instance repository.

type NotFoundError

type NotFoundError struct {
	Resource string
	Key      string
}

NotFoundError is returned when a widget resource cannot be located.

func (*NotFoundError) Error

func (e *NotFoundError) Error() string

type RegisterAreaDefinitionInput

type RegisterAreaDefinitionInput = cmswidgets.RegisterAreaDefinitionInput

type RegisterDefinitionInput

type RegisterDefinitionInput = cmswidgets.RegisterDefinitionInput

type Registration

type Registration struct {
	Definition      DefinitionFactory
	InstanceFactory InstanceFactory
}

Registration bundles a definition factory with an optional instance factory.

type Registry

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

Registry stores built-in and host-defined widget registrations.

func NewRegistry

func NewRegistry() *Registry

NewRegistry constructs an empty registry.

func (*Registry) InstanceFactory

func (r *Registry) InstanceFactory(name string) InstanceFactory

InstanceFactory resolves a registered instance factory by widget name.

func (*Registry) List

func (r *Registry) List() []RegisterDefinitionInput

List returns all registered widget definition inputs.

func (*Registry) Register

func (r *Registry) Register(input RegisterDefinitionInput)

Register adds a static definition input to the registry

func (*Registry) RegisterFactory

func (r *Registry) RegisterFactory(key string, registration Registration)

RegisterFactory adds a definition factory (and optional instance factory) to the registry

type RemoveWidgetFromAreaInput

type RemoveWidgetFromAreaInput = cmswidgets.RemoveWidgetFromAreaInput

type ReorderAreaWidgetsInput

type ReorderAreaWidgetsInput = cmswidgets.ReorderAreaWidgetsInput

type ResolveAreaInput

type ResolveAreaInput = cmswidgets.ResolveAreaInput

type ResolvedWidget

type ResolvedWidget = cmswidgets.ResolvedWidget

type Service

type Service = cmswidgets.Service

func NewNoOpService

func NewNoOpService() Service

NewNoOpService returns a Service implementation that always reports the feature as disabled.

func NewService

func NewService(defRepo DefinitionRepository, instRepo InstanceRepository, trRepo TranslationRepository, opts ...ServiceOption) Service

NewService constructs a widget service instance.

type ServiceOption

type ServiceOption func(*service)

ServiceOption configures widget service behaviour.

func WithActivityEmitter added in v0.5.0

func WithActivityEmitter(emitter *activity.Emitter) ServiceOption

WithActivityEmitter wires the activity emitter used for activity records.

func WithAreaDefinitionRepository

func WithAreaDefinitionRepository(repo AreaDefinitionRepository) ServiceOption

WithAreaDefinitionRepository wires the area definition repository.

func WithAreaPlacementRepository

func WithAreaPlacementRepository(repo AreaPlacementRepository) ServiceOption

WithAreaPlacementRepository wires the area placement repository.

func WithClock

func WithClock(clock func() time.Time) ServiceOption

WithClock overrides the time source used by the service.

func WithIDGenerator

func WithIDGenerator(generator IDGenerator) ServiceOption

WithIDGenerator overrides the ID generator.

func WithRegistry

func WithRegistry(reg *Registry) ServiceOption

WithRegistry injects a widget registry that provides built-in and host-defined widgets.

func WithShortcodeService added in v0.2.0

func WithShortcodeService(svc interfaces.ShortcodeService) ServiceOption

WithShortcodeService wires the shortcode renderer used for widget translations.

type Translation

type Translation = cmswidgets.Translation

type TranslationRepository

type TranslationRepository interface {
	Create(ctx context.Context, translation *Translation) (*Translation, error)
	GetByInstanceAndLocale(ctx context.Context, instanceID uuid.UUID, localeID uuid.UUID) (*Translation, error)
	ListByInstance(ctx context.Context, instanceID uuid.UUID) ([]*Translation, error)
	Update(ctx context.Context, translation *Translation) (*Translation, error)
	Delete(ctx context.Context, id uuid.UUID) error
}

TranslationRepository exposes persistence operations for widget translations.

func NewMemoryTranslationRepository

func NewMemoryTranslationRepository() TranslationRepository

NewMemoryTranslationRepository constructs an in-memory widget translation repository.

type UpdateInstanceInput

type UpdateInstanceInput = cmswidgets.UpdateInstanceInput

type UpdateTranslationInput

type UpdateTranslationInput = cmswidgets.UpdateTranslationInput

type VisibilityContext

type VisibilityContext = cmswidgets.VisibilityContext

Jump to

Keyboard shortcuts

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