ir,圆,图式

问题描述

我有一个这样的案例课

    case class OffboardingError1(
    userId: Option[String],error: OffboardingErrorType1
)

    object OffboardingError1 {
      implicit val encode: Encoder[OffboardingError1] = deriveEncoder[OffboardingError1]
      implicit val decode: Decoder[OffboardingError1] = deriveDecoder[OffboardingError1]
      implicit val codecJson: CodecJson[OffboardingError1] = CodecJson.derive[OffboardingError1]
      implicit val schema: Schema[OffboardingError1] = implicitly[Derived[Schema[OffboardingError1]]].value
    }

OffboardingErrorType1定义如下:

trait OffboardingErrorType1 {
  val name: String
  val message: String
}

object OffboardingErrorType1 {
  case class UnknownError1(name: String = "UnknownError",message: String) extends OffboardingErrorType1
  case class S3ImageFindError1(name: String = "S3ImageFindError",message: String) extends OffboardingErrorType1

  def getErrorTypeFromString(name: String,errorMessage: String): Option[OffboardingErrorType1] = name match {
    case "UnknownError" => Some(UnknownError1(message = errorMessage))
    case "S3ImageFindError" => Some(S3ImageFindError1(message = errorMessage))
    case _ => None
  }

  implicit val encoder: Encoder[OffboardingErrorType1] = {
    (offBoardingTypeError: OffboardingErrorType1) =>
      Json.obj(
        ("name",offBoardingTypeError.name.asJson),("message",offBoardingTypeError.message.asJson)
      )
  }

  implicit val decoder: Decoder[OffboardingErrorType1] = {
    c =>
      for {
        name <- c.downField("name").as[String]
        errorMessage <- c.downField("message").as[String]
      } yield getErrorTypeFromString(name,errorMessage) match {
        case Some(cType) => cType
        case _ => throw new IllegalArgumentException(s"bad name for offboarding error type: [${name}]")
      }
  }
  implicit val codec: CodecJson[OffboardingErrorType1] = {
    import argonaut._
    import Argonaut._
    CodecJson(
      (errorType: OffboardingErrorType1) =>
        ("name" := errorType.name) ->:
          ("message" := errorType.message) ->:
          jEmptyObject,c => for {
        name <- c.downField("name").as[String]
        message <- c.downField("message").as[String]
        result <- getErrorTypeFromString(name,message).fold(
          DecodeResult.fail[OffboardingErrorType1](s"bad name for offboarding error type: [${name}]",CursorHistory.empty)
        )(DecodeResult.ok)
      } yield result
    )
  }
}

我正在使用tap作为终点,代码是这样的

val coursePlanCreationJob: Endpoint[(String,CoursePlanCreationRequest),ServiceThrowable,JobInfo1,Nothing] =
    V1Endpoint.v1Endpoint
      .post
      .description("create a coursePlan")
      .in("courses" / "type" / "create-courseplan")
      .in(jsonBody[CoursePlanCreationRequest])
      .out(jsonBody[OffboardingError1])

set编译给我错误,找不到参数e的隐式值:sttp.tapir.generic.Derived [sttp.tapir.Schema [io.ctek.services.palpatine.model.response.OffboardingError1]] [错误]隐式val模式:Schema [OffboardingError1] =隐式[Derived [Schema [OffboardingError1]]]。value我猜这是因为“ OffboardingErrorType1”特征。有谁知道如何为这种特征编写模式?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...