domain

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Nov 13, 2025 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
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 is returned when a service is unavailable.
	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 Message

type Message interface {
	Subject() string
	Data() []byte
	Respond(data []byte) error
}

Message represents a domain message interface

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

type MessageHandler interface {
	HandleMessage(ctx context.Context, msg Message)
}

MessageHandler defines how the service handles incoming messages

type MockMessage

type MockMessage struct {
	mock.Mock
	// contains filtered or unexported fields
}

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

type MockMessageBuilder struct {
	mock.Mock
}

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

type MockProjectRepository struct {
	mock.Mock
}

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 (m *MockProjectRepository) DeleteProject(ctx context.Context, projectUID string, revision uint64) error

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 (m *MockProjectRepository) GetProjectUIDFromSlug(ctx context.Context, projectSlug string) (string, error)

func (*MockProjectRepository) ListAllProjects

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 (m *MockProjectRepository) ProjectExists(ctx context.Context, projectUID string) (bool, error)

func (*MockProjectRepository) ProjectSlugExists

func (m *MockProjectRepository) ProjectSlugExists(ctx context.Context, projectSlug string) (bool, error)

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

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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