cms

package
v1.1.13 Latest Latest
Warning

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

Go to latest
Published: Feb 18, 2026 License: AGPL-3.0 Imports: 22 Imported by: 0

Documentation

Overview

Package cms provides services for Content Management System functionality

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ArticleService

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

ArticleService handles business logic for articles

func NewArticleService

func NewArticleService(
	articleRepo articleServiceRepository,
	actorRepo actorRepository,
	seriesRepo cmsSeriesArticleCountUpdater,
	categoryRepo cmsCategoryArticleCountUpdater,
	revisionService articleRevisionCreator,
	federation FederationService,
	logger *zap.Logger,
) *ArticleService

NewArticleService creates a new ArticleService

func (*ArticleService) CreateArticle

func (s *ArticleService) CreateArticle(ctx context.Context, article *models.Article) error

CreateArticle creates a new article

func (*ArticleService) DeleteArticle

func (s *ArticleService) DeleteArticle(ctx context.Context, article *models.Article) error

DeleteArticle deletes an article and federates a Delete activity best-effort.

func (*ArticleService) GetArticle

func (s *ArticleService) GetArticle(ctx context.Context, articleID string) (*models.Article, error)

GetArticle retrieves an article by ID.

func (*ArticleService) GetArticleBySlug

func (s *ArticleService) GetArticleBySlug(ctx context.Context, slug string) (*models.Article, error)

GetArticleBySlug retrieves an article by its slug index (no legacy fallback).

func (*ArticleService) UpdateArticle

func (s *ArticleService) UpdateArticle(ctx context.Context, article *models.Article) error

UpdateArticle updates an existing article and records a revision if configured.

type CategoryService

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

CategoryService handles business logic for categories

func NewCategoryService

func NewCategoryService(categoryRepo categoryRepository, logger *zap.Logger) *CategoryService

NewCategoryService creates a new CategoryService

func (*CategoryService) CreateCategory

func (s *CategoryService) CreateCategory(ctx context.Context, category *models.Category) error

CreateCategory creates a new category

func (*CategoryService) DeleteCategory

func (s *CategoryService) DeleteCategory(ctx context.Context, id string) error

DeleteCategory deletes a category

func (*CategoryService) GetCategory

func (s *CategoryService) GetCategory(ctx context.Context, id string) (*models.Category, error)

GetCategory retrieves a category by ID

func (*CategoryService) ListCategories

func (s *CategoryService) ListCategories(ctx context.Context, parentID *string, limit int) ([]*models.Category, error)

ListCategories lists categories

func (*CategoryService) UpdateCategory

func (s *CategoryService) UpdateCategory(ctx context.Context, category *models.Category) error

UpdateCategory updates an existing category

type DraftService

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

DraftService handles business logic for drafts

func NewDraftService

func NewDraftService(draftRepo draftRepository, articleService *ArticleService, domain string, schedulingEnabled bool, logger *zap.Logger) *DraftService

NewDraftService creates a new DraftService

func (*DraftService) Autosave

func (s *DraftService) Autosave(ctx context.Context, draft *models.Draft) error

Autosave updates the draft content without changing its primary status

func (*DraftService) CancelScheduledDraft

func (s *DraftService) CancelScheduledDraft(ctx context.Context, authorID, draftID string) error

CancelScheduledDraft cancels a scheduled draft publish.

func (*DraftService) CreateDraft

func (s *DraftService) CreateDraft(ctx context.Context, draft *models.Draft) error

CreateDraft creates a new draft

func (*DraftService) DeleteDraft

func (s *DraftService) DeleteDraft(ctx context.Context, authorID, draftID string) error

DeleteDraft deletes a draft

func (*DraftService) GetDraft

func (s *DraftService) GetDraft(ctx context.Context, authorID, draftID string) (*models.Draft, error)

GetDraft retrieves a draft

func (*DraftService) PublishDraft

func (s *DraftService) PublishDraft(ctx context.Context, authorID, draftID string) (*models.Article, error)

PublishDraft converts a draft into an article

func (*DraftService) ScheduleDraft

func (s *DraftService) ScheduleDraft(ctx context.Context, authorID, draftID string, scheduledAt time.Time) error

ScheduleDraft schedules a draft for publishing

func (*DraftService) UpdateDraft

func (s *DraftService) UpdateDraft(ctx context.Context, draft *models.Draft) error

UpdateDraft updates an existing draft

type FederationService

type FederationService interface {
	DeliverToFollowers(ctx context.Context, activity *activitypub.Activity, actor *activitypub.Actor) error
}

FederationService interface to avoid circular imports with pkg/services

type PublicationService

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

PublicationService handles business logic for publications

func NewPublicationService

func NewPublicationService(pubRepo publicationRepository, pubMemberRepo publicationMemberRepository, logger *zap.Logger) *PublicationService

NewPublicationService creates a new PublicationService

func (*PublicationService) AddMember

func (s *PublicationService) AddMember(ctx context.Context, member *models.PublicationMember) error

AddMember adds a member to a publication

func (*PublicationService) CreatePublication

func (s *PublicationService) CreatePublication(ctx context.Context, publication *models.Publication) error

CreatePublication creates a new publication

func (*PublicationService) DeletePublication

func (s *PublicationService) DeletePublication(ctx context.Context, id string) error

DeletePublication deletes a publication

func (*PublicationService) GetMember

func (s *PublicationService) GetMember(ctx context.Context, publicationID, userID string) (*models.PublicationMember, error)

GetMember retrieves a specific member

func (*PublicationService) GetPublication

func (s *PublicationService) GetPublication(ctx context.Context, id string) (*models.Publication, error)

GetPublication retrieves a publication by ID

func (*PublicationService) ListMembers

func (s *PublicationService) ListMembers(ctx context.Context, publicationID string) ([]*models.PublicationMember, error)

ListMembers lists all members of a publication

func (*PublicationService) RemoveMember

func (s *PublicationService) RemoveMember(ctx context.Context, publicationID, userID string) error

RemoveMember removes a member from a publication

func (*PublicationService) UpdateMemberRole

func (s *PublicationService) UpdateMemberRole(ctx context.Context, publicationID, userID, role string) error

UpdateMemberRole updates a member's role

func (*PublicationService) UpdatePublication

func (s *PublicationService) UpdatePublication(ctx context.Context, publication *models.Publication) error

UpdatePublication updates an existing publication

type RevisionService

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

RevisionService handles business logic for content revisions

func NewRevisionService

func NewRevisionService(
	revisionRepo revisionRepository,
	articleRepo articleRepositoryWithDB,
	seriesRepo cmsSeriesArticleCountUpdater,
	categoryRepo cmsCategoryArticleCountUpdater,
	maxRevisionsPerObject int,
	logger *zap.Logger,
) *RevisionService

NewRevisionService creates a new RevisionService

func (*RevisionService) CreateRevision

func (s *RevisionService) CreateRevision(ctx context.Context, article *models.Article) (*models.Revision, error)

CreateRevision creates a new revision from an article state

func (*RevisionService) GetRevision

func (s *RevisionService) GetRevision(ctx context.Context, objectID string, version int) (*models.Revision, error)

GetRevision retrieves a specific revision

func (*RevisionService) ListRevisions

func (s *RevisionService) ListRevisions(ctx context.Context, objectID string, limit int) ([]*models.Revision, error)

ListRevisions lists revisions for a given article

func (*RevisionService) RestoreRevision

func (s *RevisionService) RestoreRevision(ctx context.Context, objectID string, version int) (*models.Article, error)

RestoreRevision reverts an article to a specific revision

type SeriesService

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

SeriesService handles business logic for series

func NewSeriesService

func NewSeriesService(seriesRepo seriesRepository, articleRepo articleSeriesRepository, logger *zap.Logger) *SeriesService

NewSeriesService creates a new SeriesService

func (*SeriesService) AddArticleToSeries

func (s *SeriesService) AddArticleToSeries(ctx context.Context, articleID string, seriesID string, order int) error

AddArticleToSeries adds an article to a series

func (*SeriesService) CreateSeries

func (s *SeriesService) CreateSeries(ctx context.Context, series *models.Series) error

CreateSeries creates a new series

func (*SeriesService) DeleteSeries

func (s *SeriesService) DeleteSeries(ctx context.Context, authorID, seriesID string) error

DeleteSeries deletes a series

func (*SeriesService) GetSeries

func (s *SeriesService) GetSeries(ctx context.Context, authorID, seriesID string) (*models.Series, error)

GetSeries retrieves a series by author ID and series ID

func (*SeriesService) ListSeriesByAuthor

func (s *SeriesService) ListSeriesByAuthor(ctx context.Context, authorID string, limit int) ([]*models.Series, error)

ListSeriesByAuthor lists series for an author

func (*SeriesService) RemoveArticleFromSeries

func (s *SeriesService) RemoveArticleFromSeries(ctx context.Context, articleID string) error

RemoveArticleFromSeries removes an article from a series

func (*SeriesService) ReorderArticles

func (s *SeriesService) ReorderArticles(ctx context.Context, seriesID string, articleOrders map[string]int) error

ReorderArticles updates the order of articles in a series

func (*SeriesService) UpdateSeries

func (s *SeriesService) UpdateSeries(ctx context.Context, series *models.Series) error

UpdateSeries updates an existing series

Jump to

Keyboard shortcuts

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