Files
agentic-coding-workflow/internal/infra/storage/storage.go
T

28 lines
937 B
Go

// Package storage 抽象附件二进制存储。MVP 默认 LocalFS;后续可加 S3。
package storage
import (
"context"
"io"
)
// PutResult 由 Put 返回,便于调用方一次拿到 path + sha256 + 实际写入字节数。
type PutResult struct {
StoragePath string
SHA256 string
Size int64
}
// Storage 是后端无关的存储接口。
type Storage interface {
// Put 将 r 流式写入存储,返回相对 path、sha256 和实际字节数。
// key 由调用方指定(例如 "yyyy/mm/<uuid>.<ext>");实现层校验并放入 base 之下。
Put(ctx context.Context, key string, r io.Reader, mimeType string) (PutResult, error)
// Get 返回 storagePath 对应的 ReadCloser。调用方负责关闭。
Get(ctx context.Context, storagePath string) (io.ReadCloser, error)
// Delete 删除文件。文件不存在视为成功(幂等)。
Delete(ctx context.Context, storagePath string) error
}