package service import "context" type ContentFilter struct { Term string Category string ContentType string SortMode string Status string AuthorID string Mine bool User UserProfile Exclude string Limit int OnlyEvents bool OnlyMedia bool } type Store interface { Ping(ctx context.Context) error UserByLogin(ctx context.Context, login string) (UserProfile, bool, error) UserByID(ctx context.Context, id string) (UserProfile, bool, error) AddUser(ctx context.Context, login, name, password string) (UserProfile, error) UpdatePassword(ctx context.Context, userID, password string) error ListUsers(ctx context.Context) ([]UserProfile, error) ListContent(ctx context.Context, filter ContentFilter) ([]ContentItem, error) ContentByID(ctx context.Context, id string) (ContentItem, bool, error) AddContent(ctx context.Context, item ContentItem) (ContentItem, error) PatchContent(ctx context.Context, id string, patch ContentItem) (ContentItem, bool, error) DeleteContent(ctx context.Context, id string) (bool, error) ListCategories(ctx context.Context) ([]string, error) ListTags(ctx context.Context) ([]string, error) ListSpeakers(ctx context.Context) ([]Speaker, error) AddFile(ctx context.Context, file StoredFile) (StoredFile, error) FileByID(ctx context.Context, id string) (StoredFile, bool, error) UpsertSubscription(ctx context.Context, userID, target string) ([]string, error) ListNotifications(ctx context.Context) ([]NotificationItem, error) MarkNotificationRead(ctx context.Context, id string) (*NotificationItem, error) ListComments(ctx context.Context, contentID string) ([]CommentItem, error) AddComment(ctx context.Context, contentID string, user UserProfile, text string) (CommentItem, error) CountComments(ctx context.Context) (int, error) ListAudit(ctx context.Context) ([]AuditItem, error) }