tiktak
tiktak

Reputation: 1811

Grails: groovy subcollection

Having the following domain class:

class Message{
}

Want to get all messages with id more than offset:

def offset = params.offset
def messages = Message.list()
def subMessages = messages.findAll({offset, it ->
    it.id > offset
}.curry(offset))

What's wrong?


Upd: i understand that Message.list() can be executed as Message.list(params) but it's not important now.

Upvotes: 2

Views: 577

Answers (1)

James Allman
James Allman

Reputation: 41188

Example using a map

def params = [offset: 2]
def messages = [[id: 1], [id: 2], [id: 3], [id: 4], [id: 5]]
def subMessages = messages.findAll({ it.id > params.offset })
assert subMessages == [[id: 3], [id: 4], [id: 5]]

Integration test using a Grails domain class

(1..5).each { new Message(text: "${it}").save(failOnError: true) }
def params = [offset: "2"]
def offset = Integer.parseInt(params.offset)
def messages = Message.list()
def subMessages = messages.findAll({ it.id > offset })
assert subMessages == Message.findAllByIdGreaterThan(offset)

Upvotes: 4

Related Questions