Add abstract class for datastore access

Change-Id: Ib34ebd24ae639ddd3640e7f6636b236d3232236e
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0db1e2c..3d71ccd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -63,6 +63,11 @@
     )
 target_link_libraries(schemas PUBLIC Boost::boost)
 
+add_library(datastoreaccess STATIC
+    src/datastore_access.cpp
+    )
+target_link_libraries(datastoreaccess PUBLIC Boost::boost)
+
 add_library(yangschema STATIC
     src/yang_schema.cpp
     )
diff --git a/src/datastore_access.cpp b/src/datastore_access.cpp
new file mode 100644
index 0000000..2b7243b
--- /dev/null
+++ b/src/datastore_access.cpp
@@ -0,0 +1,11 @@
+/*
+ * Copyright (C) 2018 CESNET, https://photonics.cesnet.cz/
+ * Copyright (C) 2018 FIT CVUT, https://fit.cvut.cz/
+ *
+ * Written by Václav Kubernát <kubervac@fit.cvut.cz>
+ *
+*/
+
+#include "datastore_access.hpp"
+
+DatastoreAccess::~DatastoreAccess() = default;
diff --git a/src/datastore_access.hpp b/src/datastore_access.hpp
new file mode 100644
index 0000000..c7a7ee7
--- /dev/null
+++ b/src/datastore_access.hpp
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2018 CESNET, https://photonics.cesnet.cz/
+ * Copyright (C) 2018 FIT CVUT, https://fit.cvut.cz/
+ *
+ * Written by Václav Kubernát <kubervac@fit.cvut.cz>
+ *
+*/
+
+#pragma once
+
+#include <string>
+#include "ast_values.hpp"
+
+/*! \class DatastoreAccess
+ *     \brief Abstract class for accessing a datastore
+ */
+
+
+class DatastoreAccess {
+public:
+    virtual ~DatastoreAccess() = 0;
+    virtual std::map<std::string, leaf_data_> getItems(const std::string& path) = 0;
+    virtual void setLeaf(const std::string& path, leaf_data_ value) = 0;
+    virtual void createPresenceContainer(const std::string& path) = 0;
+    virtual void deletePresenceContainer(const std::string& path) = 0;
+};