(let ((do-sth (prepare *db* "SELECT domains.name, domains.status, domains.ttl, domains.client_hold, COALESCE(host_domain_links.id, -1) AS hd_id, COALESCE(hosts.name, '') AS ho_name, COALESCE(hosts.ipv4, '') AS ho_ipv4, COALESCE(hosts.ipv6, '') AS ho_ipv6, COALESCE(forwardings.url, '') AS fw_url FROM domains LEFT JOIN forwardings ON forwardings.domain_id = domains.id LEFT JOIN host_domain_links ON host_domain_links.domain_id = domains.id LEFT JOIN hosts on host_domain_links.host_id = hosts.id WHERE domains.name LIKE '%.la';"))) (let loop ([s (step do-sth)]) (if (not (equal? s 'done)) (let* ((row (row-alist do-sth)) (status (alist-ref 'status row)) (name (string-downcase (alist-ref 'name row))) (prefix (get-prefix name)) (client-hold (alist-ref 'client_hold row)) (hd-id (alist-ref 'hd_id row)) (fw-url (alist-ref 'fw_url row))) (begin (display row) (newline) (cond ((equal? status "B") (hash-table-set! *nxdomains* name "This domain name has been banned by the registry for legal, operational or security reasons.")) ((equal? status "H") (hash-table-set! *nxdomains* name "serverHold")) ((equal? status "C") (hash-table-set! *nxdomains* name "pendingCreate")) ((equal? status "P") (hash-table-set! *nxdomains* name "pendingDelete")) ((equal? status "I") (hash-table-set! *nxdomains* name "pendingDelete")) ((equal? client-hold "Y") (hash-table-set! *nxdomains* name "clientHold")) ((< hd-id 1) ((if (equal? fw-url "") (hash-table-set! *parked* name 1) (hash-table-set! *forwarded* name 1)))) (else (ns-record row))) (loop (step do-sth)))))))