Cleanup message & attachment files

pull/50/head
M66B 6 years ago
parent 3ef26e5e46
commit ae8eb762f8

@ -34,11 +34,16 @@ public interface DaoAttachment {
" ORDER BY sequence") " ORDER BY sequence")
LiveData<List<EntityAttachment>> liveAttachments(long id); LiveData<List<EntityAttachment>> liveAttachments(long id);
@Query("SELECT COUNT(attachment.id)" + @Query("SELECT COUNT(id)" +
" FROM attachment" + " FROM attachment" +
" WHERE message = :message") " WHERE message = :message")
int getAttachmentCount(long message); int getAttachmentCount(long message);
@Query("SELECT COUNT(id)" +
" FROM attachment" +
" WHERE id = :id")
int countAttachment(long id);
@Query("SELECT * FROM attachment" + @Query("SELECT * FROM attachment" +
" WHERE message = :message" + " WHERE message = :message" +
" ORDER BY sequence") " ORDER BY sequence")

@ -74,10 +74,20 @@ public interface DaoMessage {
" ORDER BY message.received DESC, message.sent DESC") " ORDER BY message.received DESC, message.sent DESC")
DataSource.Factory<Integer, TupleMessageEx> pagedThread(long msgid, boolean debug); DataSource.Factory<Integer, TupleMessageEx> pagedThread(long msgid, boolean debug);
@Query("SELECT * FROM message WHERE id = :id") @Query("SELECT *" +
" FROM message" +
" WHERE id = :id")
EntityMessage getMessage(long id); EntityMessage getMessage(long id);
@Query("SELECT * FROM message WHERE folder = :folder AND uid = :uid") @Query("SELECT COUNT(id)" +
" FROM message" +
" WHERE id = :id")
int countMessage(long id);
@Query("SELECT *" +
" FROM message" +
" WHERE folder = :folder" +
" AND uid = :uid")
EntityMessage getMessageByUid(long folder, long uid); EntityMessage getMessageByUid(long folder, long uid);
@Query("SELECT message.* FROM message" + @Query("SELECT message.* FROM message" +

@ -1183,6 +1183,26 @@ public class ServiceSynchronize extends LifecycleService {
Log.w(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex)); Log.w(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex));
} }
// Cleanup files
File messages = new File(getFilesDir(), "messages");
for (File file : messages.listFiles())
if (file.isFile()) {
long id = Long.parseLong(file.getName());
if (db.message().countMessage(id) == 0) {
Log.i(Helper.TAG, "Cleanup message id=" + id);
file.delete();
}
}
File attachments = new File(getFilesDir(), "attachments");
for (File file : attachments.listFiles())
if (file.isFile()) {
long id = Long.parseLong(file.getName());
if (db.attachment().countAttachment(id) == 0) {
Log.i(Helper.TAG, "Cleanup attachment id=" + id);
file.delete();
}
}
Log.w(Helper.TAG, folder.name + " statistics added=" + added + " updated=" + updated + " unchanged=" + unchanged); Log.w(Helper.TAG, folder.name + " statistics added=" + added + " updated=" + updated + " unchanged=" + unchanged);
} finally { } finally {
Log.v(Helper.TAG, folder.name + " end sync"); Log.v(Helper.TAG, folder.name + " end sync");

Loading…
Cancel
Save