You've already forked agentic-coding-workflow
28 lines
937 B
Go
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
|
|
}
|