objectbox / objectbox/objectbox-java
Support Kotlin inline classes for ids
Personne n'a encore pris cette issue.
- Langage dominant
- Java
- Étoiles
- 4.6k
- Forks
- 311
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
Inline classes are a good way to add compile time type safety to database queries. They would prevent error caused by querying a box with the wrong id type.
@Entity
data class EntityA(
val str: String,
val id: EntityAId
)
inline class EntityAId(val value: Long)
@Entity
data class EntityB(
val str: String,
val id: EntityBId
)
inline class EntityBId(val value: Long)
val unsafeId: Long = getSomeId() //returns an id meant for EntityA
boxStore.boxFor<EntityB>()[unsafeId] //Runtime error
val safeId: EntityAId = getSomeId()
boxStore.boxFor<EntityB>()[safeId] //Compile time error
And the unsafe call only crashes if you're lucky, other times it might just seem like the database is returning garbage data, since you queried it with the wrong ids.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par les exemples Kotlin utilisant des inline classes telles que EntityAId et EntityBId, puis suivez l’appel boxStore.boxFor()[id]. C’est terminé lorsque les IDs de inline classes préservent la séparation à la compilation entre les types d’ID des entités et rejettent à la compilation un ID du mauvais type.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- kotlin
- Domaine
- databases
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 30/100