summaryrefslogtreecommitdiffstats
path: root/src/djinterop/impl/database_impl.hpp
blob: 79faac68bcb49e2aa4dd46ab721a70f1c244c6d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#pragma once

#include <string>
#include <vector>

#include <boost/optional.hpp>
#include <boost/utility/string_view.hpp>

#include <djinterop/crate.hpp>
#include <djinterop/track.hpp>

namespace djinterop
{
class database_impl
{
public:
    virtual ~database_impl();

    virtual boost::optional<crate> crate_by_id(int64_t id) = 0;
    virtual std::vector<crate> crates() = 0;
    virtual std::vector<crate> crates_by_name(boost::string_view name) = 0;
    virtual crate create_crate(boost::string_view name) = 0;
    virtual track create_track(boost::string_view relative_path) = 0;
    virtual std::string directory() = 0;
    virtual bool is_supported() = 0;
    virtual void verify() = 0;
    virtual void remove_crate(crate cr) = 0;
    virtual void remove_track(track tr) = 0;
    virtual std::vector<crate> root_crates() = 0;
    virtual boost::optional<track> track_by_id(int64_t id) = 0;
    virtual std::vector<track> tracks() = 0;
    virtual std::vector<track> tracks_by_relative_path(
        boost::string_view relative_path) = 0;
    virtual std::string uuid() = 0;
    virtual semantic_version version() = 0;
};

}  // namespace djinterop