On Thursday, 3 March 2016 at 17:03:58 UTC, Kagamin wrote:
On Thursday, 3 March 2016 at 15:53:28 UTC, Erik Smith wrote:
auto r = db.connection().statement("select from t").range(); // nouns

db.execute("select from t").range();
`range` is probably ok.
Or
auto connection = db.createConnection();
connection.execute("select from t").range();

auto r = db.getConnection().getStatement("select from t").getRange(); // verbs

Getters must be actually nouns, but these are not getters, but factory methods: createConnection, createStatement, probably low level and/or private.

Good point.   I will track this as a design option to debate.

db.execute("select from t").reader; //row range
db.execute("select from t").get!long; //scalar
db.execute("select from t"); //non-query

More good options (the 3rd one is there). Also at the value access level there are several options to consider: v.get!long, v.as!long, v.to!long, etc.

On the other hand execute can simply return the reader with extra getter for scalar
result. Just don't do stuff until it's iterated. Is it possible?
auto rows = db.execute("select * from t");

I'm hedging a bit on this because there are other capabilities that need to be introduced that might present a problem. Another issue is that this might conflict with the notion of a container and the use of opSlice. Great feedback though and I'm tracking it.

erik


Reply via email to