diff --git a/app/src/main/java/come/stormborntales/notevault/data/local/AppDatabase.kt b/app/src/main/java/come/stormborntales/notevault/data/local/AppDatabase.kt index abdda36..6ee3254 100644 --- a/app/src/main/java/come/stormborntales/notevault/data/local/AppDatabase.kt +++ b/app/src/main/java/come/stormborntales/notevault/data/local/AppDatabase.kt @@ -8,8 +8,9 @@ import androidx.room.RoomDatabase import androidx.room.TypeConverters import come.stormborntales.notevault.data.local.dao.NoteDao import come.stormborntales.notevault.data.local.entity.NoteEntity +import come.stormborntales.notevault.data.local.entity.SyncTime -@Database(entities = [NoteEntity::class], version = 1) +@Database(entities = [NoteEntity::class, SyncTime::class], version = 1) @TypeConverters(UriListConverter::class) abstract class AppDatabase : RoomDatabase() { abstract fun noteDao(): NoteDao diff --git a/app/src/main/java/come/stormborntales/notevault/data/local/entity/NoteEntity.kt b/app/src/main/java/come/stormborntales/notevault/data/local/entity/NoteEntity.kt index 9be2a13..095c3f2 100644 --- a/app/src/main/java/come/stormborntales/notevault/data/local/entity/NoteEntity.kt +++ b/app/src/main/java/come/stormborntales/notevault/data/local/entity/NoteEntity.kt @@ -3,6 +3,11 @@ package come.stormborntales.notevault.data.local.entity import androidx.room.Entity import androidx.room.PrimaryKey +enum class SyncStatus { + PENDING, // Lokale Änderungen warten auf Synchronisation + SYNCHRONIZED, // Der Eintrag wurde mit dem Server synchronisiert + DELETED // Der Eintrag wurde lokal gelöscht und wartet auf Serverabgleich +} @Entity(tableName = "notes") data class NoteEntity( @PrimaryKey(autoGenerate = true) val id: Int = 0, @@ -12,5 +17,10 @@ data class NoteEntity( var year: Int?, var genre: String?, var description: String?, - val imagePreview: String + val imagePreview: String, + + val remoteId: String? = null, + val localModificationTimestamp: Long = System.currentTimeMillis(), // Zeitstempel der letzten lokalen Änderung + val syncStatus: SyncStatus = SyncStatus.PENDING // Status der Synchronisation + ) diff --git a/app/src/main/java/come/stormborntales/notevault/data/local/entity/SyncTime.kt b/app/src/main/java/come/stormborntales/notevault/data/local/entity/SyncTime.kt new file mode 100644 index 0000000..8de61ed --- /dev/null +++ b/app/src/main/java/come/stormborntales/notevault/data/local/entity/SyncTime.kt @@ -0,0 +1,8 @@ +package come.stormborntales.notevault.data.local.entity + +import androidx.room.PrimaryKey + +data class SyncTime( + @PrimaryKey val id: Long = 1, // Einziger Eintrag für das Gerät + val lastSyncTimestamp: Long = System.currentTimeMillis() // Zeitstempel des letzten Syncsy +)