From a3a8448ee583d809f7736b5187a65e6032e83d47 Mon Sep 17 00:00:00 2001 From: Oqba Date: Fri, 11 Sep 2026 16:45:51 +0330 Subject: [PATCH] Fix Supabase column serialization mapping (snake_case) for Person and PaymentRecord models to prevent resetting archived status during sync --- .../data/model/PaymentRecord.kt | 16 ++++++++------ .../monthlypaymentapp/data/model/Person.kt | 22 ++++++++++--------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/oqba26/monthlypaymentapp/data/model/PaymentRecord.kt b/app/src/main/java/com/oqba26/monthlypaymentapp/data/model/PaymentRecord.kt index 04e7cb3..ede5ac8 100644 --- a/app/src/main/java/com/oqba26/monthlypaymentapp/data/model/PaymentRecord.kt +++ b/app/src/main/java/com/oqba26/monthlypaymentapp/data/model/PaymentRecord.kt @@ -1,11 +1,13 @@ -@file:OptIn(kotlinx.serialization.InternalSerializationApi::class) +@file:OptIn(InternalSerializationApi::class) package com.oqba26.monthlypaymentapp.data.model import androidx.room.Entity import androidx.room.PrimaryKey +import kotlinx.serialization.InternalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient import java.util.UUID @Serializable @@ -14,22 +16,22 @@ data class PaymentRecord( @PrimaryKey @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("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("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", - @kotlinx.serialization.Transient + @Transient val needsSync: Boolean = false ) diff --git a/app/src/main/java/com/oqba26/monthlypaymentapp/data/model/Person.kt b/app/src/main/java/com/oqba26/monthlypaymentapp/data/model/Person.kt index 32f5501..26accf8 100644 --- a/app/src/main/java/com/oqba26/monthlypaymentapp/data/model/Person.kt +++ b/app/src/main/java/com/oqba26/monthlypaymentapp/data/model/Person.kt @@ -1,11 +1,13 @@ -@file:OptIn(kotlinx.serialization.InternalSerializationApi::class) +@file:OptIn(InternalSerializationApi::class) package com.oqba26.monthlypaymentapp.data.model import androidx.room.Entity import androidx.room.PrimaryKey +import kotlinx.serialization.InternalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient @Serializable @Entity(tableName = "persons") @@ -15,24 +17,24 @@ data class Person( @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("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 )