All Downloads are FREE. Search and download functionalities are using the official Maven repository.

caliban.interop.tapir.tapir.scala Maven / Gradle / Ivy

package caliban.interop.tapir

import caliban._
import sttp.tapir.{ Schema, SchemaType }

/**
 * This class is an implementation of the pattern described in https://blog.7mind.io/no-more-orphans.html
 * It makes it possible to mark circe dependency as optional and keep Encoders defined in the companion object.
 */
private[caliban] trait IsTapirSchema[F[_]]
private[caliban] object IsTapirSchema {
  implicit val isTapirSchema: IsTapirSchema[Schema] = null
}

object schema {
  implicit lazy val requestSchema: Schema[GraphQLRequest]      =
    sttp.tapir.Schema[GraphQLRequest](SchemaType.SString[GraphQLRequest]())
  implicit def responseSchema[E]: Schema[GraphQLResponse[E]]   =
    sttp.tapir.Schema[GraphQLResponse[E]](SchemaType.SString[GraphQLResponse[E]]())
  implicit lazy val wsInputSchema: Schema[GraphQLWSInput]      =
    sttp.tapir.Schema[GraphQLWSInput](SchemaType.SString[GraphQLWSInput]())
  implicit lazy val wsOutputSchema: Schema[GraphQLWSOutput]    =
    sttp.tapir.Schema[GraphQLWSOutput](SchemaType.SString[GraphQLWSOutput]())
  implicit lazy val responseValueSchema: Schema[ResponseValue] =
    sttp.tapir.Schema[ResponseValue](SchemaType.SString[ResponseValue]())
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy