Function: closql-dref
closql-dref is a byte-compiled function defined in closql.el.
Signature
(closql-dref OBJ SLOT)
Implementations
(closql-dref (OBJ forge-pullreq) (_ (eql marks))) in `forge-pullreq.el'.
Undocumented
(closql-dref (OBJ forge-pullreq) (_ (eql review-requests))) in `forge-pullreq.el'.
Undocumented
(closql-dref (OBJ forge-pullreq) (_ (eql labels))) in `forge-pullreq.el'.
Undocumented
(closql-dref (OBJ forge-pullreq) (_ (eql assignees))) in `forge-pullreq.el'.
Undocumented
(closql-dref (OBJ forge-issue) (_ (eql marks))) in `forge-issue.el'.
Undocumented
(closql-dref (OBJ forge-issue) (_ (eql labels))) in `forge-issue.el'.
Undocumented
(closql-dref (OBJ forge-issue) (_ (eql assignees))) in `forge-issue.el'.
Undocumented
(closql-dref OBJ SLOT) in `closql.el'.
Undocumented
Source Code
;; Defined in ~/.emacs.d/elpa/closql-20260101.1828/closql.el
(cl-defgeneric closql-dref (obj slot)
(let ((c (eieio--slot-name-index (eieio--object-class obj) slot))
(db (closql--oref obj 'closql-database))
(props (closql--slot-properties obj slot)))
(cond-let
([class (alist-get :closql-class props)]
(aset obj c
(closql--remake-instances class db
(emacsql
db `[:select * :from $i1
:where (= $i2 $s3)
:order-by ,(or (closql--oref-default class 'closql-order-by)
[(asc $i4)])]
(closql--oref-default class 'closql-table)
(closql--oref-default class 'closql-foreign-key)
(closql--oref obj (closql--oref-default obj 'closql-primary-key))
(closql--oref-default class 'closql-primary-key)))))
([table (alist-get :closql-table props)]
(let ((columns (closql--table-columns db table)))
(aset obj c
(mapcar
(if (length= columns 2) #'cadr #'cdr)
(emacsql
db [:select * :from $i1
:where (= $i2 $s3)
:order-by [(asc $i4)]]
table
(car columns)
(closql--oref obj (closql--oref-default obj 'closql-primary-key))
(cadr columns))))))
([tables (alist-get :closql-tables props)]
(pcase-let ((`(,slot-table ,data-table) tables))
(aset obj c
(mapcar
#'cdr
(emacsql
db [:select $i1 :from $i2
:join $i3 :on (= $i4 $i5)
:where (= $i6 $s7)
:order-by [(asc id)]]
(intern (format "%s:*" data-table))
data-table slot-table
(intern (format "%s:id" slot-table))
(intern (format "%s:id" data-table))
(intern (format "%s:%s" slot-table
(closql--oref-default obj 'closql-table)))
(closql--oref obj (closql--oref-default obj 'closql-primary-key))
(closql--oref obj 'id))))))
((slot-unbound obj (eieio--object-class obj) slot 'oref)))))