Skip to content

Commit

Permalink
Add type references to FieldBuilder
Browse files Browse the repository at this point in the history
  • Loading branch information
julianpeeters committed Aug 11, 2023
1 parent 5e3a684 commit b6339bd
Showing 1 changed file with 26 additions and 1 deletion.
27 changes: 26 additions & 1 deletion src/main/scala/schemabuilder4cats/SchemaBuilder.scala
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,12 @@ trait SchemaBuilder[F[_]]:
def prop(name: String, `val`: String): F[JFieldBuilder[A]]
@scala.annotation.targetName("typeFieldBuilder")
def `type`: F[JFieldTypeBuilder[A]]
@scala.annotation.targetName("typeSchemaFieldBuilder")
def `type`(schema: Schema): F[JGenericDefault[A]]
@scala.annotation.targetName("typeNameFieldBuilder")
def `type`(name: String): F[JGenericDefault[A]]
@scala.annotation.targetName("typeFullNameFieldBuilder")
def `type`(name: String, namespace: String): F[JGenericDefault[A]]
extension [A] (fftb: F[JFieldTypeBuilder[A]])
@scala.annotation.targetName("arrayBuilderFieldTypeBuilder")
def array: F[JArrayBuilder[JArrayDefault[A]]]
Expand Down Expand Up @@ -725,6 +731,15 @@ object SchemaBuilder:
@scala.annotation.targetName("typeFieldBuilder")
def `type`: F[JFieldTypeBuilder[A]] =
ffb.flatMap(fb => FB.`type`(fb))
@scala.annotation.targetName("typeSchemaFieldBuilder")
def `type`(schema: Schema): F[JGenericDefault[A]] =
ffb.flatMap(fb => FB.`type`(fb)(schema))
@scala.annotation.targetName("typeNameFieldBuilder")
def `type`(name: String): F[JGenericDefault[A]] =
ffb.flatMap(fb => FB.`type`(fb)(name))
@scala.annotation.targetName("typeFullNameFieldBuilder")
def `type`(name: String, namespace: String): F[JGenericDefault[A]] =
ffb.flatMap(fb => FB.`type`(fb)(name, namespace))

extension [A, U <: JFieldDefault[A, U]] (ffd: F[JFieldDefault[A, U]])
def noDefault: F[JFieldAssembler[A]] =
Expand Down Expand Up @@ -1306,7 +1321,11 @@ object SchemaBuilder:
def orderAscending[T](fb: JFieldBuilder[T]): F[JFieldBuilder[T]]
def orderDescending[T](fb: JFieldBuilder[T]): F[JFieldBuilder[T]]
def orderIgnore[T](fb: JFieldBuilder[T]): F[JFieldBuilder[T]]
def `type`[T](fb: JFieldBuilder[T]): F[JFieldTypeBuilder[T]]
def `type`[T](fb: JFieldBuilder[T]): F[JFieldTypeBuilder[T]]
def `type`[T](fb: JFieldBuilder[T])(schema: Schema): F[JGenericDefault[T]]
def `type`[T](fb: JFieldBuilder[T])(name: String): F[JGenericDefault[T]]
def `type`[T](fb: JFieldBuilder[T])(name: String, namespace: String): F[JGenericDefault[T]]

object FieldBuilder:
given [F[_]: Sync]: FieldBuilder[F] =
new FieldBuilder[F]:
Expand All @@ -1318,6 +1337,12 @@ object SchemaBuilder:
Sync[F].delay(fb.orderIgnore())
def `type`[T](fb: JFieldBuilder[T]): F[JFieldTypeBuilder[T]] =
Sync[F].delay(fb.`type`())
def `type`[T](fb: JFieldBuilder[T])(schema: Schema): F[JGenericDefault[T]] =
Sync[F].delay(fb.`type`(schema))
def `type`[T](fb: JFieldBuilder[T])(name: String): F[JGenericDefault[T]] =
Sync[F].delay(fb.`type`(name))
def `type`[T](fb: JFieldBuilder[T])(name: String, namespace: String): F[JGenericDefault[T]] =
Sync[F].delay(fb.`type`(name, namespace))

trait FieldDefault[F[_]]:
def noDefault[T, U <: JFieldDefault[T, U]](fd: JFieldDefault[T, U]): F[JFieldAssembler[T]]
Expand Down

0 comments on commit b6339bd

Please sign in to comment.