Commit c192083d authored by Eric Timmons's avatar Eric Timmons
Browse files

CLPI separates index from object store now

parent bf758b88
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -25,8 +25,10 @@
                                :uri ql-dist-uri
                                :cache-pathname ql-cache-dir
                                :http-client http-client))
        (index (make-instance 'clpi:file-index
                              :root clpi-dir)))
        (index (make-instance 'ql-clpi:ql-index
                              :object-store
                              (make-instance 'clpi:file-object-store
                                             :root clpi-dir))))
    (ql-dist-to-clpi ql-dist index :appendable-p appendable-p)
    index))

+21 −26
Original line number Diff line number Diff line
@@ -6,10 +6,7 @@
(uiop:define-package #:ql-clpi/ql-clpi-index
    (:use #:cl)
  (:import-from #:clpi)
  (:export #:ql-dual-index
           #:ql-file-index
           #:ql-http-index
           #:ql-index
  (:export #:ql-index
           #:ql-index-latest-version-synced
           #:ql-project-version-aliases))

@@ -23,17 +20,8 @@
    :initarg :latest-version-synced
    :accessor ql-index-latest-version-synced)))

(defclass ql-file-index (ql-index clpi:file-index)
  ())

(defclass ql-http-index (ql-index clpi:http-index)
  ())

(defclass ql-dual-index (ql-index clpi:dual-index)
  ())

(defmethod slot-unbound (class (index ql-index) (slot-name (eql 'latest-version-synced)))
  (clpi:with-open-index-object-stream (s index "ext/ql/latest-version-synced"
  (clpi:with-open-object-stream (s (clpi:index-object-store index) "ext/ql/latest-version-synced"
                                   :if-does-not-exist nil)
    (setf (ql-index-latest-version-synced index)
          (when s
@@ -42,7 +30,7 @@

(defmethod clpi:index-save :after ((index ql-index))
  (when (slot-boundp index 'latest-version-synced)
    (clpi:with-open-index-object-stream (s index "ext/ql/latest-version-synced"
    (clpi:with-open-object-stream (s (clpi:index-object-store index) "ext/ql/latest-version-synced"
                                     :direction :output
                                     :if-exists :supersede)
      (clpi:with-clpi-io-syntax ()
@@ -52,6 +40,14 @@
(defmethod clpi:index-project-class ((index ql-index))
  'ql-project)

(defmethod clpi:index-sync :after ((index ql-index))
  (let ((object-store (clpi:index-object-store index)))
    (when (typep object-store 'clpi:dual-object-store)
      (clpi:dual-object-store-update-object object-store "ext/ql/latest-version-synced")
      (dolist (p (clpi:index-projects index))
        (clpi:dual-object-store-update-object object-store
                                              (clpi:project-object-path p "ext/ql/version-aliases"))))))


;; * Projects

@@ -61,9 +57,8 @@
    :accessor ql-project-version-aliases)))

(defmethod slot-unbound (class (project ql-project) (slot-name (eql 'version-aliases)))
  (clpi:with-open-index-object-stream (s (clpi:index project) (clpi:project-object-path
                                                               project
                                                               "ext/ql/version-aliases")
  (clpi:with-open-object-stream (s (clpi:index-object-store (clpi:index project))
                                   (clpi:project-object-path project "ext/ql/version-aliases")
                                   :if-does-not-exist nil)
    (setf (ql-project-version-aliases project)
          (when s
@@ -72,7 +67,7 @@

(defmethod clpi:project-save :after ((project ql-project))
  (when (slot-boundp project 'version-aliases)
    (clpi:with-open-index-object-stream (s (clpi:index project)
    (clpi:with-open-object-stream (s (clpi:index-object-store (clpi:index project))
                                     (clpi:project-object-path project "ext/ql/version-aliases")
                                     :direction :output
                                     :if-exists :supersede)
+1 −3
Original line number Diff line number Diff line
@@ -14,9 +14,7 @@
  (:import-from #:clpi)
  (:export #:ql-dist
           #:ql-dist-to-clpi
           #:ql-dual-index
           #:ql-file-index
           #:ql-http-index
           #:ql-index
           #:project-version-aliases))

(in-package #:ql-clpi/ql-clpi)