libquentier  0.8.0
The library for rich desktop clients of Evernote service
ILocalStorage.h
1 /*
2  * Copyright 2020-2023 Dmitry Ivanov
3  *
4  * This file is part of libquentier
5  *
6  * libquentier is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU Lesser General Public License as published by
8  * the Free Software Foundation, version 3 of the License.
9  *
10  * libquentier is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with libquentier. If not, see <http://www.gnu.org/licenses/>.
17  */
18 
19 #pragma once
20 
21 #include <quentier/local_storage/Fwd.h>
22 #include <quentier/local_storage/NoteSearchQuery.h>
23 #include <quentier/types/Fwd.h>
24 #include <quentier/utility/Linkage.h>
25 
26 #include <qevercloud/types/LinkedNotebook.h>
27 #include <qevercloud/types/Note.h>
28 #include <qevercloud/types/Notebook.h>
29 #include <qevercloud/types/Resource.h>
30 #include <qevercloud/types/SavedSearch.h>
31 #include <qevercloud/types/SharedNotebook.h>
32 #include <qevercloud/types/Tag.h>
33 #include <qevercloud/types/User.h>
34 
35 #include <QFlags>
36 #include <QFuture>
37 #include <QHash>
38 #include <QList>
39 #include <QStringList>
40 #include <QThreadPool>
41 
42 #include <optional>
43 #include <utility>
44 
45 class QDebug;
46 class QTextStream;
47 class QThreadPool;
48 
49 namespace quentier::local_storage {
50 
51 class QUENTIER_EXPORT ILocalStorage
52 {
53 public:
54  virtual ~ILocalStorage() = default;
55 
56 public:
57  enum class StartupOption
58  {
59  ClearDatabase = 1 << 1,
60  OverrideLock = 1 << 2
61  };
62  Q_DECLARE_FLAGS(StartupOptions, StartupOption);
63 
64  friend QUENTIER_EXPORT QTextStream & operator<<(
65  QTextStream & strm, StartupOption option);
66 
67  friend QUENTIER_EXPORT QDebug & operator<<(
68  QDebug & dbg, StartupOption option);
69 
70  friend QUENTIER_EXPORT QTextStream & operator<<(
71  QTextStream & strm, StartupOptions options);
72 
73  friend QUENTIER_EXPORT QDebug & operator<<(
74  QDebug & dbg, StartupOptions options);
75 
77 
78  enum class ListObjectsFilter
79  {
80  Include,
81  Exclude
82  };
83 
84  friend QUENTIER_EXPORT QTextStream & operator<<(
85  QTextStream & strm, ListObjectsFilter filter);
86 
87  friend QUENTIER_EXPORT QDebug & operator<<(
88  QDebug & dbg, ListObjectsFilter filter);
89 
91 
92  struct QUENTIER_EXPORT ListObjectsFilters
93  {
94  std::optional<ListObjectsFilter> m_locallyModifiedFilter;
95  std::optional<ListObjectsFilter> m_withGuidFilter;
96  std::optional<ListObjectsFilter> m_localOnlyFilter;
97  std::optional<ListObjectsFilter> m_locallyFavoritedFilter;
98  };
99 
100  friend QUENTIER_EXPORT QTextStream & operator<<(
101  QTextStream & strm, const ListObjectsFilters & filters);
102 
103  friend QUENTIER_EXPORT QDebug & operator<<(
104  QDebug & dbg, const ListObjectsFilters & filters);
105 
107 
108  struct QUENTIER_EXPORT ListGuidsFilters
109  {
110  std::optional<ListObjectsFilter> m_locallyModifiedFilter;
111  std::optional<ListObjectsFilter> m_locallyFavoritedFilter;
112  };
113 
114  friend QUENTIER_EXPORT QTextStream & operator<<(
115  QTextStream & strm, const ListGuidsFilters & filters);
116 
117  friend QUENTIER_EXPORT QDebug & operator<<(
118  QDebug & dbg, const ListGuidsFilters & filters);
119 
121 
122  enum class OrderDirection
123  {
124  Ascending,
125  Descending
126  };
127 
128  friend QUENTIER_EXPORT QTextStream & operator<<(
129  QTextStream & strm, OrderDirection orderDirection);
130 
131  friend QUENTIER_EXPORT QDebug & operator<<(
132  QDebug & dbg, OrderDirection orderDirection);
133 
135 
136  enum class ListNotebooksOrder
137  {
138  NoOrder,
139  ByUpdateSequenceNumber,
140  ByNotebookName,
141  ByCreationTimestamp,
142  ByModificationTimestamp
143  };
144 
145  friend QUENTIER_EXPORT QTextStream & operator<<(
146  QTextStream & strm, ListNotebooksOrder order);
147 
148  friend QUENTIER_EXPORT QDebug & operator<<(
149  QDebug & dbg, ListNotebooksOrder order);
150 
152 
153  enum class ListLinkedNotebooksOrder
154  {
155  NoOrder,
156  ByUpdateSequenceNumber,
157  ByShareName,
158  ByUsername,
159  };
160 
161  friend QUENTIER_EXPORT QTextStream & operator<<(
162  QTextStream & strm, ListLinkedNotebooksOrder order);
163 
164  friend QUENTIER_EXPORT QDebug & operator<<(
165  QDebug & dbg, ListLinkedNotebooksOrder order);
166 
168 
169  enum class ListTagsOrder
170  {
171  NoOrder,
172  ByUpdateSequenceNumber,
173  ByName
174  };
175 
176  friend QUENTIER_EXPORT QTextStream & operator<<(
177  QTextStream & strm, ListTagsOrder order);
178 
179  friend QUENTIER_EXPORT QDebug & operator<<(
180  QDebug & dbg, ListTagsOrder order);
181 
183 
184  enum class ListNotesOrder
185  {
186  NoOrder,
187  ByUpdateSequenceNumber,
188  ByTitle,
189  ByCreationTimestamp,
190  ByModificationTimestamp,
191  ByDeletionTimestamp,
192  ByAuthor,
193  BySource,
194  BySourceApplication,
195  ByReminderTime,
196  ByPlaceName
197  };
198 
199  friend QUENTIER_EXPORT QTextStream & operator<<(
200  QTextStream & strm, ListNotesOrder order);
201 
202  friend QUENTIER_EXPORT QDebug & operator<<(
203  QDebug & dbg, ListNotesOrder order);
204 
206 
207  enum class ListSavedSearchesOrder
208  {
209  NoOrder,
210  ByUpdateSequenceNumber,
211  ByName,
212  ByFormat
213  };
214 
215  friend QUENTIER_EXPORT QTextStream & operator<<(
216  QTextStream & strm, ListSavedSearchesOrder order);
217 
218  friend QUENTIER_EXPORT QDebug & operator<<(
219  QDebug & dbg, ListSavedSearchesOrder order);
220 
222 
225  enum class Affiliation
226  {
227  Any,
228  User,
229  AnyLinkedNotebook,
230  ParticularLinkedNotebooks
231  };
232 
233  friend QUENTIER_EXPORT QTextStream & operator<<(
234  QTextStream & strm, Affiliation affiliation);
235 
236  friend QUENTIER_EXPORT QDebug & operator<<(
237  QDebug & dbg, Affiliation affiliation);
238 
240 
241  struct QUENTIER_EXPORT ListOptionsBase
242  {
243  ListOptionsBase() noexcept {}; // NOLINT
244 
245  ListObjectsFilters m_filters = {};
246  quint64 m_limit = 0UL;
247  quint64 m_offset = 0UL;
248  OrderDirection m_direction = OrderDirection::Ascending;
249  };
250 
251  struct QUENTIER_EXPORT ListNotebooksOptions : public ListOptionsBase
252  {
253  ListNotebooksOptions() noexcept {}; // NOLINT
254 
255  ListNotebooksOrder m_order = ListNotebooksOrder::NoOrder;
256  Affiliation m_affiliation = Affiliation::Any;
257  QList<qevercloud::Guid> m_linkedNotebookGuids;
258  };
259 
260  friend QUENTIER_EXPORT QTextStream & operator<<(
261  QTextStream & strm, const ListNotebooksOptions & options);
262 
263  friend QUENTIER_EXPORT QDebug & operator<<(
264  QDebug & dbg, const ListNotebooksOptions & options);
265 
266  struct QUENTIER_EXPORT ListLinkedNotebooksOptions : public ListOptionsBase
267  {
268  ListLinkedNotebooksOptions() noexcept {}; // NOLINT
269 
270  ListLinkedNotebooksOrder m_order = ListLinkedNotebooksOrder::NoOrder;
271  };
272 
273  friend QUENTIER_EXPORT QTextStream & operator<<(
274  QTextStream & strm, const ListLinkedNotebooksOptions & options);
275 
276  friend QUENTIER_EXPORT QDebug & operator<<(
277  QDebug & dbg, const ListLinkedNotebooksOptions & options);
278 
279  struct QUENTIER_EXPORT ListSavedSearchesOptions : public ListOptionsBase
280  {
281  ListSavedSearchesOptions() noexcept {}; // NOLINT
282 
283  ListSavedSearchesOrder m_order = ListSavedSearchesOrder::NoOrder;
284  };
285 
286  friend QUENTIER_EXPORT QTextStream & operator<<(
287  QTextStream & strm, const ListSavedSearchesOptions & options);
288 
289  friend QUENTIER_EXPORT QDebug & operator<<(
290  QDebug & dbg, const ListSavedSearchesOptions & options);
291 
292  struct QUENTIER_EXPORT ListNotesOptions : public ListOptionsBase
293  {
294  ListNotesOptions() noexcept {}; // NOLINT
295 
296  ListNotesOrder m_order = ListNotesOrder::NoOrder;
297  };
298 
299  friend QUENTIER_EXPORT QTextStream & operator<<(
300  QTextStream & strm, const ListNotesOptions & options);
301 
302  friend QUENTIER_EXPORT QDebug & operator<<(
303  QDebug & dbg, const ListNotesOptions & options);
304 
307  enum class TagNotesRelation
308  {
310  Any,
312  WithNotes,
314  WithoutNotes
315  };
316 
317  struct QUENTIER_EXPORT ListTagsOptions : public ListOptionsBase
318  {
319  ListTagsOptions() noexcept {}; // NOLINT
320 
321  ListTagsOrder m_order = ListTagsOrder::NoOrder;
322  Affiliation m_affiliation = Affiliation::Any;
323  QList<qevercloud::Guid> m_linkedNotebookGuids;
324  TagNotesRelation m_tagNotesRelation = TagNotesRelation::Any;
325  };
326 
327  friend QUENTIER_EXPORT QTextStream & operator<<(
328  QTextStream & strm, const ListTagsOptions & options);
329 
330  friend QUENTIER_EXPORT QDebug & operator<<(
331  QDebug & dbg, const ListTagsOptions & options);
332 
334 
335  enum class NoteCountOption
336  {
337  IncludeNonDeletedNotes = 1 << 1,
338  IncludeDeletedNotes = 1 << 2
339  };
340  Q_DECLARE_FLAGS(NoteCountOptions, NoteCountOption)
341 
342  friend QUENTIER_EXPORT QTextStream & operator<<(
343  QTextStream & strm, NoteCountOption option);
344 
345  friend QUENTIER_EXPORT QDebug & operator<<(
346  QDebug & dbg, NoteCountOption option);
347 
348  friend QUENTIER_EXPORT QTextStream & operator<<(
349  QTextStream & strm, NoteCountOptions options);
350 
351  friend QUENTIER_EXPORT QDebug & operator<<(
352  QDebug & dbg, NoteCountOptions options);
353 
355 
356  enum class UpdateNoteOption
357  {
358  UpdateResourceMetadata = 1 << 1,
359  UpdateResourceBinaryData = 1 << 2,
360  UpdateTags = 1 << 3
361  };
362  Q_DECLARE_FLAGS(UpdateNoteOptions, UpdateNoteOption)
363 
364  friend QUENTIER_EXPORT QTextStream & operator<<(
365  QTextStream & strm, UpdateNoteOption option);
366 
367  friend QUENTIER_EXPORT QDebug & operator<<(
368  QDebug & dbg, UpdateNoteOption option);
369 
370  friend QUENTIER_EXPORT QTextStream & operator<<(
371  QTextStream & strm, UpdateNoteOptions options);
372 
373  friend QUENTIER_EXPORT QDebug & operator<<(
374  QDebug & dbg, UpdateNoteOptions options);
375 
377 
378  enum class FetchNoteOption
379  {
380  WithResourceMetadata = 1 << 1,
381  WithResourceBinaryData = 1 << 2
382  };
383  Q_DECLARE_FLAGS(FetchNoteOptions, FetchNoteOption)
384 
385  friend QUENTIER_EXPORT QTextStream & operator<<(
386  QTextStream & strm, FetchNoteOption option);
387 
388  friend QUENTIER_EXPORT QDebug & operator<<(
389  QDebug & dbg, FetchNoteOption option);
390 
391  friend QUENTIER_EXPORT QTextStream & operator<<(
392  QTextStream & strm, FetchNoteOptions options);
393 
394  friend QUENTIER_EXPORT QDebug & operator<<(
395  QDebug & dbg, FetchNoteOptions options);
396 
398 
399  enum class FetchResourceOption
400  {
401  WithBinaryData = 1 << 1
402  };
403  Q_DECLARE_FLAGS(FetchResourceOptions, FetchResourceOption)
404 
405  friend QUENTIER_EXPORT QTextStream & operator<<(
406  QTextStream & strm, FetchResourceOption option);
407 
408  friend QUENTIER_EXPORT QDebug & operator<<(
409  QDebug & dbg, FetchResourceOption option);
410 
411  friend QUENTIER_EXPORT QTextStream & operator<<(
412  QTextStream & strm, FetchResourceOptions options);
413 
414  friend QUENTIER_EXPORT QDebug & operator<<(
415  QDebug & dbg, FetchResourceOptions options);
416 
418 
419  enum class HighestUsnOption
420  {
421  WithinUserOwnContent,
422  WithinUserOwnContentAndLinkedNotebooks
423  };
424 
425  friend QUENTIER_EXPORT QTextStream & operator<<(
426  QTextStream & strm, HighestUsnOption option);
427 
428  friend QUENTIER_EXPORT QDebug & operator<<(
429  QDebug & dbg, HighestUsnOption option);
430 
431 public:
432  // Versions/upgrade API
433  [[nodiscard]] virtual QFuture<bool> isVersionTooHigh() const = 0;
434  [[nodiscard]] virtual QFuture<bool> requiresUpgrade() const = 0;
435  [[nodiscard]] virtual QFuture<QList<IPatchPtr>> requiredPatches() const = 0;
436  [[nodiscard]] virtual QFuture<qint32> version() const = 0;
437  [[nodiscard]] virtual QFuture<qint32> highestSupportedVersion() const = 0;
438 
439  // Users API
440  [[nodiscard]] virtual QFuture<quint32> userCount() const = 0;
441  [[nodiscard]] virtual QFuture<void> putUser(qevercloud::User user) = 0;
442 
443  [[nodiscard]] virtual QFuture<std::optional<qevercloud::User>> findUserById(
444  qevercloud::UserID userId) const = 0;
445 
446  [[nodiscard]] virtual QFuture<void> expungeUserById(
447  qevercloud::UserID userId) = 0;
448 
449  // Notebooks API
450  [[nodiscard]] virtual QFuture<quint32> notebookCount() const = 0;
451 
452  [[nodiscard]] virtual QFuture<void> putNotebook(
453  qevercloud::Notebook notebook) = 0;
454 
455  [[nodiscard]] virtual QFuture<std::optional<qevercloud::Notebook>>
456  findNotebookByLocalId(QString notebookLocalId) const = 0;
457 
458  [[nodiscard]] virtual QFuture<std::optional<qevercloud::Notebook>>
459  findNotebookByGuid(qevercloud::Guid guid) const = 0;
460 
461  [[nodiscard]] virtual QFuture<std::optional<qevercloud::Notebook>>
462  findNotebookByName(
463  QString notebookName,
464  std::optional<qevercloud::Guid> linkedNotebookGuid =
465  std::nullopt) const = 0;
466 
467  [[nodiscard]] virtual QFuture<std::optional<qevercloud::Notebook>>
468  findDefaultNotebook() const = 0;
469 
470  [[nodiscard]] virtual QFuture<void> expungeNotebookByLocalId(
471  QString notebookLocalId) = 0;
472 
473  [[nodiscard]] virtual QFuture<void> expungeNotebookByGuid(
474  qevercloud::Guid notebookGuid) = 0;
475 
476  [[nodiscard]] virtual QFuture<void> expungeNotebookByName(
477  QString name,
478  std::optional<qevercloud::Guid> linkedNotebookGuid = std::nullopt) = 0;
479 
480  [[nodiscard]] virtual QFuture<QList<qevercloud::Notebook>> listNotebooks(
481  ListNotebooksOptions options = {}) const = 0;
482 
483  [[nodiscard]] virtual QFuture<QList<qevercloud::SharedNotebook>>
484  listSharedNotebooks(qevercloud::Guid notebookGuid = {}) const = 0;
485 
486  [[nodiscard]] virtual QFuture<QSet<qevercloud::Guid>> listNotebookGuids(
487  ListGuidsFilters filters,
488  std::optional<qevercloud::Guid> linkedNotebookGuid = {}) const = 0;
489 
490  // Linked notebooks API
491  [[nodiscard]] virtual QFuture<quint32> linkedNotebookCount() const = 0;
492 
493  [[nodiscard]] virtual QFuture<void> putLinkedNotebook(
494  qevercloud::LinkedNotebook linkedNotebook) = 0;
495 
496  [[nodiscard]] virtual QFuture<std::optional<qevercloud::LinkedNotebook>>
497  findLinkedNotebookByGuid(qevercloud::Guid guid) const = 0;
498 
499  [[nodiscard]] virtual QFuture<void> expungeLinkedNotebookByGuid(
500  qevercloud::Guid guid) = 0;
501 
502  [[nodiscard]] virtual QFuture<QList<qevercloud::LinkedNotebook>>
503  listLinkedNotebooks(ListLinkedNotebooksOptions options = {}) const = 0;
504 
505  // Notes API
506  [[nodiscard]] virtual QFuture<quint32> noteCount(
507  NoteCountOptions options = NoteCountOptions(
508  NoteCountOption::IncludeNonDeletedNotes)) const = 0;
509 
510  [[nodiscard]] virtual QFuture<quint32> noteCountPerNotebookLocalId(
511  QString notebookLocalId,
512  NoteCountOptions options = NoteCountOptions(
513  NoteCountOption::IncludeNonDeletedNotes)) const = 0;
514 
515  [[nodiscard]] virtual QFuture<quint32> noteCountPerTagLocalId(
516  QString tagLocalId,
517  NoteCountOptions options = NoteCountOptions(
518  NoteCountOption::IncludeNonDeletedNotes)) const = 0;
519 
520  [[nodiscard]] virtual QFuture<QHash<QString, quint32>> noteCountsPerTags(
521  ListTagsOptions listTagsOptions = {},
522  NoteCountOptions options = NoteCountOptions(
523  NoteCountOption::IncludeNonDeletedNotes)) const = 0;
524 
525  [[nodiscard]] virtual QFuture<quint32> noteCountPerNotebookAndTagLocalIds(
526  QStringList notebookLocalIds, QStringList tagLocalIds,
527  NoteCountOptions options = NoteCountOptions(
528  NoteCountOption::IncludeNonDeletedNotes)) const = 0;
529 
530  [[nodiscard]] virtual QFuture<void> putNote(qevercloud::Note note) = 0;
531 
532  [[nodiscard]] virtual QFuture<void> updateNote(
533  qevercloud::Note note, UpdateNoteOptions options) = 0;
534 
535  [[nodiscard]] virtual QFuture<std::optional<qevercloud::Note>>
536  findNoteByLocalId(
537  QString noteLocalId, FetchNoteOptions options) const = 0;
538 
539  [[nodiscard]] virtual QFuture<std::optional<qevercloud::Note>>
540  findNoteByGuid(
541  qevercloud::Guid noteGuid, FetchNoteOptions options) const = 0;
542 
543  [[nodiscard]] virtual QFuture<QList<qevercloud::Note>> listNotes(
544  FetchNoteOptions fetchOptions,
545  ListNotesOptions listOptions = {}) const = 0;
546 
547  [[nodiscard]] virtual QFuture<QList<qevercloud::Note>>
548  listNotesPerNotebookLocalId(
549  QString notebookLocalId, FetchNoteOptions fetchOptions,
550  ListNotesOptions listOptions = {}) const = 0;
551 
552  [[nodiscard]] virtual QFuture<QList<qevercloud::Note>>
553  listNotesPerTagLocalId(
554  QString tagLocalId, FetchNoteOptions fetchOptions,
555  ListNotesOptions listOptions = {}) const = 0;
556 
557  [[nodiscard]] virtual QFuture<QList<qevercloud::Note>>
558  listNotesPerNotebookAndTagLocalIds(
559  QStringList notebookLocalIds, QStringList tagLocalIds,
560  FetchNoteOptions fetchOptions,
561  ListNotesOptions listOptions = {}) const = 0;
562 
563  [[nodiscard]] virtual QFuture<QList<qevercloud::Note>> listNotesByLocalIds(
564  QStringList noteLocalIds, FetchNoteOptions fetchOptions,
565  ListNotesOptions listOptions = {}) const = 0;
566 
567  [[nodiscard]] virtual QFuture<QSet<qevercloud::Guid>> listNoteGuids(
568  ListGuidsFilters filters,
569  std::optional<qevercloud::Guid> linkedNotebookGuid = {}) const = 0;
570 
571  [[nodiscard]] virtual QFuture<QList<qevercloud::Note>> queryNotes(
572  NoteSearchQuery query, FetchNoteOptions fetchOptions) const = 0;
573 
574  [[nodiscard]] virtual QFuture<QStringList> queryNoteLocalIds(
575  NoteSearchQuery query) const = 0;
576 
577  [[nodiscard]] virtual QFuture<void> expungeNoteByLocalId(
578  QString noteLocalId) = 0;
579 
580  [[nodiscard]] virtual QFuture<void> expungeNoteByGuid(
581  qevercloud::Guid noteGuid) = 0;
582 
583  // Tags API
584  [[nodiscard]] virtual QFuture<quint32> tagCount() const = 0;
585  [[nodiscard]] virtual QFuture<void> putTag(qevercloud::Tag tag) = 0;
586 
587  [[nodiscard]] virtual QFuture<std::optional<qevercloud::Tag>>
588  findTagByLocalId(QString tagLocalId) const = 0;
589 
590  [[nodiscard]] virtual QFuture<std::optional<qevercloud::Tag>> findTagByGuid(
591  qevercloud::Guid tagGuid) const = 0;
592 
593  [[nodiscard]] virtual QFuture<std::optional<qevercloud::Tag>> findTagByName(
594  QString tagName,
595  std::optional<qevercloud::Guid> linkedNotebookGuid =
596  std::nullopt) const = 0;
597 
598  [[nodiscard]] virtual QFuture<QList<qevercloud::Tag>> listTags(
599  ListTagsOptions options = {}) const = 0;
600 
601  [[nodiscard]] virtual QFuture<QList<qevercloud::Tag>>
602  listTagsPerNoteLocalId(
603  QString noteLocalId, ListTagsOptions options = {}) const = 0;
604 
605  [[nodiscard]] virtual QFuture<QSet<qevercloud::Guid>> listTagGuids(
606  ListGuidsFilters filters,
607  std::optional<qevercloud::Guid> linkedNotebookGuid = {}) const = 0;
608 
609  [[nodiscard]] virtual QFuture<void> expungeTagByLocalId(
610  QString tagLocalId) = 0;
611 
612  [[nodiscard]] virtual QFuture<void> expungeTagByGuid(
613  qevercloud::Guid tagGuid) = 0;
614 
615  [[nodiscard]] virtual QFuture<void> expungeTagByName(
616  QString name,
617  std::optional<qevercloud::Guid> linkedNotebookGuid = std::nullopt) = 0;
618 
619  // Resources API
620  [[nodiscard]] virtual QFuture<quint32> resourceCount(
621  NoteCountOptions options = NoteCountOptions(
622  NoteCountOption::IncludeNonDeletedNotes)) const = 0;
623 
624  [[nodiscard]] virtual QFuture<quint32> resourceCountPerNoteLocalId(
625  QString noteLocalId) const = 0;
626 
627  [[nodiscard]] virtual QFuture<void> putResource(
628  qevercloud::Resource resource) = 0;
629 
630  [[nodiscard]] virtual QFuture<std::optional<qevercloud::Resource>>
631  findResourceByLocalId(
632  QString resourceLocalId,
633  FetchResourceOptions options = {}) const = 0;
634 
635  [[nodiscard]] virtual QFuture<std::optional<qevercloud::Resource>>
636  findResourceByGuid(
637  qevercloud::Guid resourceGuid,
638  FetchResourceOptions options = {}) const = 0;
639 
640  [[nodiscard]] virtual QFuture<void> expungeResourceByLocalId(
641  QString resourceLocalId) = 0;
642 
643  [[nodiscard]] virtual QFuture<void> expungeResourceByGuid(
644  qevercloud::Guid resourceGuid) = 0;
645 
646  // Saved searches API
647  [[nodiscard]] virtual QFuture<quint32> savedSearchCount() const = 0;
648 
649  [[nodiscard]] virtual QFuture<void> putSavedSearch(
650  qevercloud::SavedSearch search) = 0;
651 
652  [[nodiscard]] virtual QFuture<std::optional<qevercloud::SavedSearch>>
653  findSavedSearchByLocalId(QString savedSearchLocalId) const = 0;
654 
655  [[nodiscard]] virtual QFuture<std::optional<qevercloud::SavedSearch>>
656  findSavedSearchByGuid(qevercloud::Guid guid) const = 0;
657 
658  [[nodiscard]] virtual QFuture<std::optional<qevercloud::SavedSearch>>
659  findSavedSearchByName(QString name) const = 0;
660 
661  [[nodiscard]] virtual QFuture<QList<qevercloud::SavedSearch>>
662  listSavedSearches(ListSavedSearchesOptions options = {}) const = 0;
663 
664  [[nodiscard]] virtual QFuture<QSet<qevercloud::Guid>> listSavedSearchGuids(
665  ListGuidsFilters filters) const = 0;
666 
667  [[nodiscard]] virtual QFuture<void> expungeSavedSearchByLocalId(
668  QString savedSearchLocalId) = 0;
669 
670  [[nodiscard]] virtual QFuture<void> expungeSavedSearchByGuid(
671  qevercloud::Guid guid) = 0;
672 
673  // Synchronization API
674  [[nodiscard]] virtual QFuture<qint32> highestUpdateSequenceNumber(
675  HighestUsnOption option) const = 0;
676 
677  [[nodiscard]] virtual QFuture<qint32> highestUpdateSequenceNumber(
678  qevercloud::Guid linkedNotebookGuid) const = 0;
679 
686  [[nodiscard]] virtual ILocalStorageNotifier * notifier() const = 0;
687 };
688 
689 [[nodiscard]] QUENTIER_EXPORT bool operator==(
690  const ILocalStorage::ListObjectsFilters & lhs,
691  const ILocalStorage::ListObjectsFilters & rhs) noexcept;
692 
693 [[nodiscard]] QUENTIER_EXPORT bool operator==(
694  const ILocalStorage::ListOptionsBase & lhs,
695  const ILocalStorage::ListOptionsBase & rhs) noexcept;
696 
697 [[nodiscard]] QUENTIER_EXPORT bool operator!=(
698  const ILocalStorage::ListOptionsBase & lhs,
699  const ILocalStorage::ListOptionsBase & rhs) noexcept;
700 
701 [[nodiscard]] QUENTIER_EXPORT bool operator==(
702  const ILocalStorage::ListNotebooksOptions & lhs,
703  const ILocalStorage::ListNotebooksOptions & rhs) noexcept;
704 
705 [[nodiscard]] QUENTIER_EXPORT bool operator!=(
706  const ILocalStorage::ListNotebooksOptions & lhs,
707  const ILocalStorage::ListNotebooksOptions & rhs) noexcept;
708 
709 [[nodiscard]] QUENTIER_EXPORT bool operator==(
710  const ILocalStorage::ListLinkedNotebooksOptions & lhs,
711  const ILocalStorage::ListLinkedNotebooksOptions & rhs) noexcept;
712 
713 [[nodiscard]] QUENTIER_EXPORT bool operator!=(
714  const ILocalStorage::ListLinkedNotebooksOptions & lhs,
715  const ILocalStorage::ListLinkedNotebooksOptions & rhs) noexcept;
716 
717 [[nodiscard]] QUENTIER_EXPORT bool operator==(
718  const ILocalStorage::ListSavedSearchesOptions & lhs,
719  const ILocalStorage::ListSavedSearchesOptions & rhs) noexcept;
720 
721 [[nodiscard]] QUENTIER_EXPORT bool operator!=(
722  const ILocalStorage::ListSavedSearchesOptions & lhs,
723  const ILocalStorage::ListSavedSearchesOptions & rhs) noexcept;
724 
725 [[nodiscard]] QUENTIER_EXPORT bool operator==(
726  const ILocalStorage::ListNotesOptions & lhs,
727  const ILocalStorage::ListNotesOptions & rhs) noexcept;
728 
729 [[nodiscard]] QUENTIER_EXPORT bool operator!=(
730  const ILocalStorage::ListNotesOptions & lhs,
731  const ILocalStorage::ListNotesOptions & rhs) noexcept;
732 
733 [[nodiscard]] QUENTIER_EXPORT bool operator==(
734  const ILocalStorage::ListTagsOptions & lhs,
735  const ILocalStorage::ListTagsOptions & rhs) noexcept;
736 
737 [[nodiscard]] QUENTIER_EXPORT bool operator!=(
738  const ILocalStorage::ListTagsOptions & lhs,
739  const ILocalStorage::ListTagsOptions & rhs) noexcept;
740 
741 [[nodiscard]] QUENTIER_EXPORT bool operator==(
742  const ILocalStorage::ListGuidsFilters & lhs,
743  const ILocalStorage::ListGuidsFilters & rhs) noexcept;
744 
745 [[nodiscard]] QUENTIER_EXPORT bool operator!=(
746  const ILocalStorage::ListGuidsFilters & lhs,
747  const ILocalStorage::ListGuidsFilters & rhs) noexcept;
748 
749 } // namespace quentier::local_storage
TagNotesRelation
Definition: ILocalStorage.h:307
Definition: local_storage/Factory.h:30
Affiliation
Definition: ILocalStorage.h:225
Definition: ILocalStorage.h:51