Initial open source release

This commit is contained in:
A 2026-06-04 01:37:39 +08:00
commit 74992e893f
377 changed files with 118084 additions and 0 deletions

46
internal/store/media.go Normal file
View file

@ -0,0 +1,46 @@
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/channelcurrent = active 中 sort_order 最大者)。
AddProfilePhoto(ctx context.Context, ownerType domain.PeerType, ownerID, photoID int64, date int) error
CurrentProfilePhoto(ctx context.Context, ownerType domain.PeerType, ownerID int64) (int64, bool, error)
CurrentProfilePhotos(ctx context.Context, ownerType domain.PeerType, ownerIDs []int64) (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)
DeleteProfilePhotos(ctx context.Context, ownerType domain.PeerType, ownerID int64, photoIDs []int64) ([]int64, error)
}