@@ -5,7 +5,7 @@ | |||
#include <dds/build/builder.hpp> | |||
#include <dds/error/errors.hpp> | |||
#include <dds/pkg/db.hpp> | |||
#include <dds/remote/remote.hpp> | |||
#include <dds/pkg/remote.hpp> | |||
#include <dds/toolchain/from_json.hpp> | |||
using namespace dds; | |||
@@ -16,7 +16,7 @@ int build(const options& opts) { | |||
if (!opts.build.add_repos.empty()) { | |||
auto cat = opts.open_catalog(); | |||
for (auto& str : opts.build.add_repos) { | |||
auto repo = remote_repository::connect(str); | |||
auto repo = pkg_remote::connect(str); | |||
repo.store(cat.database()); | |||
} | |||
} |
@@ -3,16 +3,16 @@ | |||
#include "./pkg_repo_err_handle.hpp" | |||
#include <dds/pkg/db.hpp> | |||
#include <dds/remote/remote.hpp> | |||
#include <dds/pkg/remote.hpp> | |||
namespace dds::cli::cmd { | |||
static int _pkg_repo_add(const options& opts) { | |||
auto cat = opts.open_catalog(); | |||
auto repo = remote_repository::connect(opts.pkg.repo.add.url); | |||
auto repo = pkg_remote::connect(opts.pkg.repo.add.url); | |||
repo.store(cat.database()); | |||
if (opts.pkg.repo.add.update) { | |||
repo.update_catalog(cat.database()); | |||
repo.update_pkg_db(cat.database()); | |||
} | |||
return 0; | |||
} |
@@ -3,7 +3,7 @@ | |||
#include "./pkg_repo_err_handle.hpp" | |||
#include <dds/pkg/db.hpp> | |||
#include <dds/remote/remote.hpp> | |||
#include <dds/pkg/remote.hpp> | |||
namespace dds::cli::cmd { | |||
@@ -3,8 +3,6 @@ | |||
#include "./error_handler.hpp" | |||
#include "./options.hpp" | |||
#include <dds/pkg/db.hpp> | |||
#include <dds/remote/remote.hpp> | |||
#include <dds/util/paths.hpp> | |||
#include <dds/util/result.hpp> | |||
@@ -12,6 +12,7 @@ | |||
#include <neo/sqlite3/exec.hpp> | |||
#include <neo/sqlite3/iter_tuples.hpp> | |||
#include <neo/sqlite3/single.hpp> | |||
#include <neo/sqlite3/transaction.hpp> | |||
#include <nlohmann/json.hpp> | |||
#include <range/v3/range/conversion.hpp> | |||
#include <range/v3/view/join.hpp> |
@@ -2,22 +2,20 @@ | |||
#include "./info.hpp" | |||
#include <dds/deps.hpp> | |||
#include <dds/pkg/id.hpp> | |||
#include <dds/util/fs.hpp> | |||
#include <dds/util/glob.hpp> | |||
#include <neo/sqlite3/database.hpp> | |||
#include <neo/sqlite3/statement.hpp> | |||
#include <neo/sqlite3/statement_cache.hpp> | |||
#include <neo/sqlite3/transaction.hpp> | |||
#include <string> | |||
#include <variant> | |||
#include <vector> | |||
namespace dds { | |||
struct dependency; | |||
struct pkg_id; | |||
class pkg_db { | |||
neo::sqlite3::database _db; | |||
mutable neo::sqlite3::statement_cache _stmt_cache{_db}; |
@@ -59,7 +59,7 @@ struct remote_db { | |||
} // namespace | |||
remote_repository remote_repository::connect(std::string_view url_str) { | |||
pkg_remote pkg_remote::connect(std::string_view url_str) { | |||
DDS_E_SCOPE(e_url_string{std::string(url_str)}); | |||
const auto url = neo::url::parse(url_str); | |||
@@ -70,7 +70,7 @@ remote_repository remote_repository::connect(std::string_view url_str) { | |||
return {name, url}; | |||
} | |||
void remote_repository::store(nsql::database_ref db) { | |||
void pkg_remote::store(nsql::database_ref db) { | |||
auto st = db.prepare(R"( | |||
INSERT INTO dds_cat_remotes (name, gen_ident, remote_url) | |||
VALUES (?, ?, ?) | |||
@@ -80,7 +80,7 @@ void remote_repository::store(nsql::database_ref db) { | |||
nsql::exec(st, _name, "[placeholder]", _base_url.to_string()); | |||
} | |||
void remote_repository::update_catalog(nsql::database_ref db) { | |||
void pkg_remote::update_pkg_db(nsql::database_ref db) { | |||
dds_log(info, "Pulling repository contents for {} [{}]", _name, _base_url.to_string()); | |||
auto rdb = remote_db::download_and_open_for_base(_base_url); | |||
@@ -174,8 +174,8 @@ void dds::update_all_remotes(nsql::database_ref db) { | |||
for (const auto& [name, remote_url] : tups) { | |||
DDS_E_SCOPE(e_url_string{remote_url}); | |||
remote_repository repo{name, neo::url::parse(remote_url)}; | |||
repo.update_catalog(db); | |||
pkg_remote repo{name, neo::url::parse(remote_url)}; | |||
repo.update_pkg_db(db); | |||
} | |||
dds_log(info, "Recompacting database..."); |
@@ -1,31 +1,26 @@ | |||
#pragma once | |||
#include <dds/util/fs.hpp> | |||
#include <dds/util/result.hpp> | |||
#include <neo/concepts.hpp> | |||
#include <neo/sqlite3/database.hpp> | |||
#include <neo/url.hpp> | |||
#include <string_view> | |||
#include <variant> | |||
namespace dds { | |||
class remote_repository { | |||
class pkg_remote { | |||
std::string _name; | |||
neo::url _base_url; | |||
public: | |||
remote_repository(std::string name, neo::url url) | |||
pkg_remote(std::string name, neo::url url) | |||
: _name(std::move(name)) | |||
, _base_url(std::move(url)) {} | |||
remote_repository() = default; | |||
pkg_remote() = default; | |||
static remote_repository connect(std::string_view url); | |||
static pkg_remote connect(std::string_view url); | |||
void store(neo::sqlite3::database_ref); | |||
void update_catalog(neo::sqlite3::database_ref); | |||
void update_pkg_db(neo::sqlite3::database_ref); | |||
}; | |||
void update_all_remotes(neo::sqlite3::database_ref); |