Proposal: Database Engine for D

Sebastiaan Koppe via Digitalmars-d digitalmars-d at puremagic.com
Sun Jan 3 08:45:22 PST 2016


On Sunday, 3 January 2016 at 14:32:48 UTC, Jacob Carlborg wrote:
> On 2016-01-02 21:48, Sebastiaan Koppe wrote:
>
>> I meant that you generate the struct from the DSL, and then 
>> migration
>> code from that struct.
>
> I don't think I understand, it seems complicated.

Suppose you have this:

mixin(db(`
Entity Person
   Fields
     name -> string
     age -> integer
   Query
     byAge(a -> integer) -> age == a
`));

which generates something like this:

struct Person
{
   string name;
   int age
}
auto getPersonByAge(DB db, int a)
{
   return db.prepare!Person("SELECT name,age FROM Person WHERE age 
= ?").query(a);
}

and then later in time:

mixin(db(`
Entity Person
   Fields
     name -> string
     age -> integer
     phone -> string
   Query
     byAge(a -> integer) -> age == a
`));

Given that you have access to both version it is easy to generate 
migration code for the phone field.

Maybe it is contrived, but I think it shows you can do more with 
the DSL than just validating queries.


More information about the Digitalmars-d mailing list