Skip to content

Instantly share code, notes, and snippets.

@fwbrasil
Created September 25, 2012 17:02
Show Gist options
  • Save fwbrasil/3783157 to your computer and use it in GitHub Desktop.
Save fwbrasil/3783157 to your computer and use it in GitHub Desktop.
Subtrate rest
trait Person extends Entity {
var name: String
def nameAsUpperCase =
name.toUpperCase
}
object Person {
def personsWhereNameStartsWith(string: String) =
select[Person] where (_.name like string + "%")
}
class NaturalPerson(var name: String, var motherName: String) extends Person {
def modifyNameAndMotherName(name: String, motherName: String) = {
this.name = name
this.motherName = motherName
}
}
class LegalPerson(var name: String, var director: NaturalPerson) extends Person
/*
* Tipos de requisições
* GET - Transação read-only (se tiver alguma alteração vai dar erro)
* POST - Transação não read-only (pode fazer alterações)
*
* **************
* QUERIES
* (Faz mais sentido usar GET!)
* **************
*
* Obter todas pessoas
* http://fwbrasil.net/myApp/person/all
*
* Pesquisar pessoa por atributo
* http://fwbrasil.net/myApp/person/allWhere?nome=Flavio
*
* Pesquisar pessoa por atributo aninhado
* http://fwbrasil.net/myApp/legalPerson/allWhere?director.name=Flavio
*
* Obter uma pessoa dado ID (poderia usar o allWhere)
* http://fwbrasil.net/myApp/person/c7970067-a8e3-11e1-803c-0976a061ace5-10c9871e
*
* **************
* BEHAVIORS
* (Faz mais sentido usar POST, a não ser que seja um método read-only)
* **************
*
* Chamar construtor
* http://fwbrasil.net/myApp/naturalPerson/create?name=Flavio&motherName=Jandira
*
* Chamar um método de instância
* http://fwbrasil.net/myApp/person/c7970067-a8e3-11e1-803c-0976a061ace5-10c9871e/nameAsUpperCase
*
* Chamar um método de instância (getter)
* http://fwbrasil.net/myApp/person/c7970067-a8e3-11e1-803c-0976a061ace5-10c9871e/name
*
* Chamar um método de instância (setter)
* http://fwbrasil.net/myApp/person/c7970067-a8e3-11e1-803c-0976a061ace5-10c9871e/name?value=Novo nome
*
* Chamar um método de instância (delete)
* http://fwbrasil.net/myApp/person/c7970067-a8e3-11e1-803c-0976a061ace5-10c9871e/delete
*
* Chamar um método de instância com parâmetro
* http://fwbrasil.net/myApp/person/c7970067-a8e3-11e1-803c-0976a061ace5-10c9871e/modifyNameAndMotherName?name=Novo nome&motherName=Nova mae
*
* Chamar um método de classe
* http://fwbrasil.net/myApp/person/personsWhereNameStartsWith?string=Fla
*
* Navegar em métodos (getters)
* http://fwbrasil.net/myApp/legalPerson/c7970067-a8e3-11e1-803c-0976a061ace5-10c9871e/director/name
*
* Navegar em métodos (getter e método)
* http://fwbrasil.net/myApp/legalPerson/c7970067-a8e3-11e1-803c-0976a061ace5-10c9871e/director/modifyNameAndMotherName?name=Novo nome&motherName=Nova mae
*
* **************
* OBSERVACOES
* **************
*
* As chamadas que possuem o ID da entidade podem ser feitas sem colocar o tipo no caminho. Por exemplo
* http://fwbrasil.net/myApp/person/c7970067-a8e3-11e1-803c-0976a061ace5-10c9871e/name
* Pode ser chamado como:
* http://fwbrasil.net/myApp/c7970067-a8e3-11e1-803c-0976a061ace5-10c9871e/name
* Essa forma possui um pequeno custo de performance para detectar o tipo baseado no ID
*
*
*
* Se uma entidade possui outra entidade, será retornado somente o ID! Por exemplo:
* http://fwbrasil.net/myApp/legalPerson/c7970067-a8e3-11e1-803c-0976a061ace5-10c9871e
*
* Vai retornar
* { id: c7970067-a8e3-11e1-803c-0976a061ace5-10c9871e, name: Objective, director: c909019-a8e3-11e1-803c-0976a061ace5-10c9671e
*
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment