blocks

package
v0.40.0 Latest Latest
Warning

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

Go to latest
Published: Mar 4, 2026 License: MIT Imports: 30 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrEmbeddedBlockTypeRequired      = errors.New("blocks: embedded block type required")
	ErrEmbeddedBlockDefinitionMissing = errors.New("blocks: embedded block definition missing")
	ErrEmbeddedBlocksBridgeUnwired    = errors.New("blocks: embedded blocks bridge is not configured")
)
View Source
var (
	ErrDefinitionNameRequired          = cmsblocks.ErrDefinitionNameRequired
	ErrDefinitionSlugRequired          = cmsblocks.ErrDefinitionSlugRequired
	ErrDefinitionSlugInvalid           = cmsblocks.ErrDefinitionSlugInvalid
	ErrDefinitionSlugExists            = cmsblocks.ErrDefinitionSlugExists
	ErrDefinitionSchemaRequired        = cmsblocks.ErrDefinitionSchemaRequired
	ErrDefinitionSchemaInvalid         = cmsblocks.ErrDefinitionSchemaInvalid
	ErrDefinitionSchemaVersionInvalid  = cmsblocks.ErrDefinitionSchemaVersionInvalid
	ErrDefinitionExists                = cmsblocks.ErrDefinitionExists
	ErrDefinitionIDRequired            = cmsblocks.ErrDefinitionIDRequired
	ErrDefinitionInUse                 = cmsblocks.ErrDefinitionInUse
	ErrDefinitionSoftDeleteUnsupported = cmsblocks.ErrDefinitionSoftDeleteUnsupported
	ErrDefinitionVersionRequired       = cmsblocks.ErrDefinitionVersionRequired
	ErrDefinitionVersionExists         = cmsblocks.ErrDefinitionVersionExists
	ErrDefinitionVersioningDisabled    = cmsblocks.ErrDefinitionVersioningDisabled

	ErrInstanceDefinitionRequired    = cmsblocks.ErrInstanceDefinitionRequired
	ErrInstanceRegionRequired        = cmsblocks.ErrInstanceRegionRequired
	ErrInstancePositionInvalid       = cmsblocks.ErrInstancePositionInvalid
	ErrInstanceUpdaterRequired       = cmsblocks.ErrInstanceUpdaterRequired
	ErrInstanceSoftDeleteUnsupported = cmsblocks.ErrInstanceSoftDeleteUnsupported

	ErrTranslationContentRequired       = cmsblocks.ErrTranslationContentRequired
	ErrTranslationExists                = cmsblocks.ErrTranslationExists
	ErrTranslationLocaleRequired        = cmsblocks.ErrTranslationLocaleRequired
	ErrTranslationSchemaInvalid         = cmsblocks.ErrTranslationSchemaInvalid
	ErrTranslationNotFound              = cmsblocks.ErrTranslationNotFound
	ErrTranslationMinimum               = cmsblocks.ErrTranslationMinimum
	ErrTranslationsDisabled             = cmsblocks.ErrTranslationsDisabled
	ErrInstanceIDRequired               = cmsblocks.ErrInstanceIDRequired
	ErrVersioningDisabled               = cmsblocks.ErrVersioningDisabled
	ErrInstanceVersionRequired          = cmsblocks.ErrInstanceVersionRequired
	ErrInstanceVersionConflict          = cmsblocks.ErrInstanceVersionConflict
	ErrInstanceVersionAlreadyPublished  = cmsblocks.ErrInstanceVersionAlreadyPublished
	ErrInstanceVersionRetentionExceeded = cmsblocks.ErrInstanceVersionRetentionExceeded
	ErrMediaReferenceRequired           = cmsblocks.ErrMediaReferenceRequired
	ErrBlockSchemaMigrationRequired     = cmsblocks.ErrBlockSchemaMigrationRequired
	ErrBlockSchemaValidationFailed      = cmsblocks.ErrBlockSchemaValidationFailed
)
View Source
var BlockVersionSnapshotSchema = cmsblocks.BlockVersionSnapshotSchema

Functions

func NewDefinitionRepository

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

func NewDefinitionVersionRepository added in v0.21.0

func NewDefinitionVersionRepository(db *bun.DB) repository.Repository[*DefinitionVersion]

NewDefinitionVersionRepository creates a repository for DefinitionVersion entities.

func NewInstanceRepository

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

NewInstanceRepository creates a repository for Instance entities.

func NewInstanceVersionRepository

func NewInstanceVersionRepository(db *bun.DB) repository.Repository[*InstanceVersion]

NewInstanceVersionRepository creates a repository for InstanceVersion entities.

func NewTranslationRepository

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

NewTranslationRepository creates a repository for Translation entities.

func ResolveDefinitionMigrationStatus added in v0.23.1

func ResolveDefinitionMigrationStatus(schema map[string]any, schemaVersion string) string

ResolveDefinitionMigrationStatus determines the current migration status for a schema.

Types

type AddTranslationInput

type AddTranslationInput = cmsblocks.AddTranslationInput

type BackfillOptions added in v0.21.0

type BackfillOptions struct {
	ContentIDs []uuid.UUID
	Force      bool
	DryRun     bool
}

BackfillOptions controls embedded block backfill behaviour.

type BackfillReport added in v0.21.0

type BackfillReport struct {
	ContentCount int
	Errors       []error
}

BackfillReport captures backfill results.

type BlockVersionSnapshot

type BlockVersionSnapshot = cmsblocks.BlockVersionSnapshot

type BlockVersionTranslationSnapshot

type BlockVersionTranslationSnapshot = cmsblocks.BlockVersionTranslationSnapshot

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 services.

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) GetBySlug added in v0.23.1

func (r *BunDefinitionRepository) GetBySlug(ctx context.Context, slug string, env ...string) (*Definition, error)

func (*BunDefinitionRepository) List

func (r *BunDefinitionRepository) List(ctx context.Context, env ...string) ([]*Definition, error)

func (*BunDefinitionRepository) Update added in v0.2.0

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

type BunDefinitionVersionRepository added in v0.21.0

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

BunDefinitionVersionRepository implements DefinitionVersionRepository with optional caching.

func NewBunDefinitionVersionRepository added in v0.21.0

func NewBunDefinitionVersionRepository(db *bun.DB) *BunDefinitionVersionRepository

NewBunDefinitionVersionRepository creates a definition version repository without caching.

func NewBunDefinitionVersionRepositoryWithCache added in v0.21.0

func NewBunDefinitionVersionRepositoryWithCache(db *bun.DB, cacheService cache.CacheService, serializer cache.KeySerializer) *BunDefinitionVersionRepository

NewBunDefinitionVersionRepositoryWithCache creates a definition version repository with caching services.

func (*BunDefinitionVersionRepository) Create added in v0.21.0

func (*BunDefinitionVersionRepository) GetByDefinitionAndVersion added in v0.21.0

func (r *BunDefinitionVersionRepository) GetByDefinitionAndVersion(ctx context.Context, definitionID uuid.UUID, version string) (*DefinitionVersion, error)

func (*BunDefinitionVersionRepository) GetByID added in v0.21.0

func (*BunDefinitionVersionRepository) ListByDefinition added in v0.21.0

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

func (*BunDefinitionVersionRepository) Update added in v0.21.0

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 a block instance repository without caching.

func NewBunInstanceRepositoryWithCache

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

NewBunInstanceRepositoryWithCache creates a block instance repository with caching services.

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) ListByDefinition added in v0.2.0

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

func (*BunInstanceRepository) ListByPage

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

func (*BunInstanceRepository) ListGlobal

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

func (*BunInstanceRepository) Update

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

type BunInstanceVersionRepository

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

BunInstanceVersionRepository implements InstanceVersionRepository with optional caching.

func NewBunInstanceVersionRepository

func NewBunInstanceVersionRepository(db *bun.DB) *BunInstanceVersionRepository

NewBunInstanceVersionRepository creates a block instance version repository without caching.

func NewBunInstanceVersionRepositoryWithCache

func NewBunInstanceVersionRepositoryWithCache(db *bun.DB, cacheService cache.CacheService, serializer cache.KeySerializer) *BunInstanceVersionRepository

NewBunInstanceVersionRepositoryWithCache creates a block instance version repository with caching services.

func (*BunInstanceVersionRepository) Create

func (*BunInstanceVersionRepository) GetLatest

func (r *BunInstanceVersionRepository) GetLatest(ctx context.Context, instanceID uuid.UUID) (*InstanceVersion, error)

func (*BunInstanceVersionRepository) GetVersion

func (r *BunInstanceVersionRepository) GetVersion(ctx context.Context, instanceID uuid.UUID, number int) (*InstanceVersion, error)

func (*BunInstanceVersionRepository) ListByInstance

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

func (*BunInstanceVersionRepository) Update

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 added in v0.2.0

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

type ConflictReportOptions added in v0.21.0

type ConflictReportOptions struct {
	ContentIDs []uuid.UUID
	Limit      int
}

ConflictReportOptions scopes conflict queries.

type ContentPageResolver added in v0.21.0

type ContentPageResolver interface {
	PageIDsForContent(ctx context.Context, contentID uuid.UUID) ([]uuid.UUID, error)
}

ContentPageResolver maps content entries to page identifiers.

type CreateDefinitionVersionInput added in v0.21.0

type CreateDefinitionVersionInput = cmsblocks.CreateDefinitionVersionInput

type CreateInstanceDraftRequest

type CreateInstanceDraftRequest = cmsblocks.CreateInstanceDraftRequest

type CreateInstanceInput

type CreateInstanceInput = cmsblocks.CreateInstanceInput

type Definition

type Definition = cmsblocks.Definition

type DefinitionRepository

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

DefinitionRepository exposes persistence operations for block definitions.

func NewMemoryDefinitionRepository

func NewMemoryDefinitionRepository() DefinitionRepository

NewMemoryDefinitionRepository constructs an "in memory" definition repository.

type DefinitionVersion added in v0.21.0

type DefinitionVersion = cmsblocks.DefinitionVersion

type DefinitionVersionRepository added in v0.21.0

type DefinitionVersionRepository interface {
	Create(ctx context.Context, version *DefinitionVersion) (*DefinitionVersion, error)
	GetByID(ctx context.Context, id uuid.UUID) (*DefinitionVersion, error)
	GetByDefinitionAndVersion(ctx context.Context, definitionID uuid.UUID, version string) (*DefinitionVersion, error)
	ListByDefinition(ctx context.Context, definitionID uuid.UUID) ([]*DefinitionVersion, error)
	Update(ctx context.Context, version *DefinitionVersion) (*DefinitionVersion, error)
}

DefinitionVersionRepository exposes persistence operations for block definition versions.

func NewMemoryDefinitionVersionRepository added in v0.21.0

func NewMemoryDefinitionVersionRepository() DefinitionVersionRepository

NewMemoryDefinitionVersionRepository constructs an "in memory" definition version repository.

type DeleteDefinitionRequest added in v0.2.0

type DeleteDefinitionRequest = cmsblocks.DeleteDefinitionRequest

type DeleteInstanceRequest added in v0.2.0

type DeleteInstanceRequest = cmsblocks.DeleteInstanceRequest

type DeleteTranslationRequest added in v0.2.0

type DeleteTranslationRequest = cmsblocks.DeleteTranslationRequest

type EmbeddedBlockBridge added in v0.21.0

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

EmbeddedBlockBridge coordinates embedded block payloads with legacy block instances.

func NewEmbeddedBlockBridge added in v0.21.0

func NewEmbeddedBlockBridge(blocksSvc Service, locales content.LocaleRepository, resolver ContentPageResolver, opts ...EmbeddedBlockBridgeOption) *EmbeddedBlockBridge

NewEmbeddedBlockBridge constructs a bridge for embedded blocks.

func (*EmbeddedBlockBridge) BackfillFromLegacy added in v0.21.0

func (b *EmbeddedBlockBridge) BackfillFromLegacy(ctx context.Context, opts BackfillOptions) (BackfillReport, error)

BackfillFromLegacy writes embedded blocks into stored content translations.

func (*EmbeddedBlockBridge) InstancesFromEmbeddedContent added in v0.21.0

func (b *EmbeddedBlockBridge) InstancesFromEmbeddedContent(ctx context.Context, contentID uuid.UUID, translations []*content.ContentTranslation) ([]*Instance, error)

InstancesFromEmbeddedContent builds in-memory block instances from embedded payloads.

func (*EmbeddedBlockBridge) ListConflicts added in v0.21.0

ListConflicts returns embedded-vs-legacy conflict reports.

func (*EmbeddedBlockBridge) MergeLegacyBlocks added in v0.21.0

func (b *EmbeddedBlockBridge) MergeLegacyBlocks(ctx context.Context, record *content.Content) error

MergeLegacyBlocks populates embedded block payloads when missing.

func (*EmbeddedBlockBridge) MigrateEmbeddedBlocks added in v0.21.0

func (b *EmbeddedBlockBridge) MigrateEmbeddedBlocks(ctx context.Context, locale string, blocks []map[string]any) ([]map[string]any, error)

MigrateEmbeddedBlocks upgrades embedded blocks to the latest schema version.

func (*EmbeddedBlockBridge) PreviewInstancesFromEmbeddedContent added in v0.21.0

func (b *EmbeddedBlockBridge) PreviewInstancesFromEmbeddedContent(ctx context.Context, contentID uuid.UUID, translations []*content.ContentTranslation) ([]*Instance, error)

PreviewInstancesFromEmbeddedContent resolves embedded blocks with in-memory migrations.

func (*EmbeddedBlockBridge) SyncEmbeddedBlocks added in v0.21.0

func (b *EmbeddedBlockBridge) SyncEmbeddedBlocks(ctx context.Context, contentID uuid.UUID, translations []content.ContentTranslationInput, actor uuid.UUID) error

SyncEmbeddedBlocks projects embedded blocks into legacy block instances (dual-write).

func (*EmbeddedBlockBridge) ValidateBlockAvailability added in v0.21.0

func (b *EmbeddedBlockBridge) ValidateBlockAvailability(_ context.Context, contentType string, availability cmsschema.BlockAvailability, blocks []map[string]any) error

ValidateBlockAvailability enforces content-type block availability rules.

func (*EmbeddedBlockBridge) ValidateEmbeddedBlocks added in v0.21.0

func (b *EmbeddedBlockBridge) ValidateEmbeddedBlocks(ctx context.Context, locale string, blocks []map[string]any, mode content.EmbeddedBlockValidationMode) error

ValidateEmbeddedBlocks validates embedded blocks against their schemas.

type EmbeddedBlockBridgeOption added in v0.21.0

type EmbeddedBlockBridgeOption func(*EmbeddedBlockBridge)

EmbeddedBlockBridgeOption customises the embedded blocks bridge.

func WithEmbeddedBlocksClock added in v0.21.0

func WithEmbeddedBlocksClock(clock func() time.Time) EmbeddedBlockBridgeOption

WithEmbeddedBlocksClock overrides the clock used for synthetic timestamps.

func WithEmbeddedBlocksContentRepository added in v0.21.0

func WithEmbeddedBlocksContentRepository(repo content.ContentRepository) EmbeddedBlockBridgeOption

WithEmbeddedBlocksContentRepository wires a content repository for backfill/reporting.

func WithEmbeddedBlocksDefaultLocale added in v0.21.0

func WithEmbeddedBlocksDefaultLocale(locale string) EmbeddedBlockBridgeOption

WithEmbeddedBlocksDefaultLocale overrides the locale used as base for structure.

func WithEmbeddedBlocksDefaultRegion added in v0.21.0

func WithEmbeddedBlocksDefaultRegion(region string) EmbeddedBlockBridgeOption

WithEmbeddedBlocksDefaultRegion overrides the region used for embedded blocks.

func WithEmbeddedBlocksLogger added in v0.21.0

func WithEmbeddedBlocksLogger(logger interfaces.Logger) EmbeddedBlockBridgeOption

WithEmbeddedBlocksLogger overrides the logger used by the bridge.

func WithEmbeddedBlocksTranslationReader added in v0.21.0

func WithEmbeddedBlocksTranslationReader(reader content.ContentTranslationReader) EmbeddedBlockBridgeOption

WithEmbeddedBlocksTranslationReader overrides the translation reader used for hydration.

type IDGenerator

type IDGenerator func() uuid.UUID

type Instance

type Instance = cmsblocks.Instance

type InstanceRepository

type InstanceRepository interface {
	Create(ctx context.Context, instance *Instance) (*Instance, error)
	GetByID(ctx context.Context, id uuid.UUID) (*Instance, error)
	ListByPage(ctx context.Context, pageID uuid.UUID) ([]*Instance, error)
	ListGlobal(ctx context.Context) ([]*Instance, error)
	ListByDefinition(ctx context.Context, definitionID uuid.UUID) ([]*Instance, error)
	Update(ctx context.Context, instance *Instance) (*Instance, error)
	Delete(ctx context.Context, id uuid.UUID) error
}

InstanceRepository exposes persistence operations for block instances.

func NewMemoryInstanceRepository

func NewMemoryInstanceRepository() InstanceRepository

NewMemoryInstanceRepository constructs an "in memory" instance repository.

type InstanceVersion

type InstanceVersion = cmsblocks.InstanceVersion

type InstanceVersionRepository

type InstanceVersionRepository interface {
	Create(ctx context.Context, version *InstanceVersion) (*InstanceVersion, error)
	ListByInstance(ctx context.Context, instanceID uuid.UUID) ([]*InstanceVersion, error)
	GetVersion(ctx context.Context, instanceID uuid.UUID, number int) (*InstanceVersion, error)
	GetLatest(ctx context.Context, instanceID uuid.UUID) (*InstanceVersion, error)
	Update(ctx context.Context, version *InstanceVersion) (*InstanceVersion, error)
}

InstanceVersionRepository exposes persistence operations for block instance versions.

func NewMemoryInstanceVersionRepository

func NewMemoryInstanceVersionRepository() InstanceVersionRepository

NewMemoryInstanceVersionRepository constructs an "in memory" instance version repository.

type MigrationFunc added in v0.21.0

type MigrationFunc func(map[string]any) (map[string]any, error)

MigrationFunc transforms a block payload between schema versions.

type MigrationStep added in v0.21.0

type MigrationStep struct {
	From  string
	To    string
	Apply MigrationFunc
}

MigrationStep describes a single block schema migration hop.

type Migrator added in v0.21.0

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

Migrator applies ordered migration steps for block schemas.

func NewMigrator added in v0.21.0

func NewMigrator() *Migrator

NewMigrator constructs an empty block schema migrator.

func (*Migrator) Migrate added in v0.21.0

func (m *Migrator) Migrate(slug, from, to string, payload map[string]any) (map[string]any, error)

Migrate applies migration steps until the target version is reached.

func (*Migrator) Register added in v0.21.0

func (m *Migrator) Register(slug, from, to string, fn MigrationFunc) error

Register adds a migration step for a block definition.

type NotFoundError

type NotFoundError struct {
	Resource string
	Key      string
}

NotFoundError is returned when a block resource cannot be located.

func (*NotFoundError) Error

func (e *NotFoundError) Error() string

type PublishInstanceDraftRequest

type PublishInstanceDraftRequest = cmsblocks.PublishInstanceDraftRequest

type RegisterDefinitionInput

type RegisterDefinitionInput = cmsblocks.RegisterDefinitionInput

type Registry

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

Registry stores versioned block schema definitions and migrations.

func NewRegistry

func NewRegistry() *Registry

NewRegistry constructs an empty block schema registry.

func (*Registry) Latest added in v0.21.0

func (r *Registry) Latest(name string) (RegisterDefinitionInput, bool)

Latest returns the latest registered schema definition for a name.

func (*Registry) List

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

List returns the latest version of each registered definition.

func (*Registry) ListAllVersions added in v0.21.0

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

ListAllVersions returns every registered definition version.

func (*Registry) ListVersions added in v0.21.0

func (r *Registry) ListVersions(name string) []RegisterDefinitionInput

ListVersions returns all versions registered for a definition name.

func (*Registry) Migrate added in v0.21.0

func (r *Registry) Migrate(name, from, to string, payload map[string]any) (map[string]any, error)

Migrate applies registered migration steps.

func (*Registry) Migrator added in v0.21.0

func (r *Registry) Migrator() *Migrator

Migrator exposes the underlying migration runner.

func (*Registry) Register

func (r *Registry) Register(input RegisterDefinitionInput)

Register records a versioned schema definition. The latest version is exposed via List().

func (*Registry) RegisterMigration added in v0.21.0

func (r *Registry) RegisterMigration(name, from, to string, fn MigrationFunc) error

RegisterMigration adds a migration step for a block definition.

type RestoreInstanceVersionRequest

type RestoreInstanceVersionRequest = cmsblocks.RestoreInstanceVersionRequest

type Service

type Service = cmsblocks.Service

func NewService

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

type ServiceOption

type ServiceOption func(*service)

func WithActivityEmitter added in v0.5.0

func WithActivityEmitter(emitter *activity.Emitter) ServiceOption

WithActivityEmitter wires the activity emitter used for activity records.

func WithClock

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

func WithDefaultEnvironmentKey added in v0.23.1

func WithDefaultEnvironmentKey(key string) ServiceOption

WithDefaultEnvironmentKey overrides the default environment key.

func WithDefinitionSlugNormalizer added in v0.23.1

func WithDefinitionSlugNormalizer(normalizer slug.Normalizer) ServiceOption

WithDefinitionSlugNormalizer overrides the slug normalizer used by block definitions.

func WithDefinitionVersionRepository added in v0.21.0

func WithDefinitionVersionRepository(repo DefinitionVersionRepository) ServiceOption

WithDefinitionVersionRepository wires the repository used for block definition version persistence.

func WithEnvironmentService added in v0.23.1

func WithEnvironmentService(envSvc cmsenv.Service) ServiceOption

WithEnvironmentService wires the environment service for env resolution.

func WithIDGenerator

func WithIDGenerator(generator IDGenerator) ServiceOption

func WithInstanceVersionRepository

func WithInstanceVersionRepository(repo InstanceVersionRepository) ServiceOption

WithInstanceVersionRepository wires the repository used for instance version persistence.

func WithMediaService

func WithMediaService(mediaSvc media.Service) ServiceOption

WithMediaService wires the media resolution helper used to enrich translations.

func WithRegistry

func WithRegistry(reg *Registry) ServiceOption

func WithRequireActiveEnvironment added in v0.23.1

func WithRequireActiveEnvironment(required bool) ServiceOption

WithRequireActiveEnvironment blocks operations on inactive environments.

func WithRequireExplicitEnvironment added in v0.23.1

func WithRequireExplicitEnvironment(required bool) ServiceOption

WithRequireExplicitEnvironment enforces explicit environment selection.

func WithRequireTranslations added in v0.2.0

func WithRequireTranslations(required bool) ServiceOption

WithRequireTranslations toggles whether at least one translation must remain attached to an instance.

func WithSchemaMigrator added in v0.21.0

func WithSchemaMigrator(migrator *Migrator) ServiceOption

WithSchemaMigrator wires the migration runner used for block schema upgrades.

func WithShortcodeService added in v0.2.0

func WithShortcodeService(svc interfaces.ShortcodeService) ServiceOption

WithShortcodeService wires the shortcode renderer used to process translation content.

func WithTranslationState added in v0.20.0

func WithTranslationState(state *translationconfig.State) ServiceOption

WithTranslationState wires a shared, runtime-configurable translation state.

func WithTranslationsEnabled added in v0.20.0

func WithTranslationsEnabled(enabled bool) ServiceOption

WithTranslationsEnabled toggles translation handling entirely.

func WithVersionRetentionLimit

func WithVersionRetentionLimit(limit int) ServiceOption

WithVersionRetentionLimit constrains how many versions are retained per instance.

func WithVersioningEnabled

func WithVersioningEnabled(enabled bool) ServiceOption

WithVersioningEnabled toggles versioning workflows for block instances.

type Translation

type Translation = cmsblocks.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 block translations.

func NewMemoryTranslationRepository

func NewMemoryTranslationRepository() TranslationRepository

NewMemoryTranslationRepository constructs an "in memory" translation repository.

type UpdateDefinitionInput added in v0.2.0

type UpdateDefinitionInput = cmsblocks.UpdateDefinitionInput

type UpdateInstanceInput added in v0.2.0

type UpdateInstanceInput = cmsblocks.UpdateInstanceInput

type UpdateTranslationInput added in v0.2.0

type UpdateTranslationInput = cmsblocks.UpdateTranslationInput

Jump to

Keyboard shortcuts

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