Skip to content

Commit 276039a

Browse files
committedOct 11, 2024
fix: Split auto migration into 2 steps
1 parent 37dedff commit 276039a

File tree

4 files changed

+1167
-347
lines changed

4 files changed

+1167
-347
lines changed
 

‎.idea/other.xml

-329
This file was deleted.

‎app/room_schemas/com.dluvian.voyage.data.room.AppDatabase/24.json

+11-11
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"formatVersion": 1,
33
"database": {
44
"version": 24,
5-
"identityHash": "0a2de1311e427bbd04d4f0e5c80f98dd",
5+
"identityHash": "d5e800a6bbc6f66fd1a269928c6f9ab8",
66
"entities": [
77
{
88
"tableName": "mainEvent",
@@ -277,7 +277,7 @@
277277
]
278278
},
279279
{
280-
"tableName": "hashtag",
280+
"tableName": "hashtag2",
281281
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`eventId` TEXT NOT NULL, `hashtag` TEXT NOT NULL, PRIMARY KEY(`eventId`, `hashtag`), FOREIGN KEY(`eventId`) REFERENCES `mainEvent`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
282282
"fields": [
283283
{
@@ -316,7 +316,7 @@
316316
]
317317
},
318318
{
319-
"tableName": "vote",
319+
"tableName": "vote2",
320320
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `eventId` TEXT NOT NULL, `pubkey` TEXT NOT NULL, `createdAt` INTEGER NOT NULL, PRIMARY KEY(`eventId`, `pubkey`), FOREIGN KEY(`eventId`) REFERENCES `mainEvent`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
321321
"fields": [
322322
{
@@ -574,7 +574,7 @@
574574
"foreignKeys": []
575575
},
576576
{
577-
"tableName": "bookmark",
577+
"tableName": "bookmark2",
578578
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`myPubkey` TEXT NOT NULL, `eventId` TEXT NOT NULL, `createdAt` INTEGER NOT NULL, PRIMARY KEY(`eventId`), FOREIGN KEY(`myPubkey`) REFERENCES `account`(`pubkey`) ON UPDATE NO ACTION ON DELETE CASCADE )",
579579
"fields": [
580580
{
@@ -604,13 +604,13 @@
604604
},
605605
"indices": [
606606
{
607-
"name": "index_bookmark_myPubkey",
607+
"name": "index_bookmark2_myPubkey",
608608
"unique": false,
609609
"columnNames": [
610610
"myPubkey"
611611
],
612612
"orders": [],
613-
"createSql": "CREATE INDEX IF NOT EXISTS `index_bookmark_myPubkey` ON `${TABLE_NAME}` (`myPubkey`)"
613+
"createSql": "CREATE INDEX IF NOT EXISTS `index_bookmark2_myPubkey` ON `${TABLE_NAME}` (`myPubkey`)"
614614
}
615615
],
616616
"foreignKeys": [
@@ -1112,19 +1112,19 @@
11121112
},
11131113
{
11141114
"viewName": "RootPostView",
1115-
"createSql": "CREATE VIEW `${VIEW_NAME}` AS SELECT \n mainEvent.id, \n mainEvent.pubkey, \n rootPost.subject, \n mainEvent.content, \n mainEvent.createdAt, \n mainEvent.relayUrl, \n mainEvent.isMentioningMe, \n profile.name AS authorName,\n ht.min_hashtag AS myTopic,\n CASE WHEN account.pubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsOneself,\n CASE WHEN friend.friendPubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsFriend,\n CASE WHEN weboftrust.webOfTrustPubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsTrusted,\n CASE WHEN mute.mutedItem IS NOT NULL THEN 1 ELSE 0 END AS authorIsMuted,\n CASE WHEN profileSetItem.pubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsInList,\n CASE WHEN lock.pubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsLocked,\n CASE WHEN vote.eventId IS NOT NULL THEN 1 ELSE 0 END isUpvoted,\n upvotes.upvoteCount,\n legacyReplies.legacyReplyCount,\n comments.commentCount,\n (SELECT EXISTS(SELECT * FROM bookmark WHERE bookmark.eventId = mainEvent.id)) AS isBookmarked \n FROM rootPost\n JOIN mainEvent ON mainEvent.id = rootPost.eventId\n LEFT JOIN profile ON profile.pubkey = mainEvent.pubkey\n LEFT JOIN (\n SELECT DISTINCT hashtag.eventId, MIN(hashtag.hashtag) AS min_hashtag\n FROM hashtag \n JOIN topic ON hashtag.hashtag = topic.topic\n WHERE topic.myPubkey = (SELECT pubkey FROM account LIMIT 1)\n GROUP BY hashtag.eventId\n ) AS ht ON ht.eventId = mainEvent.id\n LEFT JOIN account ON account.pubkey = mainEvent.pubkey\n LEFT JOIN friend ON friend.friendPubkey = mainEvent.pubkey\n LEFT JOIN weboftrust ON weboftrust.webOfTrustPubkey = mainEvent.pubkey\n LEFT JOIN mute ON mute.mutedItem = mainEvent.pubkey AND mute.tag IS 'p'\n LEFT JOIN profileSetItem ON profileSetItem.pubkey = mainEvent.pubkey\n LEFT JOIN lock ON lock.pubkey = mainEvent.pubkey\n LEFT JOIN vote ON vote.eventId = mainEvent.id AND vote.pubkey = (SELECT pubkey FROM account LIMIT 1)\n LEFT JOIN (\n SELECT vote.eventId, COUNT(*) AS upvoteCount \n FROM vote \n GROUP BY vote.eventId\n ) AS upvotes ON upvotes.eventId = mainEvent.id\n LEFT JOIN (\n SELECT legacyReply.parentId, COUNT(*) AS legacyReplyCount \n FROM legacyReply\n GROUP BY legacyReply.parentId\n ) AS legacyReplies ON legacyReplies.parentId = mainEvent.id\n LEFT JOIN (\n SELECT comment.parentId, COUNT(*) AS commentCount \n FROM comment\n GROUP BY comment.parentId\n ) AS comments ON comments.parentId = mainEvent.id"
1115+
"createSql": "CREATE VIEW `${VIEW_NAME}` AS SELECT \n mainEvent.id, \n mainEvent.pubkey, \n rootPost.subject, \n mainEvent.content, \n mainEvent.createdAt, \n mainEvent.relayUrl, \n mainEvent.isMentioningMe, \n profile.name AS authorName,\n ht.min_hashtag AS myTopic,\n CASE WHEN account.pubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsOneself,\n CASE WHEN friend.friendPubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsFriend,\n CASE WHEN weboftrust.webOfTrustPubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsTrusted,\n CASE WHEN mute.mutedItem IS NOT NULL THEN 1 ELSE 0 END AS authorIsMuted,\n CASE WHEN profileSetItem.pubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsInList,\n CASE WHEN lock.pubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsLocked,\n CASE WHEN vote2.eventId IS NOT NULL THEN 1 ELSE 0 END isUpvoted,\n upvotes.upvoteCount,\n legacyReplies.legacyReplyCount,\n comments.commentCount,\n (SELECT EXISTS(SELECT * FROM bookmark2 WHERE bookmark2.eventId = mainEvent.id)) AS isBookmarked \n FROM rootPost\n JOIN mainEvent ON mainEvent.id = rootPost.eventId\n LEFT JOIN profile ON profile.pubkey = mainEvent.pubkey\n LEFT JOIN (\n SELECT DISTINCT hashtag2.eventId, MIN(hashtag2.hashtag) AS min_hashtag\n FROM hashtag2 \n JOIN topic ON hashtag2.hashtag = topic.topic\n WHERE topic.myPubkey = (SELECT pubkey FROM account LIMIT 1)\n GROUP BY hashtag2.eventId\n ) AS ht ON ht.eventId = mainEvent.id\n LEFT JOIN account ON account.pubkey = mainEvent.pubkey\n LEFT JOIN friend ON friend.friendPubkey = mainEvent.pubkey\n LEFT JOIN weboftrust ON weboftrust.webOfTrustPubkey = mainEvent.pubkey\n LEFT JOIN mute ON mute.mutedItem = mainEvent.pubkey AND mute.tag IS 'p'\n LEFT JOIN profileSetItem ON profileSetItem.pubkey = mainEvent.pubkey\n LEFT JOIN lock ON lock.pubkey = mainEvent.pubkey\n LEFT JOIN vote2 ON vote2.eventId = mainEvent.id AND vote2.pubkey = (SELECT pubkey FROM account LIMIT 1)\n LEFT JOIN (\n SELECT vote2.eventId, COUNT(*) AS upvoteCount \n FROM vote2 \n GROUP BY vote2.eventId\n ) AS upvotes ON upvotes.eventId = mainEvent.id\n LEFT JOIN (\n SELECT legacyReply.parentId, COUNT(*) AS legacyReplyCount \n FROM legacyReply\n GROUP BY legacyReply.parentId\n ) AS legacyReplies ON legacyReplies.parentId = mainEvent.id\n LEFT JOIN (\n SELECT comment.parentId, COUNT(*) AS commentCount \n FROM comment\n GROUP BY comment.parentId\n ) AS comments ON comments.parentId = mainEvent.id"
11161116
},
11171117
{
11181118
"viewName": "LegacyReplyView",
1119-
"createSql": "CREATE VIEW `${VIEW_NAME}` AS SELECT mainEvent.id, legacyReply.parentId, mainEvent.pubkey, mainEvent.content, mainEvent.createdAt, mainEvent.relayUrl, mainEvent.isMentioningMe, (SELECT name FROM profile WHERE profile.pubkey = mainEvent.pubkey) AS authorName, (SELECT EXISTS(SELECT * FROM account WHERE account.pubkey = mainEvent.pubkey)) AS authorIsOneself, (SELECT EXISTS(SELECT * FROM friend WHERE friend.friendPubkey = mainEvent.pubkey)) AS authorIsFriend, (SELECT EXISTS(SELECT * FROM weboftrust WHERE weboftrust.webOfTrustPubkey = mainEvent.pubkey)) AS authorIsTrusted, (SELECT EXISTS(SELECT * FROM mute WHERE mute.mutedItem = mainEvent.pubkey AND mute.tag IS 'p')) AS authorIsMuted, (SELECT EXISTS(SELECT * FROM profileSetItem WHERE profileSetItem.pubkey = mainEvent.pubkey)) AS authorIsInList, (SELECT EXISTS(SELECT * FROM lock WHERE lock.pubkey = mainEvent.pubkey)) AS authorIsLocked, (SELECT EXISTS(SELECT* FROM vote WHERE vote.eventId = mainEvent.id AND vote.pubkey = (SELECT pubkey FROM account LIMIT 1))) AS isUpvoted, (SELECT COUNT(*) FROM vote WHERE vote.eventId = mainEvent.id) AS upvoteCount, (SELECT COUNT(*) FROM legacyReply AS legacyReply2 WHERE legacyReply2.parentId = mainEvent.id) AS legacyReplyCount, (SELECT COUNT(*) FROM comment WHERE comment.parentId = mainEvent.id) AS commentCount, (SELECT EXISTS(SELECT * FROM bookmark WHERE bookmark.eventId = mainEvent.id)) AS isBookmarked FROM legacyReply JOIN mainEvent ON mainEvent.id = legacyReply.eventId"
1119+
"createSql": "CREATE VIEW `${VIEW_NAME}` AS SELECT mainEvent.id, legacyReply.parentId, mainEvent.pubkey, mainEvent.content, mainEvent.createdAt, mainEvent.relayUrl, mainEvent.isMentioningMe, (SELECT name FROM profile WHERE profile.pubkey = mainEvent.pubkey) AS authorName, (SELECT EXISTS(SELECT * FROM account WHERE account.pubkey = mainEvent.pubkey)) AS authorIsOneself, (SELECT EXISTS(SELECT * FROM friend WHERE friend.friendPubkey = mainEvent.pubkey)) AS authorIsFriend, (SELECT EXISTS(SELECT * FROM weboftrust WHERE weboftrust.webOfTrustPubkey = mainEvent.pubkey)) AS authorIsTrusted, (SELECT EXISTS(SELECT * FROM mute WHERE mute.mutedItem = mainEvent.pubkey AND mute.tag IS 'p')) AS authorIsMuted, (SELECT EXISTS(SELECT * FROM profileSetItem WHERE profileSetItem.pubkey = mainEvent.pubkey)) AS authorIsInList, (SELECT EXISTS(SELECT * FROM lock WHERE lock.pubkey = mainEvent.pubkey)) AS authorIsLocked, (SELECT EXISTS(SELECT* FROM vote2 WHERE vote2.eventId = mainEvent.id AND vote2.pubkey = (SELECT pubkey FROM account LIMIT 1))) AS isUpvoted, (SELECT COUNT(*) FROM vote2 WHERE vote2.eventId = mainEvent.id) AS upvoteCount, (SELECT COUNT(*) FROM legacyReply AS legacyReply2 WHERE legacyReply2.parentId = mainEvent.id) AS legacyReplyCount, (SELECT COUNT(*) FROM comment WHERE comment.parentId = mainEvent.id) AS commentCount, (SELECT EXISTS(SELECT * FROM bookmark2 WHERE bookmark2.eventId = mainEvent.id)) AS isBookmarked FROM legacyReply JOIN mainEvent ON mainEvent.id = legacyReply.eventId"
11201120
},
11211121
{
11221122
"viewName": "CommentView",
1123-
"createSql": "CREATE VIEW `${VIEW_NAME}` AS SELECT mainEvent.id, comment.parentId, comment.parentKind, mainEvent.pubkey, mainEvent.content, mainEvent.createdAt, mainEvent.relayUrl, mainEvent.isMentioningMe, (SELECT name FROM profile WHERE profile.pubkey = mainEvent.pubkey) AS authorName, (SELECT EXISTS(SELECT * FROM account WHERE account.pubkey = mainEvent.pubkey)) AS authorIsOneself, (SELECT EXISTS(SELECT * FROM friend WHERE friend.friendPubkey = mainEvent.pubkey)) AS authorIsFriend, (SELECT EXISTS(SELECT * FROM weboftrust WHERE weboftrust.webOfTrustPubkey = mainEvent.pubkey)) AS authorIsTrusted, (SELECT EXISTS(SELECT * FROM mute WHERE mute.mutedItem = mainEvent.pubkey AND mute.tag IS 'p')) AS authorIsMuted, (SELECT EXISTS(SELECT * FROM profileSetItem WHERE profileSetItem.pubkey = mainEvent.pubkey)) AS authorIsInList, (SELECT EXISTS(SELECT * FROM lock WHERE lock.pubkey = mainEvent.pubkey)) AS authorIsLocked, (SELECT EXISTS(SELECT* FROM vote WHERE vote.eventId = mainEvent.id AND vote.pubkey = (SELECT pubkey FROM account LIMIT 1))) AS isUpvoted, (SELECT COUNT(*) FROM vote WHERE vote.eventId = mainEvent.id) AS upvoteCount, (SELECT COUNT(*) FROM comment AS comment2 WHERE comment2.parentId = mainEvent.id) AS replyCount, (SELECT EXISTS(SELECT * FROM bookmark WHERE bookmark.eventId = mainEvent.id)) AS isBookmarked FROM comment JOIN mainEvent ON mainEvent.id = comment.eventId"
1123+
"createSql": "CREATE VIEW `${VIEW_NAME}` AS SELECT mainEvent.id, comment.parentId, comment.parentKind, mainEvent.pubkey, mainEvent.content, mainEvent.createdAt, mainEvent.relayUrl, mainEvent.isMentioningMe, (SELECT name FROM profile WHERE profile.pubkey = mainEvent.pubkey) AS authorName, (SELECT EXISTS(SELECT * FROM account WHERE account.pubkey = mainEvent.pubkey)) AS authorIsOneself, (SELECT EXISTS(SELECT * FROM friend WHERE friend.friendPubkey = mainEvent.pubkey)) AS authorIsFriend, (SELECT EXISTS(SELECT * FROM weboftrust WHERE weboftrust.webOfTrustPubkey = mainEvent.pubkey)) AS authorIsTrusted, (SELECT EXISTS(SELECT * FROM mute WHERE mute.mutedItem = mainEvent.pubkey AND mute.tag IS 'p')) AS authorIsMuted, (SELECT EXISTS(SELECT * FROM profileSetItem WHERE profileSetItem.pubkey = mainEvent.pubkey)) AS authorIsInList, (SELECT EXISTS(SELECT * FROM lock WHERE lock.pubkey = mainEvent.pubkey)) AS authorIsLocked, (SELECT EXISTS(SELECT* FROM vote2 WHERE vote2.eventId = mainEvent.id AND vote2.pubkey = (SELECT pubkey FROM account LIMIT 1))) AS isUpvoted, (SELECT COUNT(*) FROM vote2 WHERE vote2.eventId = mainEvent.id) AS upvoteCount, (SELECT COUNT(*) FROM comment AS comment2 WHERE comment2.parentId = mainEvent.id) AS replyCount, (SELECT EXISTS(SELECT * FROM bookmark2 WHERE bookmark2.eventId = mainEvent.id)) AS isBookmarked FROM comment JOIN mainEvent ON mainEvent.id = comment.eventId"
11241124
},
11251125
{
11261126
"viewName": "CrossPostView",
1127-
"createSql": "CREATE VIEW `${VIEW_NAME}` AS SELECT \n mainEvent.id, \n mainEvent.pubkey, \n crossPost.crossPostedId, \n mainEvent.createdAt, \n rootPost.subject AS crossPostedSubject, \n crossPostedEvent.content AS crossPostedContent, \n crossPostedEvent.relayUrl AS crossPostedRelayUrl, \n crossPostedEvent.pubkey AS crossPostedPubkey, \n profile.name AS authorName,\n cross_posted_profile.name AS crossPostedAuthorName,\n ht.min_hashtag AS myTopic,\n CASE WHEN account.pubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsOneself,\n CASE WHEN friend.friendPubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsFriend,\n CASE WHEN weboftrust.webOfTrustPubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsTrusted,\n CASE WHEN mute.mutedItem IS NOT NULL THEN 1 ELSE 0 END AS authorIsMuted,\n CASE WHEN profileSetItem.pubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsInList,\n CASE WHEN lock.pubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsLocked,\n CASE WHEN vote.eventId IS NOT NULL THEN 1 ELSE 0 END crossPostedIsUpvoted,\n upvotes.upvoteCount AS crossPostedUpvoteCount,\n legacyReplies.legacyReplyCount AS crossPostedLegacyReplyCount,\n comments.commentCount AS crossPostedCommentCount,\n CASE WHEN cross_posted_account.pubkey IS NOT NULL THEN 1 ELSE 0 END AS crossPostedAuthorIsOneself,\n CASE WHEN cross_posted_friend.friendPubkey IS NOT NULL THEN 1 ELSE 0 END AS crossPostedAuthorIsFriend,\n CASE WHEN cross_posted_wot.webOfTrustPubkey IS NOT NULL THEN 1 ELSE 0 END AS crossPostedAuthorIsTrusted,\n CASE WHEN cross_posted_mute.mutedItem IS NOT NULL THEN 1 ELSE 0 END AS crossPostedAuthorIsMuted,\n CASE WHEN cross_posted_profile_set_item.pubkey IS NOT NULL THEN 1 ELSE 0 END AS crossPostedAuthorIsInList,\n CASE WHEN cross_posted_lock.pubkey IS NOT NULL THEN 1 ELSE 0 END AS crossPostedAuthorIsLocked,\n (SELECT EXISTS(SELECT * FROM bookmark WHERE bookmark.eventId = crossPost.crossPostedId)) AS crossPostedIsBookmarked \n FROM crossPost\n JOIN mainEvent ON crossPost.eventId = mainEvent.id\n JOIN mainEvent AS crossPostedEvent ON crossPost.crossPostedId = crossPostedEvent.id\n LEFT JOIN profile ON profile.pubkey = mainEvent.pubkey\n LEFT JOIN profile AS cross_posted_profile ON cross_posted_profile.pubkey = crossPostedEvent.pubkey\n LEFT JOIN rootPost ON rootPost.eventId = crossPost.crossPostedId\n LEFT JOIN (\n SELECT DISTINCT hashtag.eventId, MIN(hashtag.hashtag) AS min_hashtag\n FROM hashtag \n JOIN topic ON hashtag.hashtag = topic.topic\n WHERE topic.myPubkey = (SELECT pubkey FROM account LIMIT 1)\n GROUP BY hashtag.eventId\n ) AS ht ON ht.eventId = mainEvent.id\n LEFT JOIN (\n SELECT legacyReply.parentId, COUNT(*) AS legacyReplyCount \n FROM legacyReply\n GROUP BY legacyReply.parentId\n ) AS legacyReplies ON legacyReplies.parentId = crossPost.crossPostedId\n LEFT JOIN (\n SELECT comment.parentId, COUNT(*) AS commentCount \n FROM comment\n GROUP BY comment.parentId\n ) AS comments ON comments.parentId = crossPost.crossPostedId\n LEFT JOIN account ON account.pubkey = mainEvent.pubkey\n LEFT JOIN friend ON friend.friendPubkey = mainEvent.pubkey\n LEFT JOIN weboftrust ON weboftrust.webOfTrustPubkey = mainEvent.pubkey\n LEFT JOIN mute ON mute.mutedItem = mainEvent.pubkey AND mute.tag IS 'p'\n LEFT JOIN profileSetItem ON profileSetItem.pubkey = mainEvent.pubkey\n LEFT JOIN lock ON lock.pubkey = mainEvent.pubkey\n LEFT JOIN vote ON vote.eventId = crossPost.crossPostedId AND vote.pubkey = (SELECT pubkey FROM account LIMIT 1)\n LEFT JOIN (\n SELECT vote.eventId, COUNT(*) AS upvoteCount \n FROM vote \n GROUP BY vote.eventId\n ) AS upvotes ON upvotes.eventId = crossPost.crossPostedId\n LEFT JOIN account AS cross_posted_account ON cross_posted_account.pubkey = crossPostedEvent.pubkey\n LEFT JOIN friend AS cross_posted_friend ON cross_posted_friend.friendPubkey = crossPostedEvent.pubkey\n LEFT JOIN weboftrust AS cross_posted_wot ON cross_posted_wot.webOfTrustPubkey = crossPostedEvent.pubkey\n LEFT JOIN mute AS cross_posted_mute ON cross_posted_mute.mutedItem = crossPostedEvent.pubkey AND cross_posted_mute.tag IS 'p'\n LEFT JOIN profileSetItem AS cross_posted_profile_set_item ON cross_posted_profile_set_item.pubkey = crossPostedEvent.pubkey\n LEFT JOIN lock AS cross_posted_lock ON cross_posted_lock.pubkey = crossPostedEvent.pubkey"
1127+
"createSql": "CREATE VIEW `${VIEW_NAME}` AS SELECT \n mainEvent.id, \n mainEvent.pubkey, \n crossPost.crossPostedId, \n mainEvent.createdAt, \n rootPost.subject AS crossPostedSubject, \n crossPostedEvent.content AS crossPostedContent, \n crossPostedEvent.relayUrl AS crossPostedRelayUrl, \n crossPostedEvent.pubkey AS crossPostedPubkey, \n profile.name AS authorName,\n cross_posted_profile.name AS crossPostedAuthorName,\n ht.min_hashtag AS myTopic,\n CASE WHEN account.pubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsOneself,\n CASE WHEN friend.friendPubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsFriend,\n CASE WHEN weboftrust.webOfTrustPubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsTrusted,\n CASE WHEN mute.mutedItem IS NOT NULL THEN 1 ELSE 0 END AS authorIsMuted,\n CASE WHEN profileSetItem.pubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsInList,\n CASE WHEN lock.pubkey IS NOT NULL THEN 1 ELSE 0 END AS authorIsLocked,\n CASE WHEN vote2.eventId IS NOT NULL THEN 1 ELSE 0 END crossPostedIsUpvoted,\n upvotes.upvoteCount AS crossPostedUpvoteCount,\n legacyReplies.legacyReplyCount AS crossPostedLegacyReplyCount,\n comments.commentCount AS crossPostedCommentCount,\n CASE WHEN cross_posted_account.pubkey IS NOT NULL THEN 1 ELSE 0 END AS crossPostedAuthorIsOneself,\n CASE WHEN cross_posted_friend.friendPubkey IS NOT NULL THEN 1 ELSE 0 END AS crossPostedAuthorIsFriend,\n CASE WHEN cross_posted_wot.webOfTrustPubkey IS NOT NULL THEN 1 ELSE 0 END AS crossPostedAuthorIsTrusted,\n CASE WHEN cross_posted_mute.mutedItem IS NOT NULL THEN 1 ELSE 0 END AS crossPostedAuthorIsMuted,\n CASE WHEN cross_posted_profile_set_item.pubkey IS NOT NULL THEN 1 ELSE 0 END AS crossPostedAuthorIsInList,\n CASE WHEN cross_posted_lock.pubkey IS NOT NULL THEN 1 ELSE 0 END AS crossPostedAuthorIsLocked,\n (SELECT EXISTS(SELECT * FROM bookmark2 WHERE bookmark2.eventId = crossPost.crossPostedId)) AS crossPostedIsBookmarked \n FROM crossPost\n JOIN mainEvent ON crossPost.eventId = mainEvent.id\n JOIN mainEvent AS crossPostedEvent ON crossPost.crossPostedId = crossPostedEvent.id\n LEFT JOIN profile ON profile.pubkey = mainEvent.pubkey\n LEFT JOIN profile AS cross_posted_profile ON cross_posted_profile.pubkey = crossPostedEvent.pubkey\n LEFT JOIN rootPost ON rootPost.eventId = crossPost.crossPostedId\n LEFT JOIN (\n SELECT DISTINCT hashtag2.eventId, MIN(hashtag2.hashtag) AS min_hashtag\n FROM hashtag2 \n JOIN topic ON hashtag2.hashtag = topic.topic\n WHERE topic.myPubkey = (SELECT pubkey FROM account LIMIT 1)\n GROUP BY hashtag2.eventId\n ) AS ht ON ht.eventId = mainEvent.id\n LEFT JOIN (\n SELECT legacyReply.parentId, COUNT(*) AS legacyReplyCount \n FROM legacyReply\n GROUP BY legacyReply.parentId\n ) AS legacyReplies ON legacyReplies.parentId = crossPost.crossPostedId\n LEFT JOIN (\n SELECT comment.parentId, COUNT(*) AS commentCount \n FROM comment\n GROUP BY comment.parentId\n ) AS comments ON comments.parentId = crossPost.crossPostedId\n LEFT JOIN account ON account.pubkey = mainEvent.pubkey\n LEFT JOIN friend ON friend.friendPubkey = mainEvent.pubkey\n LEFT JOIN weboftrust ON weboftrust.webOfTrustPubkey = mainEvent.pubkey\n LEFT JOIN mute ON mute.mutedItem = mainEvent.pubkey AND mute.tag IS 'p'\n LEFT JOIN profileSetItem ON profileSetItem.pubkey = mainEvent.pubkey\n LEFT JOIN lock ON lock.pubkey = mainEvent.pubkey\n LEFT JOIN vote2 ON vote2.eventId = crossPost.crossPostedId AND vote2.pubkey = (SELECT pubkey FROM account LIMIT 1)\n LEFT JOIN (\n SELECT vote2.eventId, COUNT(*) AS upvoteCount \n FROM vote2 \n GROUP BY vote2.eventId\n ) AS upvotes ON upvotes.eventId = crossPost.crossPostedId\n LEFT JOIN account AS cross_posted_account ON cross_posted_account.pubkey = crossPostedEvent.pubkey\n LEFT JOIN friend AS cross_posted_friend ON cross_posted_friend.friendPubkey = crossPostedEvent.pubkey\n LEFT JOIN weboftrust AS cross_posted_wot ON cross_posted_wot.webOfTrustPubkey = crossPostedEvent.pubkey\n LEFT JOIN mute AS cross_posted_mute ON cross_posted_mute.mutedItem = crossPostedEvent.pubkey AND cross_posted_mute.tag IS 'p'\n LEFT JOIN profileSetItem AS cross_posted_profile_set_item ON cross_posted_profile_set_item.pubkey = crossPostedEvent.pubkey\n LEFT JOIN lock AS cross_posted_lock ON cross_posted_lock.pubkey = crossPostedEvent.pubkey"
11281128
},
11291129
{
11301130
"viewName": "AdvancedProfileView",
@@ -1133,7 +1133,7 @@
11331133
],
11341134
"setupQueries": [
11351135
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
1136-
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '0a2de1311e427bbd04d4f0e5c80f98dd')"
1136+
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'd5e800a6bbc6f66fd1a269928c6f9ab8')"
11371137
]
11381138
}
11391139
}

‎app/room_schemas/com.dluvian.voyage.data.room.AppDatabase/25.json

+1,139
Large diffs are not rendered by default.

‎app/src/main/java/com/dluvian/voyage/data/room/AppDatabase.kt

+17-7
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import androidx.room.AutoMigration
44
import androidx.room.Database
55
import androidx.room.DeleteColumn
66
import androidx.room.DeleteTable
7-
import androidx.room.RenameColumn
7+
import androidx.room.RenameTable
88
import androidx.room.RoomDatabase
99
import androidx.room.migration.AutoMigrationSpec
1010
import com.dluvian.voyage.data.room.dao.AccountDao
@@ -77,16 +77,25 @@ import com.dluvian.voyage.data.room.view.SimplePostView
7777
@DeleteColumn(tableName = "vote", columnName = "isPositive")
7878
class V10 : AutoMigrationSpec
7979

80-
@RenameColumn.Entries(
81-
RenameColumn(tableName = "vote", fromColumnName = "postId", toColumnName = "eventId"),
82-
RenameColumn(tableName = "hashtag", fromColumnName = "postId", toColumnName = "eventId"),
83-
RenameColumn(tableName = "bookmark", fromColumnName = "postId", toColumnName = "eventId"),
80+
81+
@DeleteTable.Entries(
82+
DeleteTable(tableName = "post"),
83+
DeleteTable(tableName = "vote"),
84+
DeleteTable(tableName = "hashtag"),
85+
DeleteTable(tableName = "bookmark"),
8486
)
85-
@DeleteTable(tableName = "post")
8687
class V24 : AutoMigrationSpec
8788

89+
@RenameTable.Entries(
90+
RenameTable(fromTableName = "post2", toTableName = "post"),
91+
RenameTable(fromTableName = "vote2", toTableName = "vote"),
92+
RenameTable(fromTableName = "hashtag2", toTableName = "hashtag"),
93+
RenameTable(fromTableName = "bookmark2", toTableName = "bookmark"),
94+
)
95+
class V25 : AutoMigrationSpec
96+
8897
@Database(
89-
version = 24,
98+
version = 25,
9099
exportSchema = true,
91100
autoMigrations = [
92101
AutoMigration(from = 1, to = 2),
@@ -112,6 +121,7 @@ class V24 : AutoMigrationSpec
112121
AutoMigration(from = 21, to = 22),
113122
AutoMigration(from = 22, to = 23),
114123
AutoMigration(from = 23, to = 24, spec = V24::class),
124+
AutoMigration(from = 24, to = 25, spec = V25::class),
115125
],
116126
entities = [
117127
// Main

0 commit comments

Comments
 (0)
Please sign in to comment.