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

Reply via email to