Skip to content

Instantly share code, notes, and snippets.

@kibotu
Created June 13, 2019 13:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kibotu/b3d595e4b6bc970b925cdda2b5c8b10f to your computer and use it in GitHub Desktop.
Save kibotu/b3d595e4b6bc970b925cdda2b5c8b10f to your computer and use it in GitHub Desktop.
Generic Repository Interface
/**
* Default interface for DAOs.
*/
interface DataSource<T> {
fun all(): List<T>
fun readById(id: String): T
fun insertOrUpdate(item: T)
fun insertOrUpdate(items: List<T>)
fun delete(item: T)
fun deleteAll()
fun delete(predicate: (T) -> Boolean)
}
import androidx.lifecycle.LiveData
/**
* Generic interface for working with [T]
*/
interface Repository<T> {
/**
* Gets all [T].
*/
suspend fun all(): LiveData<List<T>>
/**
* Gets [T] by id.
*/
suspend fun getById(id: String): LiveData<T>
/**
* Deletes [T].
*/
suspend fun delete(item: T)
/**
* Deletes [T] by predicate.
*/
suspend fun delete(predicate: (T) -> Boolean)
/**
* Updates and inserts [T].
*/
suspend fun insertOrUpdate(item: T)
/**
* Updates and inserts list of [T].
*/
suspend fun insertOrUpdate(items: List<T>)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment