Documentation
¶
Index ¶
- Variables
- type Authenticator
- type Message
- type MessageBuilder
- type MessageHandler
- type MockMessage
- type MockMessageBuilder
- type MockProjectRepository
- func (m *MockProjectRepository) CreateProject(ctx context.Context, projectBase *models.ProjectBase, ...) error
- func (m *MockProjectRepository) DeleteProject(ctx context.Context, projectUID string, revision uint64) error
- func (m *MockProjectRepository) GetProjectBase(ctx context.Context, projectUID string) (*models.ProjectBase, error)
- func (m *MockProjectRepository) GetProjectBaseWithRevision(ctx context.Context, projectUID string) (*models.ProjectBase, uint64, error)
- func (m *MockProjectRepository) GetProjectSettings(ctx context.Context, projectUID string) (*models.ProjectSettings, error)
- func (m *MockProjectRepository) GetProjectSettingsWithRevision(ctx context.Context, projectUID string) (*models.ProjectSettings, uint64, error)
- func (m *MockProjectRepository) GetProjectUIDFromSlug(ctx context.Context, projectSlug string) (string, error)
- func (m *MockProjectRepository) ListAllProjects(ctx context.Context) ([]*models.ProjectBase, []*models.ProjectSettings, error)
- func (m *MockProjectRepository) ListAllProjectsBase(ctx context.Context) ([]*models.ProjectBase, error)
- func (m *MockProjectRepository) ListAllProjectsSettings(ctx context.Context) ([]*models.ProjectSettings, error)
- func (m *MockProjectRepository) ProjectExists(ctx context.Context, projectUID string) (bool, error)
- func (m *MockProjectRepository) ProjectSlugExists(ctx context.Context, projectSlug string) (bool, error)
- func (m *MockProjectRepository) UpdateProjectBase(ctx context.Context, projectBase *models.ProjectBase, revision uint64) error
- func (m *MockProjectRepository) UpdateProjectSettings(ctx context.Context, projectSettings *models.ProjectSettings, revision uint64) error
- type ProjectRepository
Constants ¶
This section is empty.
Variables ¶
var ( // ErrProjectNotFound is returned when a project is not found. ErrProjectNotFound = errors.New("project not found") // ErrInvalidParentProject is returned when a parent project is invalid. ErrInvalidParentProject = errors.New("invalid parent project") // ErrProjectSlugExists is returned when a project slug already exists. ErrProjectSlugExists = errors.New("project slug already exists") // ErrInternal is returned when an internal error occurs. ErrInternal = errors.New("internal error") // ErrRevisionMismatch is returned when a revision mismatch occurs. ErrRevisionMismatch = errors.New("revision mismatch") // ErrUnmarshal is returned when an unmarshal error occurs. ErrUnmarshal = errors.New("unmarshal error") ErrServiceUnavailable = errors.New("service unavailable") // ErrValidationFailed is returned when a validation failed. ErrValidationFailed = errors.New("validation failed") )
Domain errors
Functions ¶
This section is empty.
Types ¶
type Authenticator ¶ added in v0.4.1
type Authenticator interface {
// ParsePrincipal extracts the principal (user identifier) from an authentication token.
// Returns the principal string and any error that occurred during parsing.
ParsePrincipal(ctx context.Context, token string, logger *slog.Logger) (string, error)
}
Authenticator defines the authentication interface for the domain layer. This interface allows the service layer to authenticate users without depending on specific authentication implementations (JWT, OAuth, etc.).
type MessageBuilder ¶
type MessageBuilder interface {
PublishIndexerMessage(ctx context.Context, subject string, message interface{}) error
PublishAccessMessage(ctx context.Context, subject string, message interface{}) error
}
MessageBuilder is a generic interface for publishing messages to NATS.
type MessageHandler ¶
MessageHandler defines how the service handles incoming messages
type MockMessage ¶
MockMessage implements Message for testing
func NewMockMessage ¶
func NewMockMessage(data []byte, subject string) *MockMessage
NewMockMessage creates a mock message for testing
func (*MockMessage) Data ¶
func (m *MockMessage) Data() []byte
func (*MockMessage) Respond ¶
func (m *MockMessage) Respond(data []byte) error
func (*MockMessage) Subject ¶
func (m *MockMessage) Subject() string
type MockMessageBuilder ¶
MockMessageBuilder implements MessageBuilder for testing
func (*MockMessageBuilder) PublishAccessMessage ¶ added in v0.4.1
func (m *MockMessageBuilder) PublishAccessMessage(ctx context.Context, subject string, message interface{}) error
func (*MockMessageBuilder) PublishIndexerMessage ¶ added in v0.4.1
func (m *MockMessageBuilder) PublishIndexerMessage(ctx context.Context, subject string, message interface{}) error
type MockProjectRepository ¶
MockProjectRepository implements ProjectRepository for testing
func (*MockProjectRepository) CreateProject ¶
func (m *MockProjectRepository) CreateProject(ctx context.Context, projectBase *models.ProjectBase, projectSettings *models.ProjectSettings) error
func (*MockProjectRepository) DeleteProject ¶
func (*MockProjectRepository) GetProjectBase ¶
func (m *MockProjectRepository) GetProjectBase(ctx context.Context, projectUID string) (*models.ProjectBase, error)
func (*MockProjectRepository) GetProjectBaseWithRevision ¶
func (m *MockProjectRepository) GetProjectBaseWithRevision(ctx context.Context, projectUID string) (*models.ProjectBase, uint64, error)
func (*MockProjectRepository) GetProjectSettings ¶
func (m *MockProjectRepository) GetProjectSettings(ctx context.Context, projectUID string) (*models.ProjectSettings, error)
func (*MockProjectRepository) GetProjectSettingsWithRevision ¶
func (m *MockProjectRepository) GetProjectSettingsWithRevision(ctx context.Context, projectUID string) (*models.ProjectSettings, uint64, error)
func (*MockProjectRepository) GetProjectUIDFromSlug ¶
func (*MockProjectRepository) ListAllProjects ¶
func (m *MockProjectRepository) ListAllProjects(ctx context.Context) ([]*models.ProjectBase, []*models.ProjectSettings, error)
func (*MockProjectRepository) ListAllProjectsBase ¶
func (m *MockProjectRepository) ListAllProjectsBase(ctx context.Context) ([]*models.ProjectBase, error)
func (*MockProjectRepository) ListAllProjectsSettings ¶
func (m *MockProjectRepository) ListAllProjectsSettings(ctx context.Context) ([]*models.ProjectSettings, error)
func (*MockProjectRepository) ProjectExists ¶
func (*MockProjectRepository) ProjectSlugExists ¶
func (*MockProjectRepository) UpdateProjectBase ¶
func (m *MockProjectRepository) UpdateProjectBase(ctx context.Context, projectBase *models.ProjectBase, revision uint64) error
func (*MockProjectRepository) UpdateProjectSettings ¶
func (m *MockProjectRepository) UpdateProjectSettings(ctx context.Context, projectSettings *models.ProjectSettings, revision uint64) error
type ProjectRepository ¶
type ProjectRepository interface {
// Project full operations
CreateProject(ctx context.Context, projectBase *models.ProjectBase, projectSettings *models.ProjectSettings) error
ProjectExists(ctx context.Context, projectUID string) (bool, error)
DeleteProject(ctx context.Context, projectUID string, revision uint64) error
// Project base operations
GetProjectBase(ctx context.Context, projectUID string) (*models.ProjectBase, error)
GetProjectBaseWithRevision(ctx context.Context, projectUID string) (*models.ProjectBase, uint64, error)
UpdateProjectBase(ctx context.Context, projectBase *models.ProjectBase, revision uint64) error
// Project settings operations
GetProjectSettings(ctx context.Context, projectUID string) (*models.ProjectSettings, error)
GetProjectSettingsWithRevision(ctx context.Context, projectUID string) (*models.ProjectSettings, uint64, error)
UpdateProjectSettings(ctx context.Context, projectSettings *models.ProjectSettings, revision uint64) error
// Slug operations
GetProjectUIDFromSlug(ctx context.Context, projectSlug string) (string, error)
ProjectSlugExists(ctx context.Context, projectSlug string) (bool, error)
// Bulk operations
ListAllProjects(ctx context.Context) ([]*models.ProjectBase, []*models.ProjectSettings, error)
ListAllProjectsBase(ctx context.Context) ([]*models.ProjectBase, error)
ListAllProjectsSettings(ctx context.Context) ([]*models.ProjectSettings, error)
}
ProjectRepository defines the interface for project storage operations. This interface can be implemented by different storage backends (NATS, PostgreSQL, etc.)