bson decoder can't handle optional values in case classes with 22+ fields
zio-schema-bson can't properly handle missing fields in bson even if the field is marked as optional. see example below
```
final case class Test(
a: Option[String] = None,
b: Option[String] = None,
d: Option[String] = None,
e: Option[String] = None,
f: Option[String] = None,
g: Option[String] = None,
h: Option[String] = None,
i: Option[String] = None,
j: Option[String] = None,
k: Option[String] = None,
l: Option[String] = None,
m: Option[String] = None,
n: Option[String] = None,
o: Option[String] = None,
p: Option[String] = None,
q: Option[String] = None,
r: Option[String] = None,
s: Option[String] = None,
t: Option[String] = None,
u: Option[String] = None,
v: Option[String] = None,
w: Option[String] = None,
x: Option[String] = None
)
implicit val schema: Schema[Test] = DeriveSchema.gen
implicit val codec: BsonCodec[Test] = BsonSchemaCodec.bsonCodec(schema)
codec.decoder.fromBsonValue(BsonDocument.parse("{}"))
```
the last line returns
```
Left(zio.bson.BsonDecoder$Error: Path: , error: Field a is missing. Don't use `decodeUnsafe` and `fromBsonValueUnsafe` methods.)
```
- scala version: 2.12.20
- java version: 11.0.28
- bson version: 5.5.1
- zio-schema/zio-schema-bson version: 1.7.3
0 条评论