;ELC   
;;; Compiled
;;; in Emacs version 29.3
;;; with all optimizations.



(byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\305\306\307\310\311DD\312\313\314\315\316\317\320&	\210\321\322\323\324!\"\210\321\325\326\324!\"\210\321\327\325\"\210\330\327\331\332#\210\333\324\334\325#\335\324\336\337\340$\207" [require closql compat eieio emacsql custom-declare-variable forge-database-file funcall function #[0 "\301\302\"\207" [user-emacs-directory expand-file-name "forge-database.sqlite"] 3 ""] "The file used to store the forge database." :package-version (forge . "0.1.0") :group forge :type file defalias forge-database-p eieio-make-class-predicate forge-database forge-database--eieio-childp eieio-make-child-predicate forge-database-child-p make-obsolete "use (cl-typep ... 'forge-database) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (closql-database) ((name :initform "Forge") (object-class :initform 'forge-repository) (file :initform 'forge-database-file) (schemata :initform 'forge--db-table-schemata) (version :initform 15)) nil] 10)#@71 Create a new object of class type `forge-database'.

(fn &rest SLOTS)
(defalias 'forge-database #[128 "\300\301\302#\207" [apply make-instance forge-database] 5 (#$ . 1108)])
(byte-code "\300\301\302\303#\300\207" [function-put forge-database compiler-macro forge-database--anon-cmacro] 4)#@26 

(fn WHOLE &rest SLOTS)
(defalias 'forge-database--anon-cmacro #[385 "\211@;\204 \207\300\301\302@@#@\303@DABB\304\211@%\207" [macroexp-warn-and-return format "Obsolete name arg %S to constructor %S" identity nil] 8 (#$ . 1404)])
(defvar forge--override-connection-class nil)#@24 

(fn &optional LIVEP)
(defalias 'forge-db #[256 "\301\302#\207" [forge--override-connection-class closql-db forge-database] 5 (#$ . 1694)])#@23 

(fn SQL &rest ARGS)
(defalias 'forge-sql #[385 ";\203 \300\301 \302\303#\"\207\302\300\301 $\207" [emacsql forge-db apply format] 8 (#$ . 1842)])#@23 

(fn SQL &rest ARGS)
(defalias 'forge-sql1 #[385 "\300\301#@@\207" [apply forge-sql] 6 (#$ . 2001)])#@23 

(fn SQL &rest ARGS)
(defalias 'forge-sql-car #[385 "\300\301\302\303#\"\207" [mapcar car apply forge-sql] 8 (#$ . 2110)])#@23 

(fn SQL &rest ARGS)
(defalias 'forge-sql-cdr #[385 "\300\301\302\303#\"\207" [mapcar cdr apply forge-sql] 8 (#$ . 2241)])#@68 Try to connect Forge database on first use of `magit-status' only.
(defalias 'forge-connect-database-once #[0 "\300\301\302\"\210\303 \207" [remove-hook magit-status-mode-hook forge-connect-database-once forge-db] 3 (#$ . 2372)])
(add-hook 'magit-status-mode-hook 'forge-connect-database-once)#@37 Enable logging Forge's SQL queries.
(defalias 'forge-enable-sql-logging #[0 "\300\301 \302\"\303!\210\304\300\305\"!\207" [eieio-oref forge-db connection emacsql-enable-debugging switch-to-buffer-other-window log-buffer] 5 (#$ . 2671) nil])
(defconst forge--db-table-schemata '((repository [(class :not-null) (id :not-null :primary-key) forge-id forge owner name apihost githost remote condition created updated pushed parent description homepage default-branch archived-p fork-p locked-p mirror-p private-p issues-p wiki-p stars watchers (assignees :default eieio-unbound) (forks :default eieio-unbound) (issues :default eieio-unbound) (labels :default eieio-unbound) (revnotes :default eieio-unbound) (pullreqs :default eieio-unbound) selective-p worktree (milestones :default eieio-unbound) issues-until pullreqs-until teams (discussion-categories :default eieio-unbound) (discussions :default eieio-unbound) discussions-p discussions-until]) (assignee [(repository :not-null) (id :not-null :primary-key) login name forge-id] (:foreign-key [repository] :references repository [id] :on-delete :cascade)) (discussion [(class :not-null) (id :not-null :primary-key) repository number answer state author title created updated closed status locked-p category body (cards :default eieio-unbound) (edits :default eieio-unbound) (labels :default eieio-unbound) (participants :default eieio-unbound) (posts :default eieio-unbound) (reactions :default eieio-unbound) (timeline :default eieio-unbound) (marks :default eieio-unbound) note their-id slug saved-p] (:foreign-key [repository] :references repository [id] :on-delete :cascade)) (discussion-category [(repository :not-null) (id :not-null :primary-key) their-id name emoji answerable-p description] (:foreign-key [repository] :references repository [id] :on-delete :cascade)) (discussion-label [(discussion :not-null) (id :not-null)] (:foreign-key [discussion] :references discussion [id] :on-delete :cascade) (:foreign-key [id] :references label [id] :on-delete :cascade)) (discussion-mark [(discussion :not-null) (id :not-null)] (:foreign-key [discussion] :references discussion [id] :on-delete :cascade) (:foreign-key [id] :references mark [id] :on-delete :cascade)) (discussion-post [(class :not-null) (id :not-null :primary-key) their-id number discussion author created updated body (edits :default eieio-unbound) (reactions :default eieio-unbound) (replies :default eieio-unbound)] (:foreign-key [discussion] :references discussion [id] :on-delete :cascade)) (discussion-reply [(class :not-null) (id :not-null :primary-key) their-id number post discussion author created updated body (edits :default eieio-unbound) (reactions :default eieio-unbound)] (:foreign-key [post] :references discussion-post [id] :on-delete :cascade) (:foreign-key [discussion] :references discussion [id] :on-delete :cascade)) (fork [(parent :not-null) (id :not-null :primary-key) owner name] (:foreign-key [parent] :references repository [id] :on-delete :cascade)) (issue [(class :not-null) (id :not-null :primary-key) repository number state author title created updated closed status locked-p milestone body (assignees :default eieio-unbound) (cards :default eieio-unbound) (edits :default eieio-unbound) (labels :default eieio-unbound) (participants :default eieio-unbound) (posts :default eieio-unbound) (reactions :default eieio-unbound) (timeline :default eieio-unbound) (marks :default eieio-unbound) note their-id slug saved-p] (:foreign-key [repository] :references repository [id] :on-delete :cascade)) (issue-assignee [(issue :not-null) (id :not-null)] (:foreign-key [issue] :references issue [id] :on-delete :cascade)) (issue-label [(issue :not-null) (id :not-null)] (:foreign-key [issue] :references issue [id] :on-delete :cascade) (:foreign-key [id] :references label [id] :on-delete :cascade)) (issue-mark [(issue :not-null) (id :not-null)] (:foreign-key [issue] :references issue [id] :on-delete :cascade) (:foreign-key [id] :references mark [id] :on-delete :cascade)) (issue-post [(class :not-null) (id :not-null :primary-key) issue number author created updated body (edits :default eieio-unbound) (reactions :default eieio-unbound)] (:foreign-key [issue] :references issue [id] :on-delete :cascade)) (label [(repository :not-null) (id :not-null :primary-key) name color description] (:foreign-key [repository] :references repository [id] :on-delete :cascade)) (mark [repository (id :not-null :primary-key) name face description]) (milestone [(repository :not-null) (id :not-null :primary-key) number title created updated due closed description] (:foreign-key [repository] :references repository [id] :on-delete :cascade)) (notification [(class :not-null) (id :not-null :primary-key) thread-id repository type topic url title reason last-read updated] (:foreign-key [repository] :references repository [id] :on-delete :cascade)) (pullreq [(class :not-null) (id :not-null :primary-key) repository number state author title created updated closed merged status locked-p editable-p cross-repo-p base-ref base-repo head-ref head-user head-repo milestone body (assignees :default eieio-unbound) (cards :default eieio-unbound) (commits :default eieio-unbound) (edits :default eieio-unbound) (labels :default eieio-unbound) (participants :default eieio-unbound) (posts :default eieio-unbound) (reactions :default eieio-unbound) (review-requests :default eieio-unbound) (reviews :default eieio-unbound) (timeline :default eieio-unbound) (marks :default eieio-unbound) note base-rev head-rev draft-p their-id slug saved-p] (:foreign-key [repository] :references repository [id] :on-delete :cascade)) (pullreq-assignee [(pullreq :not-null) (id :not-null)] (:foreign-key [pullreq] :references pullreq [id] :on-delete :cascade)) (pullreq-label [(pullreq :not-null) (id :not-null)] (:foreign-key [pullreq] :references pullreq [id] :on-delete :cascade) (:foreign-key [id] :references label [id] :on-delete :cascade)) (pullreq-mark [(pullreq :not-null) (id :not-null)] (:foreign-key [pullreq] :references pullreq [id] :on-delete :cascade) (:foreign-key [id] :references mark [id] :on-delete :cascade)) (pullreq-post [(class :not-null) (id :not-null :primary-key) pullreq number author created updated body (edits :default eieio-unbound) (reactions :default eieio-unbound)] (:foreign-key [pullreq] :references pullreq [id] :on-delete :cascade)) (pullreq-review-request [(pullreq :not-null) (id :not-null)] (:foreign-key [pullreq] :references pullreq [id] :on-delete :cascade)) (revnote [(class :not-null) (id :not-null :primary-key) repository commit file line author body] (:foreign-key [repository] :references repository [id] :on-delete :cascade))))
(cl-generic-define-method 'closql--db-update-schema nil '((db forge-database)) 'curried #[257 "\300!\210\301\302\303\"\207" [cl--generic-isnot-nnm-p nil make-closure #[128 "\301\302\300#\303\304#\207" [V0 make-closure #[128 "\302\301\206 \300\"\207" [V0 V1 apply] 4 "\n\n(fn &rest ARGS)"] apply #[514 "\301!\211\302\303\304\"W\203d \305!\210\306\307\"\310CT\310\311\312#\216\242\204a \3131T \314U\2036 \315\316\"\210\317\"\211\262\314U\203J \315\320\"\210\321\240\2620\210\202\" \210\315\322\"\210\323\324!\210\202\" *\266 \207" [emacsql--transaction-level closql--db-get-version eieio-oref-default forge-database version forge--backup-database eieio-oref connection nil make-closure #[0 "\n\303U\205 \300\242?\205 \304\301\305\"\207" [V0 V1 emacsql--transaction-level 1 emacsql [:rollback]] 3] (emacsql-locked) 1 emacsql [:begin] forge--db-update-schema [:commit] t [:rollback] sleep-for 0.05] 11 "\n\n(fn CL--CNM DB)"]] 6 "\n\n(fn DB)"]] 5 "\n\n(fn CL--NM)"])#@19 

(fn DB VERSION)
(defalias 'forge--db-update-schema #[514 "\211T\301U\203$ \302\303\301#\210\304\305\306\236A#\210\307\301\"\210\302\310\301#\210\301\262\211T\311U\203s \302\303\311#\210\304\312\"\210\211\203X \211@\211\242\243\313>\203O \304\314$\210\266A\266\202\2027 \210\304\315\316#\210\304\317\316#\210\307\311\"\210\302\310\311#\210\311\262\211T\320U\203\223 \302\303\320#\210\304\321\"\210\307\320\"\210\302\310\320#\210\320\262\211T\322U\203\263 \302\303\322#\210\304\323\"\210\307\322\"\210\302\310\322#\210\322\262\211T\324U\203O\302\303\324#\210\304\325\"\210\304\326\"\210\304\327\330\236A#\210\304\331\316#\210\304\332\"\211\203\f\211@\211\242\243\211\242\243\211\242\243;\204\333\334!\330\335	@A\"#\210\266A\266\202\202\335 \210\304\336\"\211\203@\211@\211\242\243\211\242\243\211\242\243;\2047\333\337!\330\335	@A\"#\210\266A\266\202\202\210\307\324\"\210\302\310\324#\210\324\262\211T\340U\203y\302\303\340#\210\304\341\"\210\304\342\"\210\304\343\"\210\307\340\"\210\302\310\340#\210\340\262\211T\344U\203\236\302\303\344#\210\304\345\"\210\304\346\"\210\307\344\"\210\302\310\344#\210\344\262\211T\347U\203(\302\303\347#\210\304\350\"\210\304\351\"\210\304\352\"\211\203\361\211@\211\242\243\211\242\243\211\242\243\353\354\355!\356\">\304\357\360\361\203\341\362\202\342\363\n#\n$\266A\266\202\202\271\210\304\364\"\211\203\211@\211\242\243\211\242\243\304\365\360\366\"$\266A\266\202\202\366\210\307\347\"\210\302\310\347#\210\347\262\211T\367U\203e\302\303\367#\210\304\370\"\210\304\371\372\236A#\210\304\373\"\210\304\374\"\210\304\375\"\210\304\376\"\210\307\367\"\210\302\310\367#\210\367\262\211T\377U\203\302\303\377#\210\304\201@ \"\210\304\201A \372\236A#\210\304\201B \"\211\203\237\211@\304\201C #\210A\266\202\202\212\210\304\201D \"\211\203\273\211@\304\201E #\210A\266\202\202\246\210\304\201F \"\211\203\327\211@\304\201G #\210A\266\202\202\302\210\304\201H \"\211\203\363\211@\304\201I #\210A\266\202\202\336\210\304\201J \"\210\304\201K \"\210\307\377\"\210\302\310\377#\210\377\262\211T\201L U\203\270\302\303\201L #\210\304\201M \"\211\203D\211@\304\201N \201O \201P \"$\210A\266\202\202'\210\304\201Q \"\211\203h\211@\304\201R \201O \201S \"$\210A\266\202\202K\210\304\201T \"\210\304\201U \"\211\203\243\211@\211\242\243\211\242\243\304\201V \203\224\201W \202\227\201X $\266A\266\202\202v\210\307\201L \"\210\302\310\201L #\210\201L \262\211T\201Y U\203\344\302\303\201Y #\210\304\201Z \"\210\307\201Y \"\210\302\310\201Y #\210\201Y \262\211T\201[ U\205t\302\303\201[ #\210\304\201\\ \201] \236A#\210\304\201^ \201_ \236A#\210\304\201` \201a \236A#\210\304\201b \201c \236A#\210\304\201d \201e \236A#\210\304\201f \201g \236A#\210\304\201h \"\210\304\201i \"\210\304\201j \"\210\304\201k \"\210\307\201[ \"\210\302\310\201[ #\210\201[ \211\262\207" [forge--db-table-schemata 3 message "Upgrading Forge database from version %s to %s..." emacsql [:create-table pullreq-review-request $S1] pullreq-review-request closql--db-set-version "Upgrading Forge database from version %s to %s...done" 4 [:drop-table notification] (notification mark issue-mark pullreq-mark) [:create-table $i1 $S2] [:alter-table issue :add-column marks :default $s1] eieio-unbound [:alter-table pullreq :add-column marks :default $s1] 5 [:alter-table repository :add-column selective-p :default nil] 6 [:alter-table repository :add-column worktree :default nil] 7 [:alter-table issue :add-column note :default nil] [:alter-table pullreq :add-column note :default nil] [:create-table milestone $S1] milestone [:alter-table repository :add-column milestones :default $s1] [:select [repository id milestone] :from issue :where (notnull milestone)] eieio-oset forge-get-issue forge--object-id [:select [repository id milestone] :from pullreq :where (notnull milestone)] forge-get-pullreq 8 [:alter-table pullreq :add-column base-rev :default nil] [:alter-table pullreq :add-column head-rev :default nil] [:alter-table pullreq :add-column draft-p :default nil] 9 [:alter-table pullreq :add-column their-id :default nil] [:alter-table issue :add-column their-id :default nil] 10 [:alter-table pullreq :add-column slug :default nil] [:alter-table issue :add-column slug :default nil] [:select [pullreq:id pullreq:number repository:class] :from pullreq :join repository :on (= pullreq:repository repository:id)] append closql-where-class-in forge-gitlab-repository--eieio-childp nil [:update pullreq :set (= slug $s1) :where (= id $s2)] format "%s%s" "!" "#" [:select [id number] :from issue] [:update issue :set (= slug $s1) :where (= id $s2)] "#%s" 11 [:drop-table notification] [:create-table notification $S1] notification [:alter-table pullreq :rename-column unread-p :to status] [:alter-table issue :rename-column unread-p :to status] [:alter-table pullreq :add-column saved-p :default nil] [:alter-table issue :add-column saved-p :default nil] 12 [:drop-table notification] [:create-table notification $S1] [:select id :from issue :where (= state 'closed)] [:update issue :set (= state 'completed) :where (= id $s1)] [:select id :from issue :where (isnull status)] [:update issue :set (= state 'done) :where (= id $s1)] [:select id :from pullreq :where (= state 'closed)] [:update pullreq :set (= state 'rejected) :where (= id $s1)] [:select id :from pullreq :where (isnull status)] [:update pullreq :set (= state 'done) :where (= id $s1)] [:alter-table repository :add-column issues-until :default nil] [:alter-table repository :add-column pullreqs-until :default nil] 13 [:select id :from repository :where (isnull issues-until)] [:update repository :set (= issues-until $s1) :where (= id $s2)] forge-sql1 [:select [updated] :from issue :where (= repository $s1) :order-by [(desc updated)] :limit 1] [:select id :from repository :where (isnull pullreqs-until)] [:update repository :set (= pullreqs-until $s1) :where (= id $s2)] [:select [updated] :from pullreq :where (= repository $s1) :order-by [(desc updated)] :limit 1] [:alter-table repository :rename-column sparse-p :to condition] [:select [id condition] :from repository] [:update repository :set (= condition $s1) :where (= id $s2)] :known :tracked 14 [:alter-table repository :add-column teams :default nil] 15 [:create-table discussion $S1] discussion [:create-table discussion-category $S1] discussion-category [:create-table discussion-label $S1] discussion-label [:create-table discussion-mark $S1] discussion-mark [:create-table discussion-post $S1] discussion-post [:create-table discussion-reply $S1] discussion-reply [:alter-table repository :add-column discussion-categories :default 'eieio-unbound] [:alter-table repository :add-column discussions :default 'eieio-unbound] [:alter-table repository :add-column discussions-p :default nil] [:alter-table repository :add-column discussions-until :default nil]] 18 (#$ . 10363)])#@11 

(fn DB)
(defalias 'forge--backup-database #[257 "\301!\302\303\304\305\306\"\307\"@@\"\310\311!\312R\313\314\"\210\315\"\210\313\316\"\207" [forge-database-file file-name-sans-extension format "-v%s" emacsql eieio-oref connection [:pragma user-version] format-time-string "-%Y%m%d-%H%M" ".sqlite" message "Copying Forge database to %s..." copy-file "Copying Forge database to %s...done"] 8 (#$ . 17412)])
(provide 'forge-db)
