db/Interface: add virtual method Update()
For database plugins that don't use the UpdateService.
This commit is contained in:
parent
0c47685e02
commit
aa0f06d6b7
@ -49,6 +49,7 @@
|
|||||||
|
|
||||||
#ifdef ENABLE_DATABASE
|
#ifdef ENABLE_DATABASE
|
||||||
#include "DatabaseCommands.hxx"
|
#include "DatabaseCommands.hxx"
|
||||||
|
#include "db/Interface.hxx"
|
||||||
#include "db/update/Service.hxx"
|
#include "db/update/Service.hxx"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -242,6 +243,25 @@ handle_update(Client &client, UpdateService &update,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static CommandResult
|
||||||
|
handle_update(Client &client, Database &db,
|
||||||
|
const char *uri_utf8, bool discard)
|
||||||
|
{
|
||||||
|
Error error;
|
||||||
|
unsigned id = db.Update(uri_utf8, discard, error);
|
||||||
|
if (id > 0) {
|
||||||
|
client_printf(client, "updating_db: %i\n", id);
|
||||||
|
return CommandResult::OK;
|
||||||
|
} else if (error.IsDefined()) {
|
||||||
|
return print_error(client, error);
|
||||||
|
} else {
|
||||||
|
/* Database::Update() has returned 0 without setting
|
||||||
|
the Error: the method is not implemented */
|
||||||
|
command_error(client, ACK_ERROR_NO_EXIST, "Not implemented");
|
||||||
|
return CommandResult::ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static CommandResult
|
static CommandResult
|
||||||
@ -267,6 +287,10 @@ handle_update(Client &client, unsigned argc, char *argv[], bool discard)
|
|||||||
UpdateService *update = client.partition.instance.update;
|
UpdateService *update = client.partition.instance.update;
|
||||||
if (update != nullptr)
|
if (update != nullptr)
|
||||||
return handle_update(client, *update, path, discard);
|
return handle_update(client, *update, path, discard);
|
||||||
|
|
||||||
|
Database *db = client.partition.instance.database;
|
||||||
|
if (db != nullptr)
|
||||||
|
return handle_update(client, *db, path, discard);
|
||||||
#else
|
#else
|
||||||
(void)argc;
|
(void)argc;
|
||||||
(void)argv;
|
(void)argv;
|
||||||
|
@ -115,6 +115,18 @@ public:
|
|||||||
DatabaseStats &stats,
|
DatabaseStats &stats,
|
||||||
Error &error) const = 0;
|
Error &error) const = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the database. Returns the job id on success, 0 on
|
||||||
|
* error (with #Error set) and 0 if not implemented (#Error
|
||||||
|
* not set).
|
||||||
|
*/
|
||||||
|
virtual unsigned Update(gcc_unused const char *uri_utf8,
|
||||||
|
gcc_unused bool discard,
|
||||||
|
gcc_unused Error &error) {
|
||||||
|
/* not implemented: return 0 and don't set an Error */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the time stamp of the last database update.
|
* Returns the time stamp of the last database update.
|
||||||
* Returns 0 if that is not not known/available.
|
* Returns 0 if that is not not known/available.
|
||||||
|
Loading…
Reference in New Issue
Block a user