# =============================================== # GROUPS # =============================================== extend type Query { groups: GroupQuery } extend type Mutation { groups: GroupMutation } # ----------------------------------------------- # QUERIES # ----------------------------------------------- type GroupQuery { list( filter: String orderBy: String ): [GroupMinimal] single( id: Int! ): Group } # ----------------------------------------------- # MUTATIONS # ----------------------------------------------- type GroupMutation { create( name: String! ): GroupResponse update( id: Int! name: String! ): DefaultResponse delete( id: Int! ): DefaultResponse assignUser( groupId: Int! userId: Int! ): DefaultResponse unassignUser( groupId: Int! userId: Int! ): DefaultResponse } # ----------------------------------------------- # TYPES # ----------------------------------------------- type GroupResponse { responseResult: ResponseStatus! group: Group } type GroupMinimal { id: Int! name: String! userCount: Int createdAt: Date! updatedAt: Date! } type Group { id: Int! name: String! rights: [Right] users: [User] createdAt: Date! updatedAt: Date! }