From c5568c594b74f424a02bf9e59b58741ce5941c8d Mon Sep 17 00:00:00 2001 From: Andreas Gerler Date: Thu, 18 Jul 2024 15:15:08 +0200 Subject: [PATCH] update closql Signed-off-by: Andreas Gerler --- elpa/closql-20230520.1519/closql-autoloads.el | 26 ----- elpa/closql-20230520.1519/closql-pkg.el | 16 --- elpa/closql-20240415.1534/closql-autoloads.el | 28 +++++ elpa/closql-20240415.1534/closql-pkg.el | 16 +++ .../closql.el | 103 +++++++----------- 5 files changed, 85 insertions(+), 104 deletions(-) delete mode 100644 elpa/closql-20230520.1519/closql-autoloads.el delete mode 100644 elpa/closql-20230520.1519/closql-pkg.el create mode 100644 elpa/closql-20240415.1534/closql-autoloads.el create mode 100644 elpa/closql-20240415.1534/closql-pkg.el rename elpa/{closql-20230520.1519 => closql-20240415.1534}/closql.el (89%) diff --git a/elpa/closql-20230520.1519/closql-autoloads.el b/elpa/closql-20230520.1519/closql-autoloads.el deleted file mode 100644 index 3d07ad85..00000000 --- a/elpa/closql-20230520.1519/closql-autoloads.el +++ /dev/null @@ -1,26 +0,0 @@ -;;; closql-autoloads.el --- automatically extracted autoloads -*- lexical-binding: t -*- -;; -;;; Code: - -(add-to-list 'load-path (directory-file-name - (or (file-name-directory #$) (car load-path)))) - - -;;;### (autoloads nil "closql" "closql.el" (0 0 0 0)) -;;; Generated autoloads from closql.el - -(register-definition-prefixes "closql" '("closql-" "eieio-")) - -;;;*** - -;;;### (autoloads nil nil ("closql-pkg.el") (0 0 0 0)) - -;;;*** - -;; Local Variables: -;; version-control: never -;; no-byte-compile: t -;; no-update-autoloads: t -;; coding: utf-8 -;; End: -;;; closql-autoloads.el ends here diff --git a/elpa/closql-20230520.1519/closql-pkg.el b/elpa/closql-20230520.1519/closql-pkg.el deleted file mode 100644 index 27748e78..00000000 --- a/elpa/closql-20230520.1519/closql-pkg.el +++ /dev/null @@ -1,16 +0,0 @@ -(define-package "closql" "20230520.1519" "Store EIEIO objects using EmacSQL" - '((emacs "25.1") - (compat "29.1.3.4") - (emacsql "20230220")) - :commit "85ac7b8a894a4e259439d79eb6bd6f5129770905" :authors - '(("Jonas Bernoulli" . "jonas@bernoul.li")) - :maintainers - '(("Jonas Bernoulli" . "jonas@bernoul.li")) - :maintainer - '("Jonas Bernoulli" . "jonas@bernoul.li") - :keywords - '("extensions") - :url "https://github.com/emacscollective/closql") -;; Local Variables: -;; no-byte-compile: t -;; End: diff --git a/elpa/closql-20240415.1534/closql-autoloads.el b/elpa/closql-20240415.1534/closql-autoloads.el new file mode 100644 index 00000000..b458de91 --- /dev/null +++ b/elpa/closql-20240415.1534/closql-autoloads.el @@ -0,0 +1,28 @@ +;;; closql-autoloads.el --- automatically extracted autoloads (do not edit) -*- lexical-binding: t -*- +;; Generated by the `loaddefs-generate' function. + +;; This file is part of GNU Emacs. + +;;; Code: + +(add-to-list 'load-path (or (and load-file-name (directory-file-name (file-name-directory load-file-name))) (car load-path))) + + + +;;; Generated autoloads from closql.el + +(register-definition-prefixes "closql" '("closql-" "eieio-")) + +;;; End of scraped data + +(provide 'closql-autoloads) + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; no-native-compile: t +;; coding: utf-8-emacs-unix +;; End: + +;;; closql-autoloads.el ends here diff --git a/elpa/closql-20240415.1534/closql-pkg.el b/elpa/closql-20240415.1534/closql-pkg.el new file mode 100644 index 00000000..6b39bf2e --- /dev/null +++ b/elpa/closql-20240415.1534/closql-pkg.el @@ -0,0 +1,16 @@ +(define-package "closql" "20240415.1534" "Store EIEIO objects using EmacSQL" + '((emacs "25.1") + (compat "29.1.4.5") + (emacsql "20240124")) + :commit "2bff36edd28c9a0d0c25b545b3837fa874376cc5" :authors + '(("Jonas Bernoulli" . "emacs.closql@jonas.bernoulli.dev")) + :maintainers + '(("Jonas Bernoulli" . "emacs.closql@jonas.bernoulli.dev")) + :maintainer + '("Jonas Bernoulli" . "emacs.closql@jonas.bernoulli.dev") + :keywords + '("extensions") + :url "https://github.com/emacscollective/closql") +;; Local Variables: +;; no-byte-compile: t +;; End: diff --git a/elpa/closql-20230520.1519/closql.el b/elpa/closql-20240415.1534/closql.el similarity index 89% rename from elpa/closql-20230520.1519/closql.el rename to elpa/closql-20240415.1534/closql.el index 9584b2b9..92bedf57 100644 --- a/elpa/closql-20230520.1519/closql.el +++ b/elpa/closql-20240415.1534/closql.el @@ -1,15 +1,15 @@ ;;; closql.el --- Store EIEIO objects using EmacSQL -*- lexical-binding:t -*- -;; Copyright (C) 2016-2023 Jonas Bernoulli +;; Copyright (C) 2016-2024 Jonas Bernoulli -;; Author: Jonas Bernoulli +;; Author: Jonas Bernoulli ;; Homepage: https://github.com/emacscollective/closql ;; Keywords: extensions ;; Package-Requires: ( ;; (emacs "25.1") -;; (compat "29.1.3.4") -;; (emacsql "20230220")) +;; (compat "29.1.4.5") +;; (emacsql "20240124")) ;; SPDX-License-Identifier: GPL-3.0-or-later @@ -89,32 +89,20 @@ (defun closql-oref (obj slot) (cl-check-type slot symbol) - (cl-check-type obj (or eieio-object class)) - (let* ((class (cond ((symbolp obj) - (error "eieio-oref called on a class: %s" obj) - (cond - ((fboundp 'eieio--full-class-object) ; Emacs >= 27 - (eieio--full-class-object obj)) - ((fboundp 'eieio-class-un-autoload) ; Emacs < 27 - (let ((c (cl--find-class obj))) - (if (eieio--class-p c) (eieio-class-un-autoload obj)) - c)))) - (t (eieio--object-class obj)))) + (let* ((class (eieio--object-class obj)) (c (eieio--slot-name-index class slot))) (if (not c) (if (setq c (eieio--class-slot-name-index class slot)) (aref (eieio--class-class-allocation-values class) c) (slot-missing obj slot 'oref)) - (cl-check-type obj eieio-object) (let ((value (aref obj c)) - (class (closql--slot-class obj slot)) - (table (closql--slot-table obj slot)) - (db (closql--oref obj 'closql-database))) + (db (closql--oref obj 'closql-database)) + class table) (cond - (class + ((not (eq value eieio--unbound)) value) + ((setq class (closql--slot-class obj slot)) (aset obj c - (mapcar (lambda (row) - (closql--remake-instance class db row)) + (mapcar (lambda (row) (closql--remake-instance class db row)) (emacsql db (vconcat [:select * :from $i1 :where (= $i2 $s3)] @@ -127,23 +115,19 @@ (closql--oref obj (oref-default obj closql-primary-key)) (oref-default class closql-primary-key))))) - (table - (if (eq value eieio--unbound) - (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 (oref-default obj closql-primary-key)) - (cadr columns))))) - value)) - (t - (eieio-barf-if-slot-unbound value obj slot 'oref))))))) + ((setq table (closql--slot-table obj slot)) + (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 (oref-default obj closql-primary-key)) + (cadr columns)))))) + ((slot-unbound obj (eieio--object-class obj) slot 'oref))))))) ;;;; Oset @@ -158,7 +142,6 @@ (aset obj (eieio--slot-name-index (eieio--object-class obj) slot) value)) (defun closql-oset (obj slot value) - (cl-check-type obj eieio-object) (cl-check-type slot symbol) (let* ((class (eieio--object-class obj)) (c (eieio--slot-name-index class slot))) @@ -327,7 +310,7 @@ (message "Please update %s package (database schema version %s < %s)" (oref-default db name) code-version data-version) - (oset-default db disabled t) + (oset-default class disabled t) (emacsql-close db) (setq db nil)) ((closql--db-update-schema db))))) @@ -461,7 +444,8 @@ (defun closql--table-columns (db table &optional prefixed) (mapcar (if prefixed - (lambda (col) (intern (format "%s:%s" table (cadr col)))) + (let ((prefix (if (stringp prefixed) prefixed table))) + (lambda (col) (intern (format "%s:%s" prefix (cadr col))))) #'cadr) (emacsql db [:pragma (funcall table-info $i1)] table))) @@ -632,30 +616,25 @@ (defun closql--iref (obj slot) (pcase-let* ((db (closql--oref obj 'closql-database)) - (`(,d-table ,i-table) + (`(,slot-table ,data-table) (closql--slot-tables obj slot)) - (d-cols (closql--table-columns db d-table)) - (i-cols (closql--table-columns db i-table)) - (obj-id (closql--oref obj (oref-default obj closql-primary-key)))) - (emacsql db (format "\ -SELECT DISTINCT %s FROM %s AS d, %s AS i -WHERE d.%s = i.%s AND d.%s = '%S';" - (mapconcat (apply-partially #'format "i.%s") - (cddr i-cols) ", ") - d-table - i-table - (cadr d-cols) - (cadr i-cols) - (car d-cols) - obj-id)))) + (`(,where ,slot-join) (closql--table-columns db slot-table)) + (`(,_ ,data-join . ,select) (closql--table-columns db data-table)) + (object-id (closql--oref obj (oref-default obj closql-primary-key)))) + (emacsql db [:select $i1 :from $i2 :join $i3 + :on (= $i4 $i5) + :where (= $i6 $s7) :order-by [(asc $i8)]] + (vconcat select) data-table slot-table + (intern (format "%s:%s" slot-table slot-join)) + (intern (format "%s:%s" data-table data-join)) + where object-id (car select)))) (defun closql--slot-tables (obj slot) - (let ((tbls (closql--slot-get obj slot :closql-table))) - (unless (listp tbls) + (let ((tables (closql--slot-get obj slot :closql-table))) + (unless (listp tables) (error "%s isn't an indirect slot" slot)) - (pcase-let ((`(,d-tbl ,i-tbl) tbls)) - (list (intern (string-replace "-" "_" (symbol-name d-tbl))) - (intern (string-replace "-" "_" (symbol-name i-tbl))))))) + (list (intern (string-replace "-" "_" (symbol-name (nth 0 tables)))) + (intern (string-replace "-" "_" (symbol-name (nth 1 tables))))))) ;;; Utilities -- 2.47.3