tapir-generator/tapir-templates/endpoints.ftl

42 lines
1.4 KiB
Text
Raw Normal View History

package se.senashdev.project.api
2025-03-16 14:16:16 +01:00
import se.rutdev.projekt.api.HttpProtocol.VersionedResponse
import se.rutdev.framework.json.circe.RutUtilsCodec
import se.rutdev.framework
import se.rutdev.framework.service.api.{OAuthUtils, RequestMeta, RutTapir}
import se.rutdev.pd.ProblemDetailProtocol.ProblemDetail
import sttp.tapir.Schema
class Endpoints(override val config: OAuthUtils.OAuthConfig) extends framework.service.api.Endpoints with RutTapir with RutUtilsCodec:
type ApiEndpoint[I, O] = OAuthEndpoint[RequestMeta.OAuthRequestMeta, I, ProblemDetail, O]
2025-03-19 21:19:56 +01:00
<#list datatypes as datatype>
case class ${datatype.name}(
<#list datatype.fields as field>
${field.name} : ${field.type},
</#list>
)
</#list>
2025-03-16 14:16:16 +01:00
<#list endpoints as endpoint>
case class ${endpoint.handler.name?cap_first}Payload(
2025-03-16 14:16:16 +01:00
<#list endpoint.handler.fields as field>
${field.name} : ${field.type},
</#list>
)
</#list>
<#list endpoints as endpoint>
val ${endpoint.handler.name}Endpoint = ApiEndpoint[${endpoint.handler.name?cap_first}Payload, VersionedResponse] =
2025-03-19 21:19:56 +01:00
<#list endpoint.paths.paths>
apiV1Endpoint
.post
<#items as segment>
.in("${segment}")
</#items>
.post
.in(jsonBody[${endpoint.handler.name?cap_first}Payload])
2025-03-19 21:19:56 +01:00
.out(jsonBody[VersionedResponse])
</#list>
2025-03-16 14:16:16 +01:00
</#list>