objectbox / objectbox/objectbox-java
First Class Support for Enums
Nessuno ha ancora preso questa issue.
- Lingua principale
- Java
- Stelle
- 4.6k
- Fork
- 311
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
I can see that there's limited support for enums here but this is such a huge barrier to getting started. I don't want to have to write a converter for each enum type that I use in my code.
I propose first class support for enums using the following mechanism:
This can be repeated for all the natively supported types, and should now be able to be handled internally.
interface EnumInt {
val value: Int
}
interface EnumString {
val value: String
}
inline fun <reified T> enumFromInt(value: Int?): T?
where T : EnumInt, T : Enum<T> =
value?.let { v ->
enumValues<T>().let { values ->
values.find {
v == it.value
} ?: throw IllegalArgumentException("Invalid int value: $v")
}
}
inline fun <reified T> enumFromString(value: String?): T?
where T : EnumString, T : Enum<T> =
value?.let { v ->
enumValues<T>().let { values ->
values.find {
v == it.value
} ?: throw IllegalArgumentException("Invalid string value: $v")
}
}
enum class Type(override val value: String) : EnumString {
UNKNOWN("unknown"),
IMAGE("image"),
VIDEO("video")
}
enum class Status(override val value: Int) : EnumInt {
ERROR(-3),
UNRECOVERABLE_ERROR(-2),
NONE(-1),
DOWNLOADING(1),
DOWNLOADED(2),
UPLOADING(3),
FINISHED(0)
}
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia esaminando la documentazione sui tipi personalizzati collegata nell’issue e la gestione esistente di enum e tipi personalizzati. Il lavoro è completato quando gli enum ricevono un supporto di persistenza di prima classe senza un convertitore per ogni tipo di enum, incluse le mappature proposte dei valori interi e stringa.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- kotlin
- Ambito
- databases
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100