Simple email application for Android. Original source code: https://framagit.org/dystopia-project/simple-email
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.8 KiB

  1. package eu.faircode.email;
  2. /*
  3. This file is part of Safe email.
  4. Safe email is free software: you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation, either version 3 of the License, or
  7. (at your option) any later version.
  8. NetGuard is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with NetGuard. If not, see <http://www.gnu.org/licenses/>.
  14. Copyright 2018 by Marcel Bokhorst (M66B)
  15. */
  16. import java.util.List;
  17. import androidx.lifecycle.LiveData;
  18. import androidx.room.Dao;
  19. import androidx.room.Insert;
  20. import androidx.room.Query;
  21. import androidx.room.Update;
  22. @Dao
  23. public interface DaoAccount {
  24. @Query("SELECT * FROM account WHERE synchronize = :synchronize")
  25. List<EntityAccount> getAccounts(boolean synchronize);
  26. @Query("SELECT * FROM account")
  27. LiveData<List<EntityAccount>> liveAccounts();
  28. @Query("SELECT * FROM account WHERE synchronize = :synchronize")
  29. LiveData<List<EntityAccount>> liveAccounts(boolean synchronize);
  30. @Query("SELECT * FROM account WHERE id = :id")
  31. EntityAccount getAccount(long id);
  32. @Query("SELECT * FROM account WHERE id = :id")
  33. LiveData<EntityAccount> liveAccount(long id);
  34. @Query("SELECT" +
  35. " (SELECT COUNT(account.id) FROM account WHERE synchronize) AS accounts" +
  36. ", (SELECT COUNT(operation.id) FROM operation" +
  37. " JOIN message ON message.id = operation.message" +
  38. " JOIN account ON account.id = message.account" +
  39. " WHERE synchronize) AS operations" +
  40. ", (SELECT COUNT(message.id) FROM message" +
  41. " JOIN account ON account.id = message.account" +
  42. " JOIN folder ON folder.id = message.folder" +
  43. " WHERE NOT message.ui_seen AND NOT message.ui_hide" +
  44. " AND (account.seen_until IS NULL OR message.received > account.seen_until)" +
  45. " AND folder.type = '" + EntityFolder.INBOX + "') AS unseen" +
  46. ", (SELECT COUNT(message.id) FROM message" +
  47. " JOIN folder ON folder.id = message.folder" +
  48. " WHERE NOT message.ui_seen" +
  49. " AND folder.type = '" + EntityFolder.OUTBOX + "') AS unsent")
  50. LiveData<TupleAccountStats> liveStats();
  51. @Insert
  52. long insertAccount(EntityAccount account);
  53. @Update
  54. void updateAccount(EntityAccount account);
  55. @Query("UPDATE account SET `primary` = 0")
  56. void resetPrimary();
  57. @Query("DELETE FROM account WHERE id = :id")
  58. void deleteAccount(long id);
  59. }