From 992a2ad4757f43c02f3d06771c632a408d90ded0 Mon Sep 17 00:00:00 2001
From: Eelco Dolstra <edolstra@gmail.com>
Date: Tue, 25 Sep 2018 18:55:37 +0200
Subject: [PATCH] Move addToStoreFromDump to Store

---
 src/libstore/daemon.cc      | 5 +----
 src/libstore/local-store.hh | 2 +-
 src/libstore/store-api.hh   | 7 +++++++
 3 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/libstore/daemon.cc b/src/libstore/daemon.cc
index cc1436f90..64147027b 100644
--- a/src/libstore/daemon.cc
+++ b/src/libstore/daemon.cc
@@ -316,10 +316,7 @@ static void performOp(TunnelLogger * logger, ref<Store> store,
         logger->startWork();
         if (!savedRegular.regular) throw Error("regular file expected");
 
-        auto store2 = store.dynamic_pointer_cast<LocalStore>();
-        if (!store2) throw Error("operation is only supported by LocalStore");
-
-        Path path = store2->addToStoreFromDump(recursive ? *savedNAR.data : savedRegular.s, baseName, recursive, hashAlgo);
+        Path path = store->addToStoreFromDump(recursive ? *savedNAR.data : savedRegular.s, baseName, recursive, hashAlgo);
         logger->stopWork();
 
         to << path;
diff --git a/src/libstore/local-store.hh b/src/libstore/local-store.hh
index 379a06af8..77253fa4a 100644
--- a/src/libstore/local-store.hh
+++ b/src/libstore/local-store.hh
@@ -157,7 +157,7 @@ public:
        true) or simply the contents of a regular file (if recursive ==
        false). */
     Path addToStoreFromDump(const string & dump, const string & name,
-        bool recursive = true, HashType hashAlgo = htSHA256, RepairFlag repair = NoRepair);
+        bool recursive = true, HashType hashAlgo = htSHA256, RepairFlag repair = NoRepair) override;
 
     Path addTextToStore(const string & name, const string & s,
         const PathSet & references, RepairFlag repair) override;
diff --git a/src/libstore/store-api.hh b/src/libstore/store-api.hh
index 250e1a4bc..115b23cbf 100644
--- a/src/libstore/store-api.hh
+++ b/src/libstore/store-api.hh
@@ -422,6 +422,13 @@ public:
         bool recursive = true, HashType hashAlgo = htSHA256,
         PathFilter & filter = defaultPathFilter, RepairFlag repair = NoRepair) = 0;
 
+    // FIXME: remove?
+    virtual Path addToStoreFromDump(const string & dump, const string & name,
+        bool recursive = true, HashType hashAlgo = htSHA256, RepairFlag repair = NoRepair)
+    {
+        throw Error("addToStoreFromDump() is not supported by this store");
+    }
+
     /* Like addToStore, but the contents written to the output path is
        a regular file containing the given string. */
     virtual Path addTextToStore(const string & name, const string & s,
-- 
GitLab