On 7/25/17 6:15 AM, Nicholas Wilson wrote:
On Tuesday, 25 July 2017 at 09:50:46 UTC, John Colvin wrote:
On Sunday, 2 July 2017 at 10:35:49 UTC, Steven Schveighoffer wrote:
I'll have a short presentation on a weird trick I discovered while
writing some MySQL serialization code. Hope you can attend!
https://www.eventbrite.com/e/d-lang-presentation-strawman-structs-tickets-35120523431
Is there a written summary of the idea? Or is there a specific point
in the video someone could point me to?
Basically using structs to describe layouts (among other relations) and
in turn use that to drive DbI automated code. The DbI is the only "code"
the rest is declarative using the type system.
Steven was using it to describe what columns ( name and type) a query
should return from a DB and the using DbI to generate the Query.
Not exactly :)
I wrote a database serializer that uses introspecting members, types,
and attributes of a struct to correctly populate members of the struct
with data from the rows. So yes, I'm using introspection, but only for
the serialization, the query is hand-written.
In some cases (particularly when you are joining 2 tables that have
conflicting columns), I needed to change how the serialization worked
(e.g. the column names had to change).
In order to do this, I created descriptors that are built from the
combination of attributes and other introspected items. Then my thought
was I would pass in the descriptors directly in order to control how
serialization works.
I found it unwieldy and difficult to write the low-level descriptors by
hand. But I thought of making a dummy or strawman struct with all the
attributes the way I wanted, and still serializing to the real struct.
It worked really well.
I also go over some other possible ideas for using this concept. Start
watching from here: https://youtu.be/ZxzczSDaobw?t=18m24s
Andrei suggested doing a blog article (and actually I had started
writing one, but it turned into this talk instead). I'll probably still
do this.
-Steve