apple / swift-cassandra-client

Cassandra client in Swift
https://swiftpackageindex.com/apple/swift-cassandra-client/main/documentation/cassandraclient
Apache License 2.0
89 stars 16 forks source link

Consider accepting model types as explicit parameters #20

Open kmahar opened 1 year ago

kmahar commented 1 year ago

Some feedback based on the examples in the pitch for the SSWG incubation process: for the API methods that allow returning a model object, it seems worth considering accepting the model type as an explicit parameter, for example something like:

let result = try await session.query("select * from table ...", withModelType: Model.self)

While the type annotations get the job done, I think the explicit parameter is more discoverable for users, and seems more consistent with other Swift APIs. Most notably perhaps JSONDecoder:

let result = try JSONEncoder().decode(Model.self, from: myData)

But there are various other examples of this around the ecosystem too, e.g. ByteBuffer.getInteger or EventLoop.makePromise.

We've got some similar API methods in the MongoDB driver and we went with explicit type parameters for this reason.