$ grails create-domain-class demo.Vehicle
$ grails create-domain-class demo.Driver
$ grails create-domain-class demo.Make
$ grails create-domain-class demo.Model
3 Writing the Application
The React profile includes some default React sample code. Feel free to run the app as is if you want to see the sample in action.
Let’s start by creating our domain model for the application.
Now let’s edit our domain class under grails-app/domain/demo/. We’ll add some properties and the @Resource annotation.
grails-app/grails-app/domain/demo/Vehicle.groovy
package demo
import grails.rest.Resource
@Resource(uri = '/vehicle')
class Vehicle {
String name
Make make
Model model
static belongsTo = [driver: Driver]
static constraints = {
}
}
grails-app/grails-app/domain/demo/Driver.groovy
package demo
import grails.rest.Resource
@Resource(uri = '/driver')
class Driver {
String name
static hasMany = [ vehicles: Vehicle ]
static constraints = {
vehicles nullable: true
}
}
grails-app/grails-app/domain/demo/Make.groovy
package demo
import grails.rest.Resource
@Resource(uri = '/make')
class Make {
String name
static constraints = {
}
}
grails-app/grails-app/domain/demo/Model.groovy
package demo
import grails.rest.Resource
@Resource(uri = '/model')
class Model {
String name
static constraints = {
}
}
Since we’ve added the @Resource annotation to our domain classes, Grails will generate RESTful URL mappings for each of them. Let’s preload some data:
grails-app/init/demo/BootStrap.groovy
package demo
import demo.Driver
import demo.Make
import demo.Model
import demo.Vehicle
class BootStrap {
def init = { servletContext ->
log.info "Loading database..."
def driver1 = new Driver(name: "Susan").save()
def driver2 = new Driver(name: "Pedro").save()
def nissan = new Make(name: "Nissan").save()
def ford = new Make(name: "Ford").save()
def titan = new Model(name: "Titan").save()
def leaf = new Model(name: "Leaf").save()
def windstar = new Model(name: "Windstar").save()
new Vehicle(name: "Pickup", driver: driver1, make: nissan, model: titan).save()
new Vehicle(name: "Economy", driver: driver1, make: nissan, model: leaf).save()
new Vehicle(name: "Minivan", driver: driver2, make: ford, model: windstar).save()
}
def destroy = {
}
}