Skip to content

Instantly share code, notes, and snippets.

@makiftutuncu
Created October 10, 2016 14:06
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 makiftutuncu/a19fb858d766df8838112a8fec5b0f70 to your computer and use it in GitHub Desktop.
Save makiftutuncu/a19fb858d766df8838112a8fec5b0f70 to your computer and use it in GitHub Desktop.
Model base and it's corresponding database access singleton for Play Framework 2.4+ using Errors
import javax.inject.Singleton
import com.mehmetakiftutuncu.errors.{Errors, Maybe}
trait Model {
val id: String
}
trait ModelSingleton[M <: Model] {
def get(id: String): Maybe[Option[M]]
def getAll: Maybe[List[M]]
def create(m: M): Errors
def insertOrUpdate(m: M): Errors
def update(m: M): Errors
def delete(id: String): Errors
def delete(m: M): Errors = delete(m.id)
}
case class PersonModel(id: String, name: String, age: Int) extends Model
@Singleton class Person extends ModelSingleton[PersonModel] {
override def get(id: String): Maybe[Option[Person]] = ???
override def getAll: Maybe[List[Person]] = ???
override def create(person: Person): Errors = ???
override def insertOrUpdate(person: Person): Errors = ???
override def update(person: Person): Errors = ???
override def delete(id: String): Errors = ???
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment