1. from, from, from, ...

    What’s up ? When is this beta release ready ?

    Well, ... I should be doing all the cosmetic work for the pretty site, templates, screencasts and all (things I’d love to do), but I have to keep adding some features for customers.

    The feature that is taking me some time is the ability to do inner joins in queries like:

    <ul do='recipients from letters from project'>
    ... list all contacts to whom we sent a letter in the current project
    </ul>

    This is really cool, but it means I have to rewrite (once more…) the pseudo sql parser. For the curious among you, the five word sentence above should produce the following query:

    SELECT nd1.*, lk1.id AS link_id
    FROM nodes AS nd1, nodes AS nd2, links AS lk1 
    WHERE (nodes.id = lk1.target_id) 
    AND (lk1.relation_id = 4 AND lk1.source_id = nd2.id 
    AND nd2.kpath LIKE 'NNL%' 
    AND nd2.project_id = #{@node.get_project_id}
    AND ([...])
    GROUP BY nd1.id  ORDER BY position ASC, name ASC
    

    As you can see, it’s not actually trivial (but not impossible either). The interesting parts are:

    1. lk1.relation_id = 4 this is the “recipient” relation
    2. nd2.kpath LIKE ‘NNL%’ this is the ‘letters’ class filter (NNL is the signature of the Letter class: Node <- Note <- Letter)
    3. nd2.project_id = #{@node.get_project_id} Only use letters from within the current project.

    All this should be implemented pretty soon.

    Gaspard Bucher