[GSOC] Database API draft proposal
Fawzi Mohamed
fawzi at gmx.ch
Sun Apr 3 11:17:08 PDT 2011
On 3-apr-11, at 19:54, Piotr Szturmaj wrote:
> Fawzi Mohamed wrote:
>>
>> On 3-apr-11, at 18:37, Piotr Szturmaj wrote:
>>
>>> Fawzi Mohamed wrote:
>>>> I think that you project looks nice, but see some of the comments
>>>> in my
>>>> other message.
>>>> I would for example consider separating table definition from row
>>>> object, and while your row object is really nice, often one has
>>>> either a
>>>> single DB model, described in a few model files or goes with a
>>>> fully
>>>> dynamic model.
>>>> In large project one does not/should not, define RowTypes on the
>>>> fly
>>>> everywhere in the code.
>>>
>>> There's no need to declare all row types. DBRow support both static
>>> and dynamic models. For dynamic rows, DBRow uses Variant[] as its
>>> underlying type. This is previous sample code, but changed to use
>>> dynamic row:
>>>
>>> auto cmd = new PGCommand(conn, "SELECT typname, typlen FROM
>>> pg_type");
>>> auto result = cmd.executeQuery;
>>>
>>> foreach (row; result)
>>> {
>>> // here, row subtypes a Variant[]
>>> writeln(row[0], ", ", row[1]);
>>> }
>>>
>>> Btw. I've just updated documentation, so you can take another
>>> look :)
>>
>> Yes I saw that, that is exactly the reason I was telling about
>> splitting
>> the table definition in another object, so that also in the dynamic
>> case
>> one can use the column names (that normally are known, or can be
>> retrieved from the db schema).
>> That would only add a pointer to each row (to its description), and
>> would make it much nicer to use.
>> Your DBRow is very nice to use, and I like how it can accommodate
>> both
>> types, but it degrades too much for dynamic types imho.
>
> Ah, I see what you mean :) This is yet to be done feature :)
>
> I assume you mean something like row["typname"]. Soon, I will add
> support for this.
yes exactly, great
More information about the Digitalmars-d
mailing list