Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,17 @@ class Kotlin2CodeGenTest {
"Decimal" to "java.math.BigDecimal"
)
else -> emptyMap()
}
},
typePrefix = when (testName) {
"dataClassWithPrefix" -> "Dgs"
"inputWithPrefix" -> "Dgs"
else -> ""
},
typeSuffix = when (testName) {
"dataClassWithSuffix" -> "Type"
"inputWithSuffix" -> "Type"
else -> ""
},
)
).generate()

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.netflix.graphql.dgs.codegen.cases.dataClassWithPrefix.expected

import com.netflix.graphql.dgs.client.codegen.InputValueSerializerInterface
import com.netflix.graphql.dgs.codegen.GraphQLProjection
import com.netflix.graphql.dgs.codegen.cases.dataClassWithPrefix.expected.client.QueryProjection
import graphql.language.OperationDefinition
import kotlin.String

public object DgsClient {
public fun buildQuery(inputValueSerializer: InputValueSerializerInterface? = null,
_projection: QueryProjection.() -> QueryProjection
): String =
GraphQLProjection.asQuery(OperationDefinition.Operation.QUERY,
QueryProjection(inputValueSerializer), _projection)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.netflix.graphql.dgs.codegen.cases.dataClassWithPrefix.expected

import kotlin.String

public object DgsConstants {
public const val QUERY_TYPE: String = "Query"

public object QUERY {
public const val TYPE_NAME: String = "Query"

public const val Search: String = "search"

public object SEARCH_INPUT_ARGUMENT {
public const val MovieFilter: String = "movieFilter"
}
}

public object MOVIE {
public const val TYPE_NAME: String = "Movie"

public const val Title: String = "title"
}

public object MOVIEFILTER {
public const val TYPE_NAME: String = "MovieFilter"

public const val TitleFilter: String = "titleFilter"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.netflix.graphql.dgs.codegen.cases.dataClassWithPrefix.expected.client

import com.netflix.graphql.dgs.client.codegen.InputValueSerializerInterface
import com.netflix.graphql.dgs.codegen.GraphQLProjection

public class MovieProjection(
inputValueSerializer: InputValueSerializerInterface? = null,
) : GraphQLProjection(inputValueSerializer) {
public val title: MovieProjection
get() {
field("title")
return this
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.netflix.graphql.dgs.codegen.cases.dataClassWithPrefix.expected.client

import com.netflix.graphql.dgs.client.codegen.InputValueSerializerInterface
import com.netflix.graphql.dgs.codegen.GraphQLProjection
import com.netflix.graphql.dgs.codegen.cases.dataClassWithPrefix.expected.types.DgsMovieFilter
import kotlin.String

public class QueryProjection(
inputValueSerializer: InputValueSerializerInterface? = null,
) : GraphQLProjection(inputValueSerializer) {
public fun search(
movieFilter: DgsMovieFilter,
_alias: String? = null,
_projection: MovieProjection.() -> MovieProjection,
): QueryProjection {
field(_alias, "search", MovieProjection(inputValueSerializer), _projection, "movieFilter" to
movieFilter)
return this
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.netflix.graphql.dgs.codegen.cases.dataClassWithPrefix.expected.types

import com.fasterxml.jackson.`annotation`.JsonIgnoreProperties
import com.fasterxml.jackson.`annotation`.JsonProperty
import com.fasterxml.jackson.`annotation`.JsonTypeInfo
import com.fasterxml.jackson.databind.`annotation`.JsonDeserialize
import com.fasterxml.jackson.databind.`annotation`.JsonPOJOBuilder
import com.netflix.graphql.dgs.codegen.cases.dataClassDocs.expected.types.Movie
import java.lang.IllegalStateException
import kotlin.String
import kotlin.jvm.JvmName

/**
* Movies are fun to watch.
* They also work well as examples in GraphQL.
*/
@JsonTypeInfo(use = JsonTypeInfo.Id.NONE)
@JsonDeserialize(builder = DgsMovie.Builder::class)
public class DgsMovie(
title: () -> String? = titleDefault,
) {
private val __title: () -> String? = title

@get:JvmName("getTitle")
public val title: String?
get() = __title.invoke()

public companion object {
private val titleDefault: () -> String? =
{ throw IllegalStateException("Field `title` was not requested") }
}

@JsonPOJOBuilder
@JsonIgnoreProperties("__typename")
public class Builder {
private var title: () -> String? = titleDefault

@JsonProperty("title")
public fun withTitle(title: String?): Builder = this.apply {
this.title = { title }
}

public fun build(): Movie = Movie(
title = title,
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.netflix.graphql.dgs.codegen.cases.dataClassWithPrefix.expected.types

import com.fasterxml.jackson.`annotation`.JsonCreator
import com.fasterxml.jackson.`annotation`.JsonProperty
import com.netflix.graphql.dgs.codegen.GraphQLInput
import kotlin.Any
import kotlin.Pair
import kotlin.String
import kotlin.collections.List

/**
* Example filter for Movies.
*
* It takes a title and such.
*/
public class DgsMovieFilter @JsonCreator constructor(
@JsonProperty("titleFilter")
public val titleFilter: String? = default<DgsMovieFilter, String?>("titleFilter", null),
) : GraphQLInput() {
override fun fields(): List<Pair<String, Any?>> = listOf("titleFilter" to titleFilter)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.netflix.graphql.dgs.codegen.cases.dataClassWithPrefix.expected.types

import com.fasterxml.jackson.`annotation`.JsonIgnoreProperties
import com.fasterxml.jackson.`annotation`.JsonProperty
import com.fasterxml.jackson.`annotation`.JsonTypeInfo
import com.fasterxml.jackson.databind.`annotation`.JsonDeserialize
import com.fasterxml.jackson.databind.`annotation`.JsonPOJOBuilder
import java.lang.IllegalStateException
import kotlin.jvm.JvmName

@JsonTypeInfo(use = JsonTypeInfo.Id.NONE)
@JsonDeserialize(builder = DgsQuery.Builder::class)
public class DgsQuery(
search: () -> DgsMovie? = searchDefault,
) {
private val __search: () -> DgsMovie? = search

@get:JvmName("getSearch")
public val search: DgsMovie?
get() = __search.invoke()

public companion object {
private val searchDefault: () -> DgsMovie? =
{ throw IllegalStateException("Field `search` was not requested") }
}

@JsonPOJOBuilder
@JsonIgnoreProperties("__typename")
public class Builder {
private var search: () -> DgsMovie? = searchDefault

@JsonProperty("search")
public fun withSearch(search: DgsMovie?): Builder = this.apply {
this.search = { search }
}

public fun build(): DgsQuery = DgsQuery(
search = search,
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
type Query {
search(movieFilter: MovieFilter!): Movie
}

"""
Movies are fun to watch.
They also work well as examples in GraphQL.
"""
type Movie {
title: String
}

"""
Example filter for Movies.

It takes a title and such.
"""
input MovieFilter {
titleFilter: String
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.netflix.graphql.dgs.codegen.cases.inputWithPrefix.expected

import com.netflix.graphql.dgs.client.codegen.InputValueSerializerInterface
import com.netflix.graphql.dgs.codegen.GraphQLProjection
import com.netflix.graphql.dgs.codegen.cases.inputWithPrefix.expected.client.QueryProjection
import graphql.language.OperationDefinition
import kotlin.String

public object DgsClient {
public fun buildQuery(inputValueSerializer: InputValueSerializerInterface? = null,
_projection: QueryProjection.() -> QueryProjection): String =
GraphQLProjection.asQuery(OperationDefinition.Operation.QUERY,
QueryProjection(inputValueSerializer), _projection)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.netflix.graphql.dgs.codegen.cases.inputWithPrefix.expected

import kotlin.String

public object DgsConstants {
public const val QUERY_TYPE: String = "Query"

public object QUERY {
public const val TYPE_NAME: String = "Query"

public const val Movies: String = "movies"

public object MOVIES_INPUT_ARGUMENT {
public const val Filter: String = "filter"
}
}

public object MOVIEFILTER {
public const val TYPE_NAME: String = "MovieFilter"

public const val Genre: String = "genre"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.netflix.graphql.dgs.codegen.cases.inputWithPrefix.expected.client

import com.netflix.graphql.dgs.client.codegen.InputValueSerializerInterface
import com.netflix.graphql.dgs.codegen.GraphQLProjection
import com.netflix.graphql.dgs.codegen.cases.inputWithPrefix.expected.types.DgsMovieFilter

public class QueryProjection(
inputValueSerializer: InputValueSerializerInterface? = null,
) : GraphQLProjection(inputValueSerializer) {
public fun movies(filter: DgsMovieFilter? = default<QueryProjection, DgsMovieFilter?>("filter")):
QueryProjection {
field("movies", "filter" to filter)
return this
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.netflix.graphql.dgs.codegen.cases.inputWithPrefix.expected.types

import com.fasterxml.jackson.`annotation`.JsonCreator
import com.fasterxml.jackson.`annotation`.JsonProperty
import com.netflix.graphql.dgs.codegen.GraphQLInput
import kotlin.Any
import kotlin.Pair
import kotlin.String
import kotlin.collections.List

public class DgsMovieFilter @JsonCreator constructor(
@JsonProperty("genre")
public val genre: String? = default<DgsMovieFilter, String?>("genre", null),
) : GraphQLInput() {
override fun fields(): List<Pair<String, Any?>> = listOf("genre" to genre)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.netflix.graphql.dgs.codegen.cases.inputWithPrefix.expected.types

import com.fasterxml.jackson.`annotation`.JsonIgnoreProperties
import com.fasterxml.jackson.`annotation`.JsonProperty
import com.fasterxml.jackson.`annotation`.JsonTypeInfo
import com.fasterxml.jackson.databind.`annotation`.JsonDeserialize
import com.fasterxml.jackson.databind.`annotation`.JsonPOJOBuilder
import java.lang.IllegalStateException
import kotlin.String
import kotlin.collections.List
import kotlin.jvm.JvmName

@JsonTypeInfo(use = JsonTypeInfo.Id.NONE)
@JsonDeserialize(builder = DgsQuery.Builder::class)
public class DgsQuery(
movies: () -> List<String?>? = moviesDefault,
) {
private val __movies: () -> List<String?>? = movies

@get:JvmName("getMovies")
public val movies: List<String?>?
get() = __movies.invoke()

public companion object {
private val moviesDefault: () -> List<String?>? =
{ throw IllegalStateException("Field `movies` was not requested") }
}

@JsonPOJOBuilder
@JsonIgnoreProperties("__typename")
public class Builder {
private var movies: () -> List<String?>? = moviesDefault

@JsonProperty("movies")
public fun withMovies(movies: List<String?>?): Builder = this.apply {
this.movies = { movies }
}

public fun build(): DgsQuery = DgsQuery(
movies = movies,
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
type Query {
movies(filter: MovieFilter): [String]
}

input MovieFilter {
genre: String
}
Loading