From 00717b590db62e9b1d23e64caa8dd98ac9469e82 Mon Sep 17 00:00:00 2001 From: rayhanp1402 <rayhan.hanif14maulana@gmail.com> Date: Mon, 1 Apr 2024 00:09:00 +0700 Subject: [PATCH] db migration: Add 'lokasi' and 'tanggal' columns --- .../transactions/AddTransactionsFragment.kt | 4 ++- .../transactions/EditTransactionsFragment.kt | 19 ++++++++------ .../bondoyap/ui/transactions/Transactions.kt | 6 +++++ .../transactions/TransactionsRoomDatabase.kt | 25 +++++++++++++++++-- 4 files changed, 43 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/AddTransactionsFragment.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/AddTransactionsFragment.kt index 4d43062..52f6442 100644 --- a/app/src/main/java/com/example/bondoyap/ui/transactions/AddTransactionsFragment.kt +++ b/app/src/main/java/com/example/bondoyap/ui/transactions/AddTransactionsFragment.kt @@ -9,6 +9,7 @@ import android.widget.ArrayAdapter import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import com.example.bondoyap.databinding.FragmentAddTransactionsBinding +import java.util.Date class AddTransactionsFragment : Fragment() { @@ -49,7 +50,8 @@ class AddTransactionsFragment : Fragment() { val transaction: Transactions = Transactions( judul = binding.editTextJudul.text.toString(), nominal = binding.editTextNominal.text.toString().toDouble(), - isPemasukan = isPemasukan + isPemasukan = isPemasukan, + tanggal = Date().toString() ) transactionsViewModel.upsert(transaction) diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt index 9ca1bc7..1a02e75 100644 --- a/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt +++ b/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt @@ -37,6 +37,8 @@ class EditTransactionsFragment : Fragment() { ): View { _binding = FragmentEditTransactionsBinding.inflate(inflater, container, false) + var tanggal: String = "" + val pemasukan = "Pemasukan" val pengeluaran = "Pengeluaran" @@ -46,6 +48,8 @@ class EditTransactionsFragment : Fragment() { adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item) binding.spinnerKategori.adapter = adapter + binding.spinnerKategori.isEnabled = false + val transactionId: Int = arguments?.getInt("transaction_id") ?: -1 CoroutineScope(Main).launch { @@ -61,6 +65,8 @@ class EditTransactionsFragment : Fragment() { binding.spinnerKategori.setSelection(categories.indexOf(pengeluaran)) } + tanggal = originalTransaction.tanggal + } binding.buttonSimpan.setOnClickListener { @@ -73,6 +79,7 @@ class EditTransactionsFragment : Fragment() { judul = binding.editTextJudul.text.toString(), nominal = binding.editTextNominal.text.toString().toDouble(), isPemasukan = isPemasukan, + tanggal = tanggal, id = transactionId ) @@ -89,15 +96,11 @@ class EditTransactionsFragment : Fragment() { } binding.buttonHapus.setOnClickListener { - val isPemasukan: Boolean = when (binding.spinnerKategori.selectedItem.toString()) { - pemasukan -> true - else -> false - } - val transaction: Transactions = Transactions( - judul = binding.editTextJudul.text.toString(), - nominal = binding.editTextNominal.text.toString().toDouble(), - isPemasukan = isPemasukan, + judul = "", + nominal = 0.0, + isPemasukan = false, + tanggal = "", id = transactionId ) diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/Transactions.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/Transactions.kt index 152e463..c5e55dd 100644 --- a/app/src/main/java/com/example/bondoyap/ui/transactions/Transactions.kt +++ b/app/src/main/java/com/example/bondoyap/ui/transactions/Transactions.kt @@ -15,6 +15,12 @@ data class Transactions( @ColumnInfo(name = "is_pemasukan") val isPemasukan: Boolean, + @ColumnInfo(name = "tanggal") + val tanggal: String, + + @ColumnInfo(name = "lokasi") + val lokasi: String = "", + @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "id") val id: Int = 0 diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRoomDatabase.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRoomDatabase.kt index 7785d48..b5e530f 100644 --- a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRoomDatabase.kt +++ b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRoomDatabase.kt @@ -4,10 +4,12 @@ import android.content.Context import androidx.room.Database import androidx.room.Room import androidx.room.RoomDatabase +import androidx.room.migration.Migration +import androidx.sqlite.db.SupportSQLiteDatabase @Database( entities = [Transactions::class], - version = 1, + version = 2, exportSchema = false ) public abstract class TransactionsRoomDatabase: RoomDatabase() { @@ -24,10 +26,29 @@ public abstract class TransactionsRoomDatabase: RoomDatabase() { context.applicationContext, TransactionsRoomDatabase::class.java, "transactions_database" - ).build() + ).addMigrations(MIGRATION_1_2). + build() INSTANCE = instance instance } } + private val MIGRATION_1_2: Migration = object : Migration(1, 2) { + override fun migrate(db: SupportSQLiteDatabase) { + db.execSQL("CREATE TABLE IF NOT EXISTS `transactions_new` " + + "(`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " + + "`judul` TEXT NOT NULL, " + + "`nominal` REAL NOT NULL, " + + "`is_pemasukan` INTEGER NOT NULL, " + + "`tanggal` TEXT NOT NULL, " + + "`lokasi` TEXT NOT NULL)") + + db.execSQL("INSERT INTO transactions_new (id, judul, nominal, is_pemasukan) " + + "SELECT id, judul, nominal, is_pemasukan FROM transactions") + + db.execSQL("DROP TABLE transactions") + + db.execSQL("ALTER TABLE transactions_new RENAME TO transactions") + } + } } } \ No newline at end of file -- GitLab