38 lines
1.3 KiB
Go
38 lines
1.3 KiB
Go
// Package port defines interfaces (ports) for external dependencies.
|
|
// These interfaces define the contracts between the application core and
|
|
// infrastructure adapters, enabling testability and flexibility.
|
|
package port
|
|
|
|
import (
|
|
"context"
|
|
|
|
"git.threesix.ai/jordan/foundary-test-1770625554/services/studio-api/internal/domain"
|
|
)
|
|
|
|
// ExampleRepository defines the interface for example persistence operations.
|
|
// Implementations may use databases, in-memory storage, or external services.
|
|
type ExampleRepository interface {
|
|
// List returns all examples.
|
|
List(ctx context.Context) ([]domain.Example, error)
|
|
|
|
// Get returns an example by ID.
|
|
// Returns domain.ErrExampleNotFound if not found.
|
|
Get(ctx context.Context, id domain.ExampleID) (*domain.Example, error)
|
|
|
|
// Create stores a new example.
|
|
// The example must have a valid ID set.
|
|
Create(ctx context.Context, example *domain.Example) error
|
|
|
|
// Update modifies an existing example.
|
|
// Returns domain.ErrExampleNotFound if not found.
|
|
Update(ctx context.Context, example *domain.Example) error
|
|
|
|
// Delete removes an example by ID.
|
|
// Returns domain.ErrExampleNotFound if not found.
|
|
Delete(ctx context.Context, id domain.ExampleID) error
|
|
|
|
// ExistsByName checks if an example with the given name exists.
|
|
// Used for duplicate detection.
|
|
ExistsByName(ctx context.Context, name string) (bool, error)
|
|
}
|