1package in
2
3import (
4 "context"
5 "io"
6
7 "github.com/bnema/gordon/internal/domain"
8)
9
10// RegistryService defines the contract for container registry operations.
11type RegistryService interface {
12 // Manifest operations
13 GetManifest(ctx context.Context, name, reference string) (*domain.Manifest, error)
14 PutManifest(ctx context.Context, manifest *domain.Manifest) (digest string, err error)
15 DeleteManifest(ctx context.Context, name, reference string) error
16
17 // Blob operations
18 GetBlob(ctx context.Context, digest string) (io.ReadCloser, error)
19 GetBlobPath(ctx context.Context, name, digest string) (string, error)
20 PutBlob(ctx context.Context, digest string, data io.Reader, size int64) error
21 BlobExists(ctx context.Context, digest string) bool
22
23 // Upload operations
24 StartUpload(ctx context.Context, name string) (string, error)
25 AppendBlobChunk(ctx context.Context, name, uuid string, data io.Reader, contentLength, maxBlobSize int64) (int64, error)
26 FinishUpload(ctx context.Context, name, uuid, digest string) error
27 CancelUpload(ctx context.Context, name, uuid string) error
28
29 // Tag operations
30 ListTags(ctx context.Context, name string) ([]string, error)
31 ListRepositories(ctx context.Context) ([]string, error)
32}