Реализация Jetpack Compose Room @UpsertAndroid

Форум для тех, кто программирует под Android
Ответить
Гость
 Реализация Jetpack Compose Room @Upsert

Сообщение Гость »


Здесь новый разработчик, и я работаю над приложением, которое функционально завершено, за исключением одного — обновления персонажа. Пользователь может создать своего персонажа и удалить его, но пока не обновлять. Я изо всех сил пытался найти информацию об использовании Upsert для обновления информации, и я был бы в порядке, если бы мне пришлось использовать Update. На данный момент я просто не уверен, как реализовать это в своем приложении. До сих пор я использую состояния с onEvents для взаимодействия с моей базой данных, как вы можете видеть ниже. Буду признателен за любую помощь, даже указание на нужные ресурсы, где можно узнать то, что мне нужно.

Моя сущность:

@Entity класс данных Символ( valcharacterName: String, valcharacterClass: String, valcharacterLevel: Int, valcharacterKeyAbilityScore: Int, @PrimaryKey(autoGenerate = true) действительный идентификатор: Int = 0 ) Дао:

@Дао интерфейс ПерсонажДао{ @Упсерт приостановить веселье upsertCharacter (персонаж: Персонаж) @Удалить приостановить веселье deleteCharacter(персонаж: Персонаж) // Параметры сортировки, если они понадобятся позже @Query("ВЫБРАТЬ * ИЗ символа ORDER BY по имени символа COLLATE NOCASE ASC") весело getCharactersOrderedByName(): Flow } База данных

@Database( сущности = [Персонаж::класс], версия = 1 ) абстрактный класс CharacterDatabase:RoomDatabase() { абстрактное Валь Дао: ПерсонажДао } На данный момент мое мероприятие проходит примерно так...

запечатанный интерфейс CharacterEvent { объект SaveCharacter: CharacterEvent класс данных SetCharacterName(valcharacterName:String): CharacterEvent и т. д.... } В моем случае я не знаю, как это реализовать. Я бы предположил что-то вроде: объект UpdateCharacter: CharacterEvent

Наконец, моя модель представления для сохранения персонажа выглядит следующим образом:

fun onEvent(event: CharacterEvent){ когда (событие) { ПерсонажEvent.SaveCharacter -> { val имя_персонажа = состояние.значение.Имя_символа valcharacterClass = state.value.characterClass valcharacterLevel = состояние.значение.characterLevel valcharacterKeyAbilityMod = state.value.characterKeyAbilityScore if (characterName.isBlank() ||characterClass.isBlank()){ return // Уровень и мод способностей по умолчанию равны 0. } val символ = Символ( Имя персонажа = Имя персонажа, Класс персонажа = Класс персонажа, Уровень персонажа = Уровень персонажа, characterKeyAbilityScore =characterKeyAbilityMod ) viewModelScope.launch { дао.upsertCharacter(персонаж) } // Сбрасываем значения по умолчанию. _state.update { это.копия( Имя персонажа = "", класс персонажа = "", уровень персонажа = 0, characterKeyAbilityScore = 0 ) } } Я просто изо всех сил пытаюсь найти ресурсы по этому вопросу больше, чем когда-либо раньше по любому языку программирования.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»