storage_facade.cpp 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. /*
  2. This file is part of Telegram Desktop,
  3. the official desktop application for the Telegram messaging service.
  4. For license and copyright information please follow this link:
  5. https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
  6. */
  7. #include "storage/storage_facade.h"
  8. #include "storage/storage_shared_media.h"
  9. #include "storage/storage_user_photos.h"
  10. namespace Storage {
  11. class Facade::Impl {
  12. public:
  13. void add(SharedMediaAddNew &&query);
  14. void add(SharedMediaAddExisting &&query);
  15. void add(SharedMediaAddSlice &&query);
  16. void remove(SharedMediaRemoveOne &&query);
  17. void remove(SharedMediaRemoveAll &&query);
  18. void invalidate(SharedMediaInvalidateBottom &&query);
  19. void unload(SharedMediaUnloadThread &&query);
  20. rpl::producer<SharedMediaResult> query(SharedMediaQuery &&query) const;
  21. SharedMediaResult snapshot(const SharedMediaQuery &query) const;
  22. bool empty(const SharedMediaKey &key) const;
  23. rpl::producer<SharedMediaSliceUpdate> sharedMediaSliceUpdated() const;
  24. rpl::producer<SharedMediaRemoveOne> sharedMediaOneRemoved() const;
  25. rpl::producer<SharedMediaRemoveAll> sharedMediaAllRemoved() const;
  26. rpl::producer<SharedMediaInvalidateBottom> sharedMediaBottomInvalidated() const;
  27. void add(UserPhotosSetBack &&query);
  28. void add(UserPhotosAddNew &&query);
  29. void add(UserPhotosAddSlice &&query);
  30. void remove(UserPhotosRemoveOne &&query);
  31. void remove(UserPhotosRemoveAfter &&query);
  32. rpl::producer<UserPhotosResult> query(UserPhotosQuery &&query) const;
  33. rpl::producer<UserPhotosSliceUpdate> userPhotosSliceUpdated() const;
  34. private:
  35. SharedMedia _sharedMedia;
  36. UserPhotos _userPhotos;
  37. };
  38. void Facade::Impl::add(SharedMediaAddNew &&query) {
  39. _sharedMedia.add(std::move(query));
  40. }
  41. void Facade::Impl::add(SharedMediaAddExisting &&query) {
  42. _sharedMedia.add(std::move(query));
  43. }
  44. void Facade::Impl::add(SharedMediaAddSlice &&query) {
  45. _sharedMedia.add(std::move(query));
  46. }
  47. void Facade::Impl::remove(SharedMediaRemoveOne &&query) {
  48. _sharedMedia.remove(std::move(query));
  49. }
  50. void Facade::Impl::remove(SharedMediaRemoveAll &&query) {
  51. _sharedMedia.remove(std::move(query));
  52. }
  53. void Facade::Impl::invalidate(SharedMediaInvalidateBottom &&query) {
  54. _sharedMedia.invalidate(std::move(query));
  55. }
  56. void Facade::Impl::unload(SharedMediaUnloadThread &&query) {
  57. _sharedMedia.unload(std::move(query));
  58. }
  59. rpl::producer<SharedMediaResult> Facade::Impl::query(SharedMediaQuery &&query) const {
  60. return _sharedMedia.query(std::move(query));
  61. }
  62. SharedMediaResult Facade::Impl::snapshot(const SharedMediaQuery &query) const {
  63. return _sharedMedia.snapshot(query);
  64. }
  65. bool Facade::Impl::empty(const SharedMediaKey &key) const {
  66. return _sharedMedia.empty(key);
  67. }
  68. rpl::producer<SharedMediaSliceUpdate> Facade::Impl::sharedMediaSliceUpdated() const {
  69. return _sharedMedia.sliceUpdated();
  70. }
  71. rpl::producer<SharedMediaRemoveOne> Facade::Impl::sharedMediaOneRemoved() const {
  72. return _sharedMedia.oneRemoved();
  73. }
  74. rpl::producer<SharedMediaRemoveAll> Facade::Impl::sharedMediaAllRemoved() const {
  75. return _sharedMedia.allRemoved();
  76. }
  77. rpl::producer<SharedMediaInvalidateBottom> Facade::Impl::sharedMediaBottomInvalidated() const {
  78. return _sharedMedia.bottomInvalidated();
  79. }
  80. void Facade::Impl::add(UserPhotosSetBack &&query) {
  81. return _userPhotos.add(std::move(query));
  82. }
  83. void Facade::Impl::add(UserPhotosAddNew &&query) {
  84. return _userPhotos.add(std::move(query));
  85. }
  86. void Facade::Impl::add(UserPhotosAddSlice &&query) {
  87. return _userPhotos.add(std::move(query));
  88. }
  89. void Facade::Impl::remove(UserPhotosRemoveOne &&query) {
  90. return _userPhotos.remove(std::move(query));
  91. }
  92. void Facade::Impl::remove(UserPhotosRemoveAfter &&query) {
  93. return _userPhotos.remove(std::move(query));
  94. }
  95. rpl::producer<UserPhotosResult> Facade::Impl::query(UserPhotosQuery &&query) const {
  96. return _userPhotos.query(std::move(query));
  97. }
  98. rpl::producer<UserPhotosSliceUpdate> Facade::Impl::userPhotosSliceUpdated() const {
  99. return _userPhotos.sliceUpdated();
  100. }
  101. Facade::Facade() : _impl(std::make_unique<Impl>()) {
  102. }
  103. void Facade::add(SharedMediaAddNew &&query) {
  104. _impl->add(std::move(query));
  105. }
  106. void Facade::add(SharedMediaAddExisting &&query) {
  107. _impl->add(std::move(query));
  108. }
  109. void Facade::add(SharedMediaAddSlice &&query) {
  110. _impl->add(std::move(query));
  111. }
  112. void Facade::remove(SharedMediaRemoveOne &&query) {
  113. _impl->remove(std::move(query));
  114. }
  115. void Facade::remove(SharedMediaRemoveAll &&query) {
  116. _impl->remove(std::move(query));
  117. }
  118. void Facade::invalidate(SharedMediaInvalidateBottom &&query) {
  119. _impl->invalidate(std::move(query));
  120. }
  121. void Facade::unload(SharedMediaUnloadThread &&query) {
  122. _impl->unload(std::move(query));
  123. }
  124. rpl::producer<SharedMediaResult> Facade::query(SharedMediaQuery &&query) const {
  125. return _impl->query(std::move(query));
  126. }
  127. SharedMediaResult Facade::snapshot(const SharedMediaQuery &query) const {
  128. return _impl->snapshot(query);
  129. }
  130. bool Facade::empty(const SharedMediaKey &key) const {
  131. return _impl->empty(key);
  132. }
  133. rpl::producer<SharedMediaSliceUpdate> Facade::sharedMediaSliceUpdated() const {
  134. return _impl->sharedMediaSliceUpdated();
  135. }
  136. rpl::producer<SharedMediaRemoveOne> Facade::sharedMediaOneRemoved() const {
  137. return _impl->sharedMediaOneRemoved();
  138. }
  139. rpl::producer<SharedMediaRemoveAll> Facade::sharedMediaAllRemoved() const {
  140. return _impl->sharedMediaAllRemoved();
  141. }
  142. rpl::producer<SharedMediaInvalidateBottom> Facade::sharedMediaBottomInvalidated() const {
  143. return _impl->sharedMediaBottomInvalidated();
  144. }
  145. void Facade::add(UserPhotosSetBack &&query) {
  146. return _impl->add(std::move(query));
  147. }
  148. void Facade::add(UserPhotosAddNew &&query) {
  149. return _impl->add(std::move(query));
  150. }
  151. void Facade::add(UserPhotosAddSlice &&query) {
  152. return _impl->add(std::move(query));
  153. }
  154. void Facade::remove(UserPhotosRemoveOne &&query) {
  155. return _impl->remove(std::move(query));
  156. }
  157. void Facade::remove(UserPhotosRemoveAfter &&query) {
  158. return _impl->remove(std::move(query));
  159. }
  160. rpl::producer<UserPhotosResult> Facade::query(UserPhotosQuery &&query) const {
  161. return _impl->query(std::move(query));
  162. }
  163. rpl::producer<UserPhotosSliceUpdate> Facade::userPhotosSliceUpdated() const {
  164. return _impl->userPhotosSliceUpdated();
  165. }
  166. Facade::~Facade() = default;
  167. } // namespace Storage