Function: closql-db

closql-db is a byte-compiled function defined in closql.el.

Signature

(closql-db ARG &rest ARGS)

Implementations

(closql-db (CLASS (subclass closql-database)) &optional LIVEP CONNECTION-CLASS) in `closql.el'.

Undocumented

Source Code

;; Defined in ~/.emacs.d/elpa/closql-20260101.1828/closql.el
(cl-defmethod closql-db ((class (subclass closql-database))
                         &optional livep connection-class)
  (cond-let*
    ([db (oref-default class singleton)]
     [conn (and (not (eq db eieio--unbound))
                (oref db connection))]
     [_(emacsql-live-p conn)]
     db)
    ((not livep)
     (let* ((file (closql--db-prepare-storage class))
            (connection-class (or connection-class
                                  (emacsql-sqlite-default-connection)))
            (conn (make-instance connection-class :file file))
            (db (make-instance class))) ; ignores slot arguments
       (oset db connection conn)
       (emacsql conn [:pragma (= foreign-keys on)])
       (cond-let
         ((not (emacsql-sqlite-list-tables db))
          (closql--db-create-schema db))
         [[code-version (oref-default db version)]
          [data-version (closql--db-get-version db)]]
         ((< code-version data-version)
          (message "Please update %s package (database schema version %s < %s)"
                   (oref-default db name) code-version data-version)
          (oset-default class disabled t)
          (emacsql-close db)
          (setq db nil))
         ((closql--db-update-schema db)))
       db))))