Luciana Lima Brito <lubr...@posteo.net> writes: > On Thu, 22 Apr 2021 21:08:08 +0100 > Christopher Baines <m...@cbaines.net> wrote: > >> I'm not quite sure what you mean by empty fields in the JSON here? > > I mean now it appears like this in the json > > hash-alg: {} > > Before, it was entirely omitted.
Right, OK. I'd call that an empty object. >> It sounds like you're roughly on the right track, do share what >> changes you're making and then I can have a look. > > This is the part I've changed on comparison.scm in the function > derivation-outputs-differences-data: > > (map (match-lambda > ((output-name path hash-algorithm hash recursive > derivation_ids) > (let ((parsed-derivation-ids > (map string->number > (parse-postgresql-array-string derivation_ids)))) > (list output-name > path > (if (string? hash-algorithm) > hash-algorithm > '()) > (if (string? hash) > hash > '()) > (string=? recursive "t") > (append (if (memq base-derivation-id > parsed-derivation-ids) > '(base) > '()) > (if (memq target-derivation-id > parsed-derivation-ids) > '(target) > '())))))) > (exec-query conn query)) > > Basically, I moved the hash-algorithm, hash, and recursive tests from > controller.scm here. I spent more time familiarizing with this part of > the code and the dataset. I don't have anything ready for the idea I > told you in the last email because I'm not so sure if that is the way > to go, but I can make some experiments in this regard. The bit for the recursive field looks fine. I'd suggest avoiding '() as the value for hash and hash-algorithm when they're NULL in the database. One option here that I've used in some places is to return a alist rather than a list. This can simplify JSON output since it's often a alist that's desired, and can avoid breaking matches when they're matching on the list. Does that make sense?
signature.asc
Description: PGP signature