Fix Supabase column serialization mapping (snake_case) for Person and PaymentRecord models to prevent resetting archived status during sync
Android Release / build (push) Canceled after 14s

This commit is contained in:
Oqba committed 2026-09-11 16:45:51 +03:30
1 parent b05c7c7521
commit a3a8448ee5
2 files changed
+21 -17

No files matched your search

@@ -1,11 +1,13 @@
@file:OptIn(kotlinx.serialization.InternalSerializationApi::class) @file:OptIn(InternalSerializationApi::class)
package com.oqba26.monthlypaymentapp.data.model package com.oqba26.monthlypaymentapp.data.model
import androidx.room.Entity import androidx.room.Entity
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
import kotlinx.serialization.InternalSerializationApi
import kotlinx.serialization.SerialName import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
import java.util.UUID import java.util.UUID
@Serializable @Serializable
@@ -14,22 +16,22 @@ data class PaymentRecord(
@PrimaryKey @PrimaryKey
@SerialName("id") val id: String = UUID.randomUUID().toString(), @SerialName("id") val id: String = UUID.randomUUID().toString(),
@SerialName("personId") val personId: String, @SerialName("person_id") val personId: String,
@SerialName("amount") val amount: Double, @SerialName("amount") val amount: Double,
@SerialName("shamsiYear") val shamsiYear: Int, @SerialName("shamsi_year") val shamsiYear: Int,
@SerialName("shamsiMonth") val shamsiMonth: Int, @SerialName("shamsi_month") val shamsiMonth: Int,
@SerialName("timestamp") val timestamp: Long = System.currentTimeMillis(), @SerialName("timestamp") val timestamp: Long = System.currentTimeMillis(),
@SerialName("description") val description: String? = "", // ⭐️ تغییر به String? برای پذیرش مقادیر null @SerialName("description") val description: String? = "",
@SerialName("createdAt") val createdAt: Long? = null, @SerialName("created_at") val createdAt: Long? = null,
@SerialName("category") val category: String = "salary", @SerialName("category") val category: String = "salary",
@kotlinx.serialization.Transient @Transient
val needsSync: Boolean = false val needsSync: Boolean = false
) )
@@ -1,11 +1,13 @@
@file:OptIn(kotlinx.serialization.InternalSerializationApi::class) @file:OptIn(InternalSerializationApi::class)
package com.oqba26.monthlypaymentapp.data.model package com.oqba26.monthlypaymentapp.data.model
import androidx.room.Entity import androidx.room.Entity
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
import kotlinx.serialization.InternalSerializationApi
import kotlinx.serialization.SerialName import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
@Serializable @Serializable
@Entity(tableName = "persons") @Entity(tableName = "persons")
@@ -15,24 +17,24 @@ data class Person(
@SerialName("name") val name: String, @SerialName("name") val name: String,
@SerialName("isArchived") val isArchived: Boolean = false, @SerialName("is_archived") val isArchived: Boolean = false,
@SerialName("displayOrder") val displayOrder: Long? = 0L, @SerialName("display_order") val displayOrder: Long? = 0L,
@SerialName("createdAt") val createdAt: Long? = 0L, @SerialName("created_at") val createdAt: Long? = 0L,
@SerialName("phoneNumber") val phoneNumber: String? = "", @SerialName("phone_number") val phoneNumber: String? = "",
@SerialName("category") val category: String = "salary", @SerialName("category") val category: String = "salary",
@SerialName("isAnonymous") val isAnonymous: Boolean = false, @SerialName("is_anonymous") val isAnonymous: Boolean = false,
@SerialName("monthlyCommitment") val monthlyCommitment: Double = 0.0, @SerialName("monthly_commitment") val monthlyCommitment: Double = 0.0,
@SerialName("startMonth") val startMonth: Int = 1, @SerialName("start_month") val startMonth: Int = 1,
@SerialName("startYear") val startYear: Int = 1403, @SerialName("start_year") val startYear: Int = 1403,
@kotlinx.serialization.Transient @Transient
val needsSync: Boolean = false val needsSync: Boolean = false
) )