package store import ( "context" "telesrv/internal/domain" ) // MediaStore 持久化媒体元数据:上传分片、blob 索引、文档/照片注册表、 // 贴纸集、可用 reaction、头像历史。blob 字节本身由 blob backend 按 object_key 读写, // 本接口只管 file_blobs 索引行。 type MediaStore interface { // 上传分片(transient:组装成 blob 后即清理)。 SaveFilePart(ctx context.Context, part domain.UploadPart) error LoadFileParts(ctx context.Context, ownerUserID, fileID int64) ([]domain.UploadPart, error) DeleteFileParts(ctx context.Context, ownerUserID, fileID int64) error // blob 索引。 PutFileBlob(ctx context.Context, blob domain.FileBlob) error GetFileBlob(ctx context.Context, locationKey string) (domain.FileBlob, bool, error) // 文档 / 照片注册表。 PutDocument(ctx context.Context, doc domain.Document) error GetDocument(ctx context.Context, id int64) (domain.Document, bool, error) GetDocuments(ctx context.Context, ids []int64) ([]domain.Document, error) PutPhoto(ctx context.Context, photo domain.Photo) error GetPhoto(ctx context.Context, id int64) (domain.Photo, bool, error) // 贴纸集 / 可用 reaction。 PutStickerSet(ctx context.Context, set domain.StickerSet) error GetStickerSetByID(ctx context.Context, id int64) (domain.StickerSet, bool, error) GetStickerSetByShortName(ctx context.Context, shortName string) (domain.StickerSet, bool, error) GetStickerSetBySystemKey(ctx context.Context, systemKey string) (domain.StickerSet, bool, error) ListStickerSets(ctx context.Context, kind domain.StickerSetKind) ([]domain.StickerSet, error) CountStickerSets(ctx context.Context) (int, error) PutAvailableReaction(ctx context.Context, r domain.AvailableReaction) error ListAvailableReactions(ctx context.Context) ([]domain.AvailableReaction, error) CountAvailableReactions(ctx context.Context) (int, error) // 头像历史(owner = user/channel;current = active 中 sort_order 最大者)。 AddProfilePhoto(ctx context.Context, ownerType domain.PeerType, ownerID, photoID int64, date int) error AddProfilePhotoKind(ctx context.Context, ownerType domain.PeerType, ownerID int64, kind domain.ProfilePhotoKind, photoID int64, date int) error CurrentProfilePhoto(ctx context.Context, ownerType domain.PeerType, ownerID int64) (int64, bool, error) CurrentProfilePhotoKind(ctx context.Context, ownerType domain.PeerType, ownerID int64, kind domain.ProfilePhotoKind) (int64, bool, error) CurrentProfilePhotos(ctx context.Context, ownerType domain.PeerType, ownerIDs []int64) (map[int64]domain.ProfilePhotoRef, error) CurrentProfilePhotosKind(ctx context.Context, ownerType domain.PeerType, ownerIDs []int64, kind domain.ProfilePhotoKind) (map[int64]domain.ProfilePhotoRef, error) ListProfilePhotos(ctx context.Context, ownerType domain.PeerType, ownerID int64, offset, limit int, maxID int64) (ids []int64, total int, err error) ListProfilePhotosKind(ctx context.Context, ownerType domain.PeerType, ownerID int64, kind domain.ProfilePhotoKind, offset, limit int, maxID int64) (ids []int64, total int, err error) DeleteProfilePhotos(ctx context.Context, ownerType domain.PeerType, ownerID int64, photoIDs []int64) ([]int64, error) DeleteProfilePhotosKind(ctx context.Context, ownerType domain.PeerType, ownerID int64, kind domain.ProfilePhotoKind, photoIDs []int64) ([]int64, error) }