Skip to content

rowi1de/graphql-reactive

Repository files navigation

Reactive Graphql Kotlin CI with Gradle, Build & Push OCI Image Release & Push Helm Charts

Simple Spring WebFlux Project (see Help.md) with:

  • Classic Annotation Based REST
  • WebFlux.Fn / coRouter REST

Kotlin

This project uses ktlint

ktlint

  • brew install ktlint
  • ktlint --apply-to-idea or ktlint --apply-to-idea-project
  • ktlint --install-git-pre-commit-hook
  • ktlint -F "src/**/*.kt" "*.kts"

Build & Run

  • Open build.gradle.kts with IntelliJ
  • Run Application via IntelliJ or ./gradlew bootRun

Graphql

Use graphiql to execute queries and browse schema or js-graphql

Query

#default value
query default {
  hello {
    greeting
    time
  }
}
#with input
query rob {
  hello(name: "Rob") {
    greeting
    time
  }
}

Note The following examples are not migrated from graphql-kotlin yet, for working examples use #811dcc2

  • Partial Results / Errors
query hello {
  hello(name: "Rob") {
    greeting
  }
  partialBroken {
    greeting
  }
}

Subscription

subscription {
  hello(name: "Rob") {
    greeting
    time
  }
}

Employee Example

subscription employees {
  employees {
    firstName
    team {
      name
    }
  }
}

mutation newEmployee {
  newEmployee(
    newEmployee: { firstName: "Tim", lastName: "Test", teamName: "Dev" }
  ) {
    firstName
    team {
      employees {
        firstName
      }
    }
  }
}

REST

API

GitHub

Actions

  • Automatically Update Dependencies self-approving Dependabot PRs

CI / CD

  • GitHub Actions + ArgoCD

CI GitHub Actions

  • See Releases for current released versions
  • See Packages for current published helm chart as OCI

CD ArgoCD App Status