You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Firestore currently supports passing Codable ( Encodable or Decodable respectively) types when retrieving or setting the data of a document. iOS 17 introduced a new set of protocols: CodableWithConfiguration (a type alias for EncodableWithConfiguration & DecodableWithConfiguration) that allow passing an additional, fully typed Configuration type alongside the encode and decode methods. New encode(_:configuration:) and decode(_:configuration:) methods on e.g. the JSON coders allow to pass a configuration alongside the type/value.
It is currently not possible to work with CodableWithConfiguration-conforming types when using Firestore without the need to create additional wrapper types.
Similar to Codable types, Firestore should accept CodableWithConfiguration types by allowing to pass an additional configuration argument.
API Proposal
The following additive API changes are proposed. They are expressed as Swift Extensions with the implementation body missing.
Additionally, one would need to add additional overloads for the factious setData, data, getDocument, setDocument methods in types like DocumentReference, DocumentSnapshot, CollectionReference, Transaction and WriteBatch (might be missing some). Each of them would ned similar adjustments of using the new protocols and accepting an additional configuration parameter that is forwarded to the Encoder/Decoder.
Firebase Product(s)
Firestore
The text was updated successfully, but these errors were encountered:
@Supereg, thank you for the feature request. I'll review this with the team.
Sounds great, thank you 🚀
Can you tell us more about your use case(s)? Thanks!
I might just point you to our real-world example. We have a framework that provides typed-storage AccountDetails. In order to decode, we need the Swift types that make up the keys of the type-storage to know how to decode the value of an entry. See our DecodableWithConfigurationhere.
The AccountDetails type is stored in Firestore (see here).
This is a small overview of our specific use case. Feel free to reach out, if you want me to go into more detail or need a broader description of potential use cases.
Description
Codable
(Encodable
orDecodable
respectively) types when retrieving or setting the data of a document. iOS 17 introduced a new set of protocols:CodableWithConfiguration
(a type alias forEncodableWithConfiguration
&DecodableWithConfiguration
) that allow passing an additional, fully typedConfiguration
type alongside the encode and decode methods. Newencode(_:configuration:)
anddecode(_:configuration:)
methods on e.g. the JSON coders allow to pass a configuration alongside the type/value.CodableWithConfiguration
-conforming types when using Firestore without the need to create additional wrapper types.Codable
types, Firestore should acceptCodableWithConfiguration
types by allowing to pass an additionalconfiguration
argument.API Proposal
The following additive API changes are proposed. They are expressed as Swift Extensions with the implementation body missing.
Additionally, one would need to add additional overloads for the factious
setData
,data
,getDocument
,setDocument
methods in types likeDocumentReference
,DocumentSnapshot
,CollectionReference
,Transaction
andWriteBatch
(might be missing some). Each of them would ned similar adjustments of using the new protocols and accepting an additionalconfiguration
parameter that is forwarded to the Encoder/Decoder.Firebase Product(s)
Firestore
The text was updated successfully, but these errors were encountered: