guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Outreachy - Guix Data Service: questions about improving the data fo


From: Christopher Baines
Subject: Re: Outreachy - Guix Data Service: questions about improving the data for derivation comparisons.
Date: Thu, 22 Apr 2021 22:15:34 +0100
User-agent: mu4e 1.4.15; emacs 27.1

Luciana Lima Brito <lubrito@posteo.net> writes:

> On Thu, 22 Apr 2021 21:08:08 +0100
> Christopher Baines <mail@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?

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]