Skip to content

Commit fdea6c6

Browse files
not loading deleted documents from DB (#545)
1 parent 0846bb8 commit fdea6c6

6 files changed

Lines changed: 20 additions & 15 deletions

File tree

application/core/persistence_room/src/commonMain/kotlin/io/writeopia/persistence/room/WriteopiaAplicationDatabase.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ expect object AppDatabaseConstructor : RoomDatabaseConstructor<WriteopiaApplicat
4040
TokenEntity::class,
4141
WorkspaceEntity::class
4242
],
43-
version = 25,
43+
version = 26,
4444
exportSchema = false
4545
)
4646
@TypeConverters(IdListConverter::class)

backend/core/database/src/main/sqldelight/io/writeopia/sql/DocumentEntity.sq

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ LIMIT 1;
4646
selectWithContent:
4747
SELECT *
4848
FROM document_entity
49-
LEFT JOIN story_step_entity ON document_entity.id=story_step_entity.document_id
49+
INNER JOIN story_step_entity ON document_entity.id=story_step_entity.document_id
5050
WHERE deleted = FALSE
5151
ORDER BY position;
5252

plugins/writeopia_persistence_room/src/commonMain/kotlin/io/writeopia/sdk/persistence/dao/DocumentEntityDao.kt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ interface DocumentEntityDao {
5757
// The order here doesn't matter, because only one document should be returned
5858
@Query(
5959
"SELECT * FROM $DOCUMENT_ENTITY " +
60-
"LEFT JOIN $STORY_UNIT_ENTITY ON $DOCUMENT_ENTITY.id = $STORY_UNIT_ENTITY.document_id " +
61-
"WHERE $DOCUMENT_ENTITY.id = :documentId " +
60+
"JOIN $STORY_UNIT_ENTITY ON $DOCUMENT_ENTITY.id = $STORY_UNIT_ENTITY.document_id " +
61+
"WHERE $DOCUMENT_ENTITY.id = :documentId AND is_deleted = FALSE " +
6262
"ORDER BY $DOCUMENT_ENTITY.created_at, $STORY_UNIT_ENTITY.position"
6363
)
6464
suspend fun loadDocumentWithContentById(
@@ -68,8 +68,8 @@ interface DocumentEntityDao {
6868
// The order here doesn't matter, because only one document should be returned
6969
@Query(
7070
"SELECT * FROM $DOCUMENT_ENTITY " +
71-
"LEFT JOIN $STORY_UNIT_ENTITY ON $DOCUMENT_ENTITY.id = $STORY_UNIT_ENTITY.document_id " +
72-
"WHERE $DOCUMENT_ENTITY.id IN (:documentIds) " +
71+
"JOIN $STORY_UNIT_ENTITY ON $DOCUMENT_ENTITY.id = $STORY_UNIT_ENTITY.document_id " +
72+
"WHERE $DOCUMENT_ENTITY.id IN (:documentIds) AND is_deleted = FALSE " +
7373
"ORDER BY " +
7474
"CASE WHEN :orderBy = \'$TITLE\' THEN $DOCUMENT_ENTITY.title END COLLATE NOCASE ASC, " +
7575
"CASE WHEN :orderBy = \'$CREATED_AT\' THEN $DOCUMENT_ENTITY.created_at END DESC, " +
@@ -83,7 +83,7 @@ interface DocumentEntityDao {
8383

8484
@Query(
8585
"SELECT * FROM $DOCUMENT_ENTITY " +
86-
"LEFT JOIN $STORY_UNIT_ENTITY ON $DOCUMENT_ENTITY.id = $STORY_UNIT_ENTITY.document_id " +
86+
"JOIN $STORY_UNIT_ENTITY ON $DOCUMENT_ENTITY.id = $STORY_UNIT_ENTITY.document_id " +
8787
"WHERE workspace_id = :userId " +
8888
"ORDER BY " +
8989
// "CASE WHEN :orderBy = \'$TITLE\' THEN $DOCUMENT_ENTITY.title END COLLATE NOCASE ASC, " +
@@ -97,22 +97,22 @@ interface DocumentEntityDao {
9797

9898
@Query(
9999
"SELECT * FROM $DOCUMENT_ENTITY " +
100-
"LEFT JOIN $STORY_UNIT_ENTITY ON $DOCUMENT_ENTITY.id = $STORY_UNIT_ENTITY.document_id " +
101-
"WHERE workspace_id = :userId " +
100+
"JOIN $STORY_UNIT_ENTITY ON $DOCUMENT_ENTITY.id = $STORY_UNIT_ENTITY.document_id " +
101+
"WHERE workspace_id = :userId AND is_deleted = FALSE " +
102102
"ORDER BY " +
103103
// "CASE WHEN :orderBy = \'$TITLE\' THEN $DOCUMENT_ENTITY.title END COLLATE NOCASE ASC, " +
104104
// "CASE WHEN :orderBy = \'$CREATED_AT\' THEN $DOCUMENT_ENTITY.created_at END DESC, " +
105105
// "CASE WHEN :orderBy = \'$LAST_UPDATED_AT\' THEN $DOCUMENT_ENTITY.last_updated_at END DESC, " +
106106
"$STORY_UNIT_ENTITY.position"
107107
)
108-
fun listenForDocumentsWithContentForUser(
108+
fun listenForDocumentsWithContentForWorkspace(
109109
userId: String
110110
): Flow<Map<DocumentEntity, List<StoryStepEntity>>>
111111

112112
@Query(
113113
"SELECT * FROM $DOCUMENT_ENTITY " +
114-
"LEFT JOIN $STORY_UNIT_ENTITY ON $DOCUMENT_ENTITY.id = $STORY_UNIT_ENTITY.document_id " +
115-
"WHERE $DOCUMENT_ENTITY.parent_id = :parentId " +
114+
"JOIN $STORY_UNIT_ENTITY ON $DOCUMENT_ENTITY.id = $STORY_UNIT_ENTITY.document_id " +
115+
"WHERE $DOCUMENT_ENTITY.parent_id = :parentId AND is_deleted = FALSE " +
116116
"ORDER BY " +
117117
// "CASE WHEN :orderBy = \'$TITLE\' THEN $DOCUMENT_ENTITY.title END COLLATE NOCASE ASC, " +
118118
// "CASE WHEN :orderBy = \'$CREATED_AT\' THEN $DOCUMENT_ENTITY.created_at END DESC, " +
@@ -135,7 +135,7 @@ interface DocumentEntityDao {
135135
@Query(
136136
"SELECT * " +
137137
"FROM $DOCUMENT_ENTITY " +
138-
"LEFT JOIN $STORY_UNIT_ENTITY ON $DOCUMENT_ENTITY.id = $STORY_UNIT_ENTITY.document_id " +
138+
"JOIN $STORY_UNIT_ENTITY ON $DOCUMENT_ENTITY.id = $STORY_UNIT_ENTITY.document_id " +
139139
"WHERE $DOCUMENT_ENTITY.workspace_id = :workspaceId " +
140140
"ORDER BY " +
141141
"$STORY_UNIT_ENTITY.position"

plugins/writeopia_persistence_room/src/commonMain/kotlin/io/writeopia/sdk/persistence/entity/document/DocumentEntity.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import io.writeopia.sdk.models.CREATED_AT
77
import io.writeopia.sdk.models.DOCUMENT_ENTITY
88
import io.writeopia.sdk.models.FAVORITE
99
import io.writeopia.sdk.models.ICON
10+
import io.writeopia.sdk.models.IS_DELETED
1011
import io.writeopia.sdk.models.IS_LOCKED
1112
import io.writeopia.sdk.models.LAST_SYNCED_AT
1213
import io.writeopia.sdk.models.LAST_UPDATED_AT
@@ -27,6 +28,7 @@ data class DocumentEntity(
2728
@ColumnInfo(PARENT_ID) val parentId: String,
2829
@ColumnInfo(ICON) val icon: String? = null,
2930
@ColumnInfo(IS_LOCKED) val isLocked: Boolean,
31+
@ColumnInfo(IS_DELETED) val isDeleted: Boolean,
3032
) {
3133
companion object {
3234
fun createById(id: String, workspaceId: String, parentId: String): DocumentEntity {
@@ -40,7 +42,8 @@ data class DocumentEntity(
4042
workspaceId,
4143
favorite = false,
4244
parentId = parentId,
43-
isLocked = false
45+
isLocked = false,
46+
isDeleted = false
4447
)
4548
}
4649
}

plugins/writeopia_persistence_room/src/commonMain/kotlin/io/writeopia/sdk/persistence/parse/DocumentParse.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,6 @@ fun Document.toEntity() = DocumentEntity(
2727
workspaceId = workspaceId,
2828
favorite = favorite,
2929
parentId = parentId,
30-
isLocked = isLocked
30+
isLocked = isLocked,
31+
isDeleted = deleted
3132
)

writeopia_models/src/commonMain/kotlin/io/writeopia/sdk/models/DatabaseConstants.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ const val FAVORITE: String = "favorite"
1111
const val PARENT_ID: String = "parent_id"
1212
const val ICON: String = "icon"
1313
const val IS_LOCKED: String = "is_locked"
14+
const val IS_DELETED: String = "is_deleted"

0 commit comments

Comments
 (0)