Abstract Database Interface
BLM768
blm768 at gmail.com
Mon Oct 29 00:57:45 PDT 2012
>
> Looking at the API used in this example it would say that it's
> not very interesting and not very ActiveRecrod like. I think
> this looks more interesting and more like ActiveRecrod:
>
> class Person : Model
> {
> }
>
> void main ()
> {
> auto p = new Person;
> p.name = "John Doe";
> p.save();
>
> p = Person.where!(x => x.name == "John Doe");
> }
>
> But when you start to use associative it won't be as nice
> looking as ActiveRecord due to the not so nice mixin syntax.
> What we need is AST macros and user defined
> attributes/annotations. With that, associations could
> potentially look like this:
>
> class Foo : Model {}
>
> class Person : Model
> {
> @hasMany Foo;
> }
It's definitely not ActiveRecord, but my goal is just to take
some inspiration from it, not to duplicate it. I'm very concerned
about efficiency, which is why I'm using structs, and I like
hard-coding the fields into the structure so there's some
documentation of what the record is supposed to hold and so the
compiler can optimize it more heavily. It will probably be a
little less pretty, but it'll work, and that's what really
matters. At some point, I might implement an interface to
generate SQL queries with function calls, but for now, just
manually writing the queries really isn't hard, and it provides a
significant speed boost for systems like Sqlite that compile
queries down to bytecode because it's easier to reuse the query
object.
More information about the Digitalmars-d-announce
mailing list