Fix tests

This commit is contained in:
Paul-Henri Froidmont 2025-10-13 15:46:22 +02:00
parent efdc50eb1d
commit 87bd780f9f
Signed by: phfroidmont
GPG key ID: BE948AFD7E7873BE
34 changed files with 230 additions and 303 deletions

View file

@ -1,19 +1,14 @@
package lu.foyer
import lu.foyer.JsonApiResponse.Many
import lu.foyer.JsonApiResponse.One
import zio.*
import zio.http.*
import zio.http.Header.Forwarded
import zio.http.codec.*
import zio.http.codec.PathCodec.path
import zio.http.endpoint.*
import zio.schema.*
import zio.schema.annotation.discriminatorName
import zio.schema.annotation.fieldName
import java.util.UUID
import scala.annotation.targetName
import lu.foyer.JsonApiResponse.Many
import lu.foyer.JsonApiResponse.One
object JsonApiResponse:
@ -26,7 +21,7 @@ object JsonApiResponse:
case class Entity[T](
`type`: String,
id: UUID,
id: String,
attributes: T,
relationships: Option[Relationships] = None,
links: Map[String, String])
@ -34,17 +29,17 @@ object JsonApiResponse:
case class Relationships(_entity: RelationshipsEntity) derives Schema
object Relationships:
def apply(id: UUID, `type`: String, entityUrl: String): Relationships = Relationships(
def apply(id: String, `type`: String, entityUrl: String): Relationships = Relationships(
RelationshipsEntity(RelationshipsData(id, `type`), RelationshipsLinks(entityUrl))
)
case class RelationshipsEntity(data: RelationshipsData, links: RelationshipsLinks) derives Schema
case class RelationshipsData(id: UUID, `type`: String) derives Schema
case class RelationshipsData(id: String, `type`: String) derives Schema
case class RelationshipsLinks(related: String) derives Schema
@discriminatorName("errorType")
enum Error(title: String) derives Schema:
case NotFound(id: String) extends Error(s"Entity $id not found")
case InternalServerError(title: String) extends Error(title)
enum Error derives Schema:
case NotFound(id: String)
case InternalServerError(title: String)
object Error:
given Schema[Error.NotFound] = DeriveSchema.gen
given Schema[Error.InternalServerError] = DeriveSchema.gen
@ -105,7 +100,7 @@ trait JsonApiController:
)
def implementJsonApiOne[Env, A](
f: Input => RIO[Env, Option[A]],
getId: A => UUID,
getId: A => String,
getEntity: A => Output,
onthology: String = this.onthology,
links: (A, ProxyHeaders) => Map[String, String] = (_: A, _: ProxyHeaders) => Map.empty,
@ -177,7 +172,7 @@ trait JsonApiController:
)
def implementJsonApiMany[Env, A](
f: Input => RIO[Env, Paged[A]],
getId: A => UUID,
getId: A => String,
getEntity: A => Output,
links: (A, ProxyHeaders) => Map[String, String] = (_: A, _: ProxyHeaders) => Map.empty
)(implicit trace: Trace