using Foxel.Models; using Foxel.Models.DataBase; using Foxel.Models.Response.Picture; namespace Foxel.Services.Interface; public interface IPictureService { Task> GetPicturesAsync( int page = 1, int pageSize = 8, string? searchQuery = null, List? tags = null, DateTime? startDate = null, DateTime? endDate = null, int? userId = null, string? sortBy = "newest", bool? onlyWithGps = false, bool useVectorSearch = false, double similarityThreshold = 0.36, int? excludeAlbumId = null, int? albumId = null, bool onlyFavorites = false, int? ownerId = null, bool includeAllPublic = false ); Task<(PictureResponse Picture, int Id)> UploadPictureAsync( string fileName, Stream fileStream, string contentType, int? userId, PermissionType permission = PermissionType.Public, int? albumId = null, StorageType? storageType = null ); Task GetPictureExifInfoAsync(int pictureId); /// /// 批量删除多张图片 /// /// 要删除的图片ID列表 /// 每个图片ID对应的删除结果、可能的错误信息和所有者ID Task> DeleteMultiplePicturesAsync( List pictureIds); /// /// 更新图片信息 /// /// 图片ID /// 新标题(可选) /// 新描述(可选) /// 新标签(可选) /// 更新后的图片视图模型和所有者ID Task<(PictureResponse Picture, int? UserId)> UpdatePictureAsync( int pictureId, string? name = null, string? description = null, List? tags = null); /// /// 收藏图片 /// /// 图片ID /// 用户ID /// 成功/失败 Task FavoritePictureAsync(int pictureId, int userId); /// /// 取消收藏图片 /// /// 图片ID /// 用户ID /// 成功/失败 Task UnfavoritePictureAsync(int pictureId, int userId); /// /// 检查图片是否被特定用户收藏 /// /// 图片ID /// 用户ID /// 是否收藏 Task IsPictureFavoritedByUserAsync(int pictureId, int userId); }