Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -188,37 +188,28 @@ class CollectionBookmarksRepositoryImpl(
): Long? {
return when (bookmark) {
is RemoteCollectionBookmark.Page -> {
val existing = pageBookmarkQueries.value
.getBookmarkForPage(bookmark.page.toLong())
val page = bookmark.page.toLong()
if (createIfMissing) {
pageBookmarkQueries.value.insertBookmarkIfMissing(page)
}
pageBookmarkQueries.value.getBookmarkForPage(page)
.executeAsOneOrNull()
existing?.local_id
?: if (createIfMissing) {
pageBookmarkQueries.value.addNewBookmark(bookmark.page.toLong())
pageBookmarkQueries.value.getBookmarkForPage(bookmark.page.toLong())
.executeAsOneOrNull()
?.local_id
} else {
null
}
?.local_id
}
is RemoteCollectionBookmark.Ayah -> {
val existing = ayahBookmarkQueries.value
.getBookmarkForAyah(bookmark.sura.toLong(), bookmark.ayah.toLong())
val sura = bookmark.sura.toLong()
val ayah = bookmark.ayah.toLong()
if (createIfMissing) {
val ayahId = getAyahId(bookmark.sura, bookmark.ayah)
ayahBookmarkQueries.value.insertBookmarkIfMissing(
ayah_id = ayahId.toLong(),
sura = sura,
ayah = ayah
)
}
ayahBookmarkQueries.value.getBookmarkForAyah(sura, ayah)
.executeAsOneOrNull()
existing?.local_id
?: if (createIfMissing) {
val ayahId = getAyahId(bookmark.sura, bookmark.ayah)
ayahBookmarkQueries.value.addNewBookmark(
ayah_id = ayahId.toLong(),
sura = bookmark.sura.toLong(),
ayah = bookmark.ayah.toLong()
)
ayahBookmarkQueries.value.getBookmarkForAyah(bookmark.sura.toLong(), bookmark.ayah.toLong())
.executeAsOneOrNull()
?.local_id
} else {
null
}
?.local_id
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ CREATE TABLE IF NOT EXISTS ayah_bookmark(
UNIQUE(sura, ayah)
);

CREATE INDEX IF NOT EXISTS ayah_bookmark_remote_id_idx ON ayah_bookmark(remote_id);

getBookmarks:
SELECT * FROM ayah_bookmark WHERE deleted = 0 ORDER BY created_at DESC;

Expand All @@ -30,6 +32,15 @@ addNewBookmark {
WHERE sura = :sura AND ayah = :ayah;
}

insertBookmarkIfMissing {
INSERT OR IGNORE INTO ayah_bookmark (remote_id, ayah_id, sura, ayah, deleted)
VALUES (NULL, :ayah_id, :sura, :ayah, 0);
UPDATE ayah_bookmark
SET deleted = 0,
modified_at = CAST(strftime('%s', 'now') AS INTEGER) * 1000
WHERE sura = :sura AND ayah = :ayah AND deleted = 1;
}

getUnsyncedBookmarks:
SELECT * FROM ayah_bookmark WHERE remote_id IS NULL OR deleted = 1 ORDER BY created_at DESC;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ CREATE TABLE IF NOT EXISTS bookmark_collection(
FOREIGN KEY(collection_local_id) REFERENCES collection(local_id)
);

CREATE INDEX IF NOT EXISTS bookmark_collection_remote_id_idx ON bookmark_collection(remote_id);

getCollectionBookmarks:
SELECT * FROM bookmark_collection WHERE deleted = 0 ORDER BY created_at DESC;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ CREATE TABLE IF NOT EXISTS collection(
CHECK (dirty IN (0, 1))
);

CREATE INDEX IF NOT EXISTS collection_remote_id_idx ON collection(remote_id);

getCollections:
SELECT * FROM collection WHERE deleted = 0 ORDER BY created_at DESC;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ CREATE TABLE IF NOT EXISTS note(

CREATE INDEX IF NOT EXISTS note_start_ayah_idx ON note(start_ayah_id);
CREATE INDEX IF NOT EXISTS note_end_ayah_idx ON note(end_ayah_id);
CREATE INDEX IF NOT EXISTS note_remote_id_idx ON note(remote_id);

getNotes:
SELECT * FROM note WHERE deleted = 0 ORDER BY created_at DESC;
Expand Down Expand Up @@ -68,6 +69,7 @@ deleteRemoteNote:

clearLocalMutationFor {
DELETE FROM note WHERE remote_id IS NULL AND local_id = :id;
DELETE FROM note WHERE local_id = :id AND deleted = 1;
UPDATE note
SET deleted = 0,
modified_at = CAST(strftime('%s', 'now') AS INTEGER) * 1000
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ CREATE TABLE IF NOT EXISTS page_bookmark(
CHECK (deleted IN (0, 1))
);

CREATE INDEX IF NOT EXISTS page_bookmark_remote_id_idx ON page_bookmark(remote_id);

getBookmarks:
SELECT * FROM page_bookmark WHERE deleted = 0 ORDER BY created_at DESC;

Expand Down Expand Up @@ -42,6 +44,15 @@ addNewBookmark {
WHERE page = :page;
}

insertBookmarkIfMissing {
INSERT OR IGNORE INTO page_bookmark (remote_id, page, deleted)
VALUES (NULL, :page, 0);
UPDATE page_bookmark
SET deleted = 0,
modified_at = CAST(strftime('%s', 'now') AS INTEGER) * 1000
WHERE page = :page AND deleted = 1;
}

-- TODO: Rename
getUnsyncedBookmarks:
SELECT * FROM page_bookmark WHERE remote_id IS NULL OR deleted = 1 ORDER BY created_at DESC;
Expand Down