Documentation
¶
Index ¶
- Variables
- func NewDefinitionRepository(db *bun.DB) repository.Repository[*Definition]
- func NewInstanceRepository(db *bun.DB) repository.Repository[*Instance]
- func NewInstanceVersionRepository(db *bun.DB) repository.Repository[*InstanceVersion]
- func NewTranslationRepository(db *bun.DB) repository.Repository[*Translation]
- type AddTranslationInput
- type BlockVersionSnapshot
- type BlockVersionTranslationSnapshot
- type BunDefinitionRepository
- func (r *BunDefinitionRepository) Create(ctx context.Context, definition *Definition) (*Definition, error)
- func (r *BunDefinitionRepository) Delete(ctx context.Context, id uuid.UUID) error
- func (r *BunDefinitionRepository) GetByID(ctx context.Context, id uuid.UUID) (*Definition, error)
- func (r *BunDefinitionRepository) GetByName(ctx context.Context, name string) (*Definition, error)
- func (r *BunDefinitionRepository) List(ctx context.Context) ([]*Definition, error)
- func (r *BunDefinitionRepository) Update(ctx context.Context, definition *Definition) (*Definition, error)
- type BunInstanceRepository
- func (r *BunInstanceRepository) Create(ctx context.Context, instance *Instance) (*Instance, error)
- func (r *BunInstanceRepository) Delete(ctx context.Context, id uuid.UUID) error
- func (r *BunInstanceRepository) GetByID(ctx context.Context, id uuid.UUID) (*Instance, error)
- func (r *BunInstanceRepository) ListByDefinition(ctx context.Context, definitionID uuid.UUID) ([]*Instance, error)
- func (r *BunInstanceRepository) ListByPage(ctx context.Context, pageID uuid.UUID) ([]*Instance, error)
- func (r *BunInstanceRepository) ListGlobal(ctx context.Context) ([]*Instance, error)
- func (r *BunInstanceRepository) Update(ctx context.Context, instance *Instance) (*Instance, error)
- type BunInstanceVersionRepository
- func (r *BunInstanceVersionRepository) Create(ctx context.Context, version *InstanceVersion) (*InstanceVersion, error)
- func (r *BunInstanceVersionRepository) GetLatest(ctx context.Context, instanceID uuid.UUID) (*InstanceVersion, error)
- func (r *BunInstanceVersionRepository) GetVersion(ctx context.Context, instanceID uuid.UUID, number int) (*InstanceVersion, error)
- func (r *BunInstanceVersionRepository) ListByInstance(ctx context.Context, instanceID uuid.UUID) ([]*InstanceVersion, error)
- func (r *BunInstanceVersionRepository) Update(ctx context.Context, version *InstanceVersion) (*InstanceVersion, error)
- type BunTranslationRepository
- func (r *BunTranslationRepository) Create(ctx context.Context, translation *Translation) (*Translation, error)
- func (r *BunTranslationRepository) Delete(ctx context.Context, id uuid.UUID) error
- func (r *BunTranslationRepository) GetByInstanceAndLocale(ctx context.Context, instanceID uuid.UUID, localeID uuid.UUID) (*Translation, error)
- func (r *BunTranslationRepository) ListByInstance(ctx context.Context, instanceID uuid.UUID) ([]*Translation, error)
- func (r *BunTranslationRepository) Update(ctx context.Context, translation *Translation) (*Translation, error)
- type CreateInstanceDraftRequest
- type CreateInstanceInput
- type Definition
- type DefinitionRepository
- type DeleteDefinitionRequest
- type DeleteInstanceRequest
- type DeleteTranslationRequest
- type IDGenerator
- type Instance
- type InstanceRepository
- type InstanceVersion
- type InstanceVersionRepository
- type NotFoundError
- type PublishInstanceDraftRequest
- type RegisterDefinitionInput
- type Registry
- type RestoreInstanceVersionRequest
- type Service
- type ServiceOption
- func WithActivityEmitter(emitter *activity.Emitter) ServiceOption
- func WithClock(clock func() time.Time) ServiceOption
- func WithIDGenerator(generator IDGenerator) ServiceOption
- func WithInstanceVersionRepository(repo InstanceVersionRepository) ServiceOption
- func WithMediaService(mediaSvc media.Service) ServiceOption
- func WithRegistry(reg *Registry) ServiceOption
- func WithRequireTranslations(required bool) ServiceOption
- func WithShortcodeService(svc interfaces.ShortcodeService) ServiceOption
- func WithVersionRetentionLimit(limit int) ServiceOption
- func WithVersioningEnabled(enabled bool) ServiceOption
- type Translation
- type TranslationRepository
- type UpdateDefinitionInput
- type UpdateInstanceInput
- type UpdateTranslationInput
Constants ¶
This section is empty.
Variables ¶
var ( ErrDefinitionNameRequired = errors.New("blocks: definition name required") ErrDefinitionSchemaRequired = errors.New("blocks: definition schema required") ErrDefinitionExists = errors.New("blocks: definition already exists") ErrDefinitionIDRequired = errors.New("blocks: definition id required") ErrDefinitionInUse = errors.New("blocks: definition has active instances") ErrDefinitionSoftDeleteUnsupported = errors.New("blocks: soft delete not supported for definitions") ErrInstanceDefinitionRequired = errors.New("blocks: definition id required") ErrInstanceRegionRequired = errors.New("blocks: region required") ErrInstancePositionInvalid = errors.New("blocks: position cannot be negative") ErrInstanceUpdaterRequired = errors.New("blocks: updated_by is required") ErrInstanceSoftDeleteUnsupported = errors.New("blocks: soft delete not supported for instances") ErrTranslationContentRequired = errors.New("blocks: translation content required") ErrTranslationExists = errors.New("blocks: translation already exists for locale") ErrTranslationLocaleRequired = errors.New("blocks: translation locale required") ErrTranslationNotFound = errors.New("blocks: translation not found") ErrTranslationMinimum = errors.New("blocks: at least one translation is required") ErrInstanceIDRequired = errors.New("blocks: instance id required") ErrVersioningDisabled = errors.New("blocks: versioning feature disabled") ErrInstanceVersionRequired = errors.New("blocks: version identifier required") ErrInstanceVersionConflict = errors.New("blocks: base version mismatch") ErrInstanceVersionAlreadyPublished = errors.New("blocks: version already published") ErrInstanceVersionRetentionExceeded = errors.New("blocks: version retention limit reached") ErrMediaReferenceRequired = errors.New("blocks: media reference requires id or path") )
var BlockVersionSnapshotSchema = cmsblocks.BlockVersionSnapshotSchema
Functions ¶
func NewDefinitionRepository ¶
func NewDefinitionRepository(db *bun.DB) repository.Repository[*Definition]
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.
Types ¶
type AddTranslationInput ¶
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) GetByID ¶
func (r *BunDefinitionRepository) GetByID(ctx context.Context, id uuid.UUID) (*Definition, error)
func (*BunDefinitionRepository) GetByName ¶
func (r *BunDefinitionRepository) GetByName(ctx context.Context, name string) (*Definition, error)
func (*BunDefinitionRepository) List ¶
func (r *BunDefinitionRepository) List(ctx context.Context) ([]*Definition, error)
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 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) ListByDefinition ¶ added in v0.2.0
func (*BunInstanceRepository) ListByPage ¶
func (*BunInstanceRepository) ListGlobal ¶
func (r *BunInstanceRepository) ListGlobal(ctx context.Context) ([]*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 (r *BunInstanceVersionRepository) Create(ctx context.Context, version *InstanceVersion) (*InstanceVersion, error)
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 ¶
func (r *BunInstanceVersionRepository) Update(ctx context.Context, version *InstanceVersion) (*InstanceVersion, 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) 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 CreateInstanceDraftRequest ¶
type CreateInstanceDraftRequest struct {
InstanceID uuid.UUID
Snapshot BlockVersionSnapshot
CreatedBy uuid.UUID
UpdatedBy uuid.UUID
BaseVersion *int
}
CreateInstanceDraftRequest captures the payload required to create a block instance draft snapshot.
type 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)
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 block definitions.
func NewMemoryDefinitionRepository ¶
func NewMemoryDefinitionRepository() DefinitionRepository
NewMemoryDefinitionRepository constructs an "in memory" definition repository.
type DeleteDefinitionRequest ¶ added in v0.2.0
type DeleteInstanceRequest ¶ added in v0.2.0
type DeleteTranslationRequest ¶ added in v0.2.0
type IDGenerator ¶
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 NotFoundError ¶
NotFoundError is returned when a block resource cannot be located.
func (*NotFoundError) Error ¶
func (e *NotFoundError) Error() string
type PublishInstanceDraftRequest ¶
type PublishInstanceDraftRequest struct {
InstanceID uuid.UUID
Version int
PublishedBy uuid.UUID
PublishedAt *time.Time
}
PublishInstanceDraftRequest captures details required to publish a block instance draft.
type RegisterDefinitionInput ¶
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
func NewRegistry ¶
func NewRegistry() *Registry
func (*Registry) List ¶
func (r *Registry) List() []RegisterDefinitionInput
func (*Registry) Register ¶
func (r *Registry) Register(input RegisterDefinitionInput)
type RestoreInstanceVersionRequest ¶
RestoreInstanceVersionRequest captures the request to restore a previously recorded version.
type Service ¶
type Service interface {
RegisterDefinition(ctx context.Context, input RegisterDefinitionInput) (*Definition, error)
GetDefinition(ctx context.Context, id uuid.UUID) (*Definition, error)
ListDefinitions(ctx context.Context) ([]*Definition, error)
UpdateDefinition(ctx context.Context, input UpdateDefinitionInput) (*Definition, error)
DeleteDefinition(ctx context.Context, req DeleteDefinitionRequest) error
SyncRegistry(ctx context.Context) error
CreateInstance(ctx context.Context, input CreateInstanceInput) (*Instance, error)
ListPageInstances(ctx context.Context, pageID uuid.UUID) ([]*Instance, error)
ListGlobalInstances(ctx context.Context) ([]*Instance, error)
UpdateInstance(ctx context.Context, input UpdateInstanceInput) (*Instance, error)
DeleteInstance(ctx context.Context, req DeleteInstanceRequest) error
AddTranslation(ctx context.Context, input AddTranslationInput) (*Translation, error)
UpdateTranslation(ctx context.Context, input UpdateTranslationInput) (*Translation, error)
DeleteTranslation(ctx context.Context, req DeleteTranslationRequest) error
GetTranslation(ctx context.Context, instanceID uuid.UUID, localeID uuid.UUID) (*Translation, error)
CreateDraft(ctx context.Context, req CreateInstanceDraftRequest) (*InstanceVersion, error)
PublishDraft(ctx context.Context, req PublishInstanceDraftRequest) (*InstanceVersion, error)
ListVersions(ctx context.Context, instanceID uuid.UUID) ([]*InstanceVersion, error)
RestoreVersion(ctx context.Context, req RestoreInstanceVersionRequest) (*InstanceVersion, error)
}
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 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 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 WithShortcodeService ¶ added in v0.2.0
func WithShortcodeService(svc interfaces.ShortcodeService) ServiceOption
WithShortcodeService wires the shortcode renderer used to process translation content.
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.