Skip to content

Commit

Permalink
Add graphql associations #907
Browse files Browse the repository at this point in the history
  • Loading branch information
chrisala committed Feb 1, 2024
1 parent 7d64314 commit 4e804ca
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 11 deletions.
5 changes: 4 additions & 1 deletion grails-app/domain/au/org/ala/ecodata/Organisation.groovy
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
package au.org.ala.ecodata

import au.org.ala.ecodata.graphql.mappers.OrganisationGraphQLMapper
import au.org.ala.ecodata.graphql.mappers.ProjectGraphQLMapper
import org.bson.types.ObjectId
import org.springframework.validation.Errors

/**
* Represents an organisation that manages projects in fieldcapture.
* Represents an organisation that manages projects in MERIT and BioCollect.
* Allows some branding as well as grouping / ownership of projects.
*/
class Organisation {

static graphql = OrganisationGraphQLMapper.graphqlMapping()

ObjectId id
/** The hubId of the Hub in which this organisation was created */
Expand Down
4 changes: 4 additions & 0 deletions grails-app/domain/au/org/ala/ecodata/Program.groovy
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package au.org.ala.ecodata

import au.org.ala.ecodata.graphql.mappers.ProgramGraphQLMapper
import au.org.ala.ecodata.graphql.mappers.ProjectGraphQLMapper
import org.bson.types.ObjectId
import org.springframework.validation.Errors

Expand All @@ -8,6 +10,8 @@ import org.springframework.validation.Errors
*/
class Program {

static graphql = ProgramGraphQLMapper.graphqlMapping()

ObjectId id
String programId
/** The hubId of the hub in which this Program was created */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,15 @@ class ManagementUnitGraphQLMapper {

exclude("outcomes", "priorities", "config")

add("outcomes", "outcomes") {
add("muPriorities", "outcomes") {
type {
field("outcome", String)
field("priorities", "priorities"){
field("category", String)
collection(true)
}
field("category", String)
field("shortDescription", String)
collection true
}
dataFetcher { ManagementUnit mu ->
mu.outcomes
mu.priorities
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package au.org.ala.ecodata.graphql.mappers


import au.org.ala.ecodata.Program
import org.grails.gorm.graphql.entity.dsl.GraphQLMapping

class OrganisationGraphQLMapper {
static graphqlMapping() {
GraphQLMapping.lazy {
// Disable default operations, including get as we only want to expose UUIDs in the API not internal ones
operations.get.enabled false
operations.list.enabled false
operations.count.enabled false
operations.create.enabled false
operations.update.enabled false
operations.delete.enabled false

}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package au.org.ala.ecodata.graphql.mappers


import au.org.ala.ecodata.Program
import org.grails.gorm.graphql.entity.dsl.GraphQLMapping

class ProgramGraphQLMapper {
static graphqlMapping() {
GraphQLMapping.lazy {
// Disable default operations, including get as we only want to expose UUIDs in the API not internal ones
operations.get.enabled false
operations.list.enabled false
operations.count.enabled false
operations.create.enabled false
operations.update.enabled false
operations.delete.enabled false

exclude("outcomes", "priorities", "config")

add("outcomes", "outcomes") {
type {
field("outcome", String)
field("priorities", "priorities"){
field("category", String)
collection(true)
}
field("category", String)
field("shortDescription", String)
collection true
}
dataFetcher { Program program ->
program.outcomes
}
}

add("investmentPriorities", "investmentPriorities") {
type {
field("category", String)
field("priority", String)
collection(true)
}
dataFetcher { Program program ->
program.priorities
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package au.org.ala.ecodata.graphql.mappers

import au.org.ala.ecodata.Activity
import au.org.ala.ecodata.Document
import au.org.ala.ecodata.ManagementUnit
import au.org.ala.ecodata.Organisation
import au.org.ala.ecodata.Program
import au.org.ala.ecodata.Project
Expand Down Expand Up @@ -80,18 +81,24 @@ class ProjectGraphQLMapper {
}
}

add('program', [Program]) {
dataFetcher { Program program ->
add('program', Program) {
dataFetcher { Project project ->
Program.findByProgramIdAndStatusNotEqual(project.programId, Status.DELETED)
}
}

add('organisation', [Organisation]) {
dataFetcher { Organisation organisation ->
add('organisation', Organisation) {
dataFetcher { Project project ->
Organisation.findByOrganisationIdAndStatusNotEqual(project.organisationId, Status.DELETED)
}
}

add('managementUnit', ManagementUnit) {
dataFetcher { Project project ->
ManagementUnit.findByManagementUnitIdAndStatusNotEqual(project.managementUnitId, Status.DELETED)
}
}

add('sites', [Site]) {
dataFetcher { Project project ->
Site.findAllByProjectsAndStatusNotEqual(project.projectId, Status.DELETED)
Expand Down

0 comments on commit 4e804ca

Please sign in to comment.