From 5aae7b45dc2105f253f1c19a4dc13caa3520ad72 Mon Sep 17 00:00:00 2001 From: Florian Date: Mon, 13 Jan 2025 14:54:08 +0100 Subject: [PATCH 1/2] data files setup --- Ledger/app/build.gradle.kts | 2 ++ .../main/java/at/xaxa/ledger/data/Entry.kt | 4 +++ .../at/xaxa/ledger/data/EntryRepository.kt | 4 +++ .../ledger/data/db/Category/CategoryDao.kt | 30 +++++++++++++++++++ .../data/db/Category/CategoryDatabase.kt | 28 +++++++++++++++++ .../ledger/data/db/Category/CategoryEntity.kt | 12 ++++++++ .../at/xaxa/ledger/data/db/Entry/EntryDao.kt | 29 ++++++++++++++++++ .../ledger/data/db/Entry/EntryDatabase.kt | 27 +++++++++++++++++ .../xaxa/ledger/data/db/Entry/EntryEntity.kt | 14 +++++++++ .../at/xaxa/ledger/ui/AppViewModelProvider.kt | 5 ++++ .../main/java/at/xaxa/ledger/ui/add/AddUI.kt | 2 ++ .../at/xaxa/ledger/ui/add/AddViewModel.kt | 2 ++ .../java/at/xaxa/ledger/ui/edit/EditUI.kt | 2 ++ .../at/xaxa/ledger/ui/edit/EditViewModel.kt | 2 ++ .../java/at/xaxa/ledger/ui/home/HomeUI.kt | 2 ++ .../at/xaxa/ledger/ui/home/HomeViewModel.kt | 2 ++ Ledger/gradle/libs.versions.toml | 4 +++ 17 files changed, 171 insertions(+) create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/data/Entry.kt create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/data/EntryRepository.kt create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryDao.kt create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryDatabase.kt create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryEntity.kt create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryDao.kt create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryDatabase.kt create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryEntity.kt create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/ui/AppViewModelProvider.kt create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/ui/add/AddUI.kt create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/ui/add/AddViewModel.kt create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditUI.kt create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditViewModel.kt create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/ui/home/HomeUI.kt create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/ui/home/HomeViewModel.kt diff --git a/Ledger/app/build.gradle.kts b/Ledger/app/build.gradle.kts index 0a8e726..cc2088a 100644 --- a/Ledger/app/build.gradle.kts +++ b/Ledger/app/build.gradle.kts @@ -59,6 +59,8 @@ dependencies { implementation(libs.androidx.ui.graphics) implementation(libs.androidx.ui.tooling.preview) implementation(libs.androidx.material3) + implementation(libs.androidx.room.common) + implementation(libs.androidx.room.ktx) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/Entry.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/Entry.kt new file mode 100644 index 0000000..68227df --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/data/Entry.kt @@ -0,0 +1,4 @@ +package at.xaxa.ledger.data + +class Entry { +} \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/EntryRepository.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/EntryRepository.kt new file mode 100644 index 0000000..d5bc885 --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/data/EntryRepository.kt @@ -0,0 +1,4 @@ +package at.xaxa.ledger.data + +class EntryRepository { +} \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryDao.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryDao.kt new file mode 100644 index 0000000..f75a7cf --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryDao.kt @@ -0,0 +1,30 @@ +package at.xaxa.ledger.data.db.Category + +import androidx.room.Dao +import androidx.room.Delete +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import androidx.room.Update +import at.xaxa.ledger.data.db.Entry.EntryEntity +import kotlinx.coroutines.flow.Flow + +@Dao +interface CategoryDao { + @Insert(onConflict = OnConflictStrategy.IGNORE) + suspend fun addCategory(entryEntity: CategoryEntity) + + @Update + suspend fun updateCategory(category: CharCategory) + + @Delete + suspend fun deleteCategory(category: CharCategory) + + + @Query("SELECT * FROM category WHERE _id = :id") + suspend fun findCategoryById(id: Int) : CategoryEntity + + + @Query("SELECT * FROM category") + fun getAllCategory(): Flow> +} \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryDatabase.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryDatabase.kt new file mode 100644 index 0000000..9348871 --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryDatabase.kt @@ -0,0 +1,28 @@ +package at.xaxa.ledger.data.db.Category + +import android.content.Context +import androidx.room.Database +import androidx.room.Room +import androidx.room.RoomDatabase +import at.xaxa.ledger.data.db.Entry.EntryDao + +@Database(entities = [CategoryEntity::class], version = 1) +abstract class CategoryDatabase : RoomDatabase() { + abstract fun CategoryDao(): EntryDao + + companion object { + @Volatile + private var Instance: CategoryDatabase? = null + + fun getDatabase(context: Context): CategoryDatabase { + return Instance ?: synchronized(this){ + val instance = + Room.databaseBuilder(context, CategoryDatabase::class.java, "finance_database") + .fallbackToDestructiveMigration() + .build() + Instance = instance + return instance + } + } + } +} \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryEntity.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryEntity.kt new file mode 100644 index 0000000..413dab0 --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryEntity.kt @@ -0,0 +1,12 @@ +package at.xaxa.ledger.data.db.Category + +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity(tableName = "category") +data class CategoryEntity( + @PrimaryKey(autoGenerate = true) + val _id: Int = 0, + val name: String, + val icon: Int +) \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryDao.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryDao.kt new file mode 100644 index 0000000..bcddeaf --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryDao.kt @@ -0,0 +1,29 @@ +package at.xaxa.ledger.data.db.Entry + +import androidx.room.Dao +import androidx.room.Delete +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import androidx.room.Update +import kotlinx.coroutines.flow.Flow + +@Dao +interface EntryDao { + @Insert(onConflict = OnConflictStrategy.IGNORE) + suspend fun addEntry(entryEntity: EntryEntity) + + @Update + suspend fun updateEntry(entryEntity: EntryEntity) + + @Delete + suspend fun deleteEntry(entryEntity: EntryEntity) + + + @Query("SELECT * FROM transaction WHERE _id = :id") + suspend fun findEntryById(id: Int) : EntryEntity + + + @Query("SELECT * FROM transaction") + fun getAllEntries(): Flow> +} \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryDatabase.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryDatabase.kt new file mode 100644 index 0000000..ba70eae --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryDatabase.kt @@ -0,0 +1,27 @@ +package at.xaxa.ledger.data.db.Entry + +import android.content.Context +import androidx.room.Database +import androidx.room.Room +import androidx.room.RoomDatabase + +@Database(entities = [EntryEntity::class], version = 1) +abstract class EntryDatabase : RoomDatabase() { + abstract fun EntryDao(): EntryDao + + companion object { + @Volatile + private var Instance: EntryDatabase? = null + + fun getDatabase(context: Context): EntryDatabase { + return Instance ?: synchronized(this){ + val instance = + Room.databaseBuilder(context, EntryDatabase::class.java, "finance_database") + .fallbackToDestructiveMigration() + .build() + Instance = instance + return instance + } + } + } +} \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryEntity.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryEntity.kt new file mode 100644 index 0000000..f8d2614 --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryEntity.kt @@ -0,0 +1,14 @@ +package at.xaxa.ledger.data.db.Entry + +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity(tableName = "transaction") +data class EntryEntity( + @PrimaryKey(autoGenerate = true) + val _id: Int = 0, + val name: String, + val amount: Float, + val date: Long, + val category: Int +) \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/AppViewModelProvider.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/AppViewModelProvider.kt new file mode 100644 index 0000000..51c31cc --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/AppViewModelProvider.kt @@ -0,0 +1,5 @@ +package at.xaxa.ledger.ui + +object AppViewModelProvider { + +} \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/add/AddUI.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/add/AddUI.kt new file mode 100644 index 0000000..bea04de --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/add/AddUI.kt @@ -0,0 +1,2 @@ +package at.xaxa.ledger.ui.add + diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/add/AddViewModel.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/add/AddViewModel.kt new file mode 100644 index 0000000..bea04de --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/add/AddViewModel.kt @@ -0,0 +1,2 @@ +package at.xaxa.ledger.ui.add + diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditUI.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditUI.kt new file mode 100644 index 0000000..772c30d --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditUI.kt @@ -0,0 +1,2 @@ +package at.xaxa.ledger.ui.edit + diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditViewModel.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditViewModel.kt new file mode 100644 index 0000000..772c30d --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditViewModel.kt @@ -0,0 +1,2 @@ +package at.xaxa.ledger.ui.edit + diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/home/HomeUI.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/home/HomeUI.kt new file mode 100644 index 0000000..1928f38 --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/home/HomeUI.kt @@ -0,0 +1,2 @@ +package at.xaxa.ledger.ui.home + diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/home/HomeViewModel.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/home/HomeViewModel.kt new file mode 100644 index 0000000..1928f38 --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/home/HomeViewModel.kt @@ -0,0 +1,2 @@ +package at.xaxa.ledger.ui.home + diff --git a/Ledger/gradle/libs.versions.toml b/Ledger/gradle/libs.versions.toml index 4b06795..426c4de 100644 --- a/Ledger/gradle/libs.versions.toml +++ b/Ledger/gradle/libs.versions.toml @@ -8,6 +8,8 @@ espressoCore = "3.6.1" lifecycleRuntimeKtx = "2.8.7" activityCompose = "1.9.3" composeBom = "2024.04.01" +roomCommon = "2.6.1" +roomKtx = "2.6.1" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -24,6 +26,8 @@ androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-toolin androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-material3 = { group = "androidx.compose.material3", name = "material3" } +androidx-room-common = { group = "androidx.room", name = "room-common", version.ref = "roomCommon" } +androidx-room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "roomKtx" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } From c66f711a2347efb7b7ffa630306e9d62468015d1 Mon Sep 17 00:00:00 2001 From: Florian Date: Mon, 13 Jan 2025 15:55:32 +0100 Subject: [PATCH 2/2] working on data files --- .../java/at/xaxa/ledger/LedgerApplication.kt | 13 ++++++++ .../main/java/at/xaxa/ledger/data/Entry.kt | 9 +++-- .../at/xaxa/ledger/data/EntryRepository.kt | 33 ++++++++++++++++++- .../data/db/Category/CategoryDatabase.kt | 28 ---------------- .../ledger/data/db/Category/CategoryEntity.kt | 2 +- .../xaxa/ledger/data/db/DatabaseInstance.kt | 20 +++++++++++ .../at/xaxa/ledger/data/db/Entry/EntryDao.kt | 29 ---------------- .../ledger/data/db/Entry/EntryDatabase.kt | 27 --------------- .../xaxa/ledger/data/db/Entry/EntryEntity.kt | 2 +- .../{Category/CategoryDao.kt => LedgerDao.kt} | 26 +++++++++++++-- .../at/xaxa/ledger/data/db/LedgerDatabase.kt | 12 +++++++ 11 files changed, 109 insertions(+), 92 deletions(-) create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/LedgerApplication.kt delete mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryDatabase.kt create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/data/db/DatabaseInstance.kt delete mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryDao.kt delete mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryDatabase.kt rename Ledger/app/src/main/java/at/xaxa/ledger/data/db/{Category/CategoryDao.kt => LedgerDao.kt} (56%) create mode 100644 Ledger/app/src/main/java/at/xaxa/ledger/data/db/LedgerDatabase.kt diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/LedgerApplication.kt b/Ledger/app/src/main/java/at/xaxa/ledger/LedgerApplication.kt new file mode 100644 index 0000000..ac08f41 --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/LedgerApplication.kt @@ -0,0 +1,13 @@ +package at.xaxa.ledger + +import android.app.Application +import at.xaxa.ledger.data.EntryRepository +import at.xaxa.ledger.data.db.LedgerDatabase + +class LedgerApplication : Application(){ + val entryRepository by lazy { + EntryRepository( + DatabaseInstance.getDatabase(this).LedgerDao() + ) + } +} \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/Entry.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/Entry.kt index 68227df..8b65621 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/data/Entry.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/data/Entry.kt @@ -1,4 +1,9 @@ package at.xaxa.ledger.data -class Entry { -} \ No newline at end of file +class Entry ( + val id: Int, + val name: String, + val amount: Float, + val date: Long, + val categoryName: Int +) \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/EntryRepository.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/EntryRepository.kt index d5bc885..27b5128 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/data/EntryRepository.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/data/EntryRepository.kt @@ -1,4 +1,35 @@ package at.xaxa.ledger.data -class EntryRepository { +import at.xaxa.ledger.data.db.Entry.EntryEntity +import at.xaxa.ledger.data.db.LedgerDao +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map + + +class EntryRepository(private val ledgerDao: LedgerDao){ + + + fun getAllEntries(): Flow> { + return ledgerDao.getAllEntries().map { + it.map {entry -> Entry(entry._id, entry.name, entry.amount, entry.date, entry.categoryName) } + } + } + + suspend fun findEntryById(id: Int): Entry { + val entry = LedgerDao.findEntryById(id) + return Entry( + entry._id, entry.name, entry.amount, entry.date, entry.categoryName + ) + } + suspend fun insertEntry(entry: Entry) { + LedgerDao.addEntry(EntryEntity(_id=0, entry.name, entry.amount, entry.date, entry.categoryName)) + } + + suspend fun updateEntry(entry: Entry) { + LedgerDao.updateEntry(EntryEntity(entry.id, entry.name, entry.amount, entry.date, entry.categoryName)) + } + suspend fun deletePokemon(entry: Entry) { + LedgerDao.deleteEntry(EntryEntity(_id = entry.id, entry.name, entry.amount, entry.date, entry.categoryName)) + } + } \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryDatabase.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryDatabase.kt deleted file mode 100644 index 9348871..0000000 --- a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryDatabase.kt +++ /dev/null @@ -1,28 +0,0 @@ -package at.xaxa.ledger.data.db.Category - -import android.content.Context -import androidx.room.Database -import androidx.room.Room -import androidx.room.RoomDatabase -import at.xaxa.ledger.data.db.Entry.EntryDao - -@Database(entities = [CategoryEntity::class], version = 1) -abstract class CategoryDatabase : RoomDatabase() { - abstract fun CategoryDao(): EntryDao - - companion object { - @Volatile - private var Instance: CategoryDatabase? = null - - fun getDatabase(context: Context): CategoryDatabase { - return Instance ?: synchronized(this){ - val instance = - Room.databaseBuilder(context, CategoryDatabase::class.java, "finance_database") - .fallbackToDestructiveMigration() - .build() - Instance = instance - return instance - } - } - } -} \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryEntity.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryEntity.kt index 413dab0..d1aed3c 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryEntity.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryEntity.kt @@ -7,6 +7,6 @@ import androidx.room.PrimaryKey data class CategoryEntity( @PrimaryKey(autoGenerate = true) val _id: Int = 0, - val name: String, + val categoryname: String, val icon: Int ) \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/DatabaseInstance.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/DatabaseInstance.kt new file mode 100644 index 0000000..2ca0847 --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/DatabaseInstance.kt @@ -0,0 +1,20 @@ +import android.content.Context +import androidx.room.Room +import at.xaxa.ledger.data.db.LedgerDatabase + +object DatabaseInstance { + @Volatile + private var INSTANCE: LedgerDatabase? = null + + fun getDatabase(context: Context): LedgerDatabase { + return INSTANCE ?: synchronized(this) { + val instance = Room.databaseBuilder( + context.applicationContext, + LedgerDatabase::class.java, + "ledger_database" + ).build() + INSTANCE = instance + instance + } + } +} \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryDao.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryDao.kt deleted file mode 100644 index bcddeaf..0000000 --- a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryDao.kt +++ /dev/null @@ -1,29 +0,0 @@ -package at.xaxa.ledger.data.db.Entry - -import androidx.room.Dao -import androidx.room.Delete -import androidx.room.Insert -import androidx.room.OnConflictStrategy -import androidx.room.Query -import androidx.room.Update -import kotlinx.coroutines.flow.Flow - -@Dao -interface EntryDao { - @Insert(onConflict = OnConflictStrategy.IGNORE) - suspend fun addEntry(entryEntity: EntryEntity) - - @Update - suspend fun updateEntry(entryEntity: EntryEntity) - - @Delete - suspend fun deleteEntry(entryEntity: EntryEntity) - - - @Query("SELECT * FROM transaction WHERE _id = :id") - suspend fun findEntryById(id: Int) : EntryEntity - - - @Query("SELECT * FROM transaction") - fun getAllEntries(): Flow> -} \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryDatabase.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryDatabase.kt deleted file mode 100644 index ba70eae..0000000 --- a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryDatabase.kt +++ /dev/null @@ -1,27 +0,0 @@ -package at.xaxa.ledger.data.db.Entry - -import android.content.Context -import androidx.room.Database -import androidx.room.Room -import androidx.room.RoomDatabase - -@Database(entities = [EntryEntity::class], version = 1) -abstract class EntryDatabase : RoomDatabase() { - abstract fun EntryDao(): EntryDao - - companion object { - @Volatile - private var Instance: EntryDatabase? = null - - fun getDatabase(context: Context): EntryDatabase { - return Instance ?: synchronized(this){ - val instance = - Room.databaseBuilder(context, EntryDatabase::class.java, "finance_database") - .fallbackToDestructiveMigration() - .build() - Instance = instance - return instance - } - } - } -} \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryEntity.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryEntity.kt index f8d2614..aaa68c2 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryEntity.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Entry/EntryEntity.kt @@ -10,5 +10,5 @@ data class EntryEntity( val name: String, val amount: Float, val date: Long, - val category: Int + val categoryName: Int ) \ No newline at end of file diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryDao.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/LedgerDao.kt similarity index 56% rename from Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryDao.kt rename to Ledger/app/src/main/java/at/xaxa/ledger/data/db/LedgerDao.kt index f75a7cf..de68f4c 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/Category/CategoryDao.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/LedgerDao.kt @@ -1,4 +1,4 @@ -package at.xaxa.ledger.data.db.Category +package at.xaxa.ledger.data.db import androidx.room.Dao import androidx.room.Delete @@ -6,25 +6,45 @@ import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query import androidx.room.Update +import at.xaxa.ledger.data.db.Category.CategoryEntity import at.xaxa.ledger.data.db.Entry.EntryEntity import kotlinx.coroutines.flow.Flow @Dao -interface CategoryDao { +interface LedgerDao { @Insert(onConflict = OnConflictStrategy.IGNORE) suspend fun addCategory(entryEntity: CategoryEntity) + @Insert(onConflict = OnConflictStrategy.IGNORE) + suspend fun addEntry(entryEntity: EntryEntity) + @Update suspend fun updateCategory(category: CharCategory) + @Update + suspend fun updateEntry(entryEntity: EntryEntity) + + @Delete suspend fun deleteCategory(category: CharCategory) + @Delete + suspend fun deleteEntry(entryEntity: EntryEntity) + + @Query("SELECT * FROM category WHERE _id = :id") suspend fun findCategoryById(id: Int) : CategoryEntity @Query("SELECT * FROM category") fun getAllCategory(): Flow> -} \ No newline at end of file + + + @Query("SELECT * FROM transaction WHERE _id = :id") + suspend fun findEntryById(id: Int) : EntryEntity + + + @Query("SELECT * FROM transaction") + fun getAllEntries(): Flow> +} diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/db/LedgerDatabase.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/LedgerDatabase.kt new file mode 100644 index 0000000..f3744fd --- /dev/null +++ b/Ledger/app/src/main/java/at/xaxa/ledger/data/db/LedgerDatabase.kt @@ -0,0 +1,12 @@ +package at.xaxa.ledger.data.db + +import androidx.room.Database +import androidx.room.RoomDatabase +import at.xaxa.ledger.data.db.Category.CategoryEntity +import at.xaxa.ledger.data.db.Entry.EntryEntity + +@Database(entities = [EntryEntity::class, CategoryEntity::class], version = 1, exportSchema = false) +abstract class LedgerDatabase : RoomDatabase() { + abstract fun entryDao(): EntryDao + abstract fun categoryDao(): CategoryDao +} \ No newline at end of file