using System; using System.Collections.Generic; using DHT.Server.Data; using DHT.Server.Data.Aggregations; using DHT.Server.Data.Filters; using DHT.Server.Download; namespace DHT.Server.Database { public interface IDatabaseFile : IDisposable { string Path { get; } DatabaseStatistics Statistics { get; } DatabaseStatisticsSnapshot SnapshotStatistics(); void AddServer(Data.Server server); List GetAllServers(); void AddChannel(Channel channel); List GetAllChannels(); void AddUsers(User[] users); List GetAllUsers(); void AddMessages(Message[] messages); int CountMessages(MessageFilter? filter = null); List GetMessages(MessageFilter? filter = null); void RemoveMessages(MessageFilter filter, FilterRemovalMode mode); int CountAttachments(AttachmentFilter? filter = null); void AddDownload(Data.Download download); List GetDownloadsWithoutData(); Data.Download GetDownloadWithData(Data.Download download); void EnqueueDownloadItems(AttachmentFilter? filter = null); List GetEnqueuedDownloadItems(int count); void RemoveDownloadItems(DownloadItemFilter? filter, FilterRemovalMode mode); DownloadStatusStatistics GetDownloadStatusStatistics(); void Vacuum(); } }