ClickHouse

Форк
0
/
CommandMove.cpp 
59 строк · 1.5 Кб
1
#include "ICommand.h"
2
#include <Interpreters/Context.h>
3

4
namespace DB
5
{
6

7
namespace ErrorCodes
8
{
9
    extern const int BAD_ARGUMENTS;
10
}
11

12
class CommandMove final : public ICommand
13
{
14
public:
15
    CommandMove()
16
    {
17
        command_name = "move";
18
        description = "Move file or directory from `from_path` to `to_path`";
19
        usage = "move [OPTION]... <FROM_PATH> <TO_PATH>";
20
    }
21

22
    void processOptions(
23
        Poco::Util::LayeredConfiguration &,
24
        po::variables_map &) const override
25
    {}
26

27
    void execute(
28
        const std::vector<String> & command_arguments,
29
        std::shared_ptr<DiskSelector> & disk_selector,
30
        Poco::Util::LayeredConfiguration & config) override
31
    {
32
        if (command_arguments.size() != 2)
33
        {
34
            printHelpMessage();
35
            throw DB::Exception(DB::ErrorCodes::BAD_ARGUMENTS, "Bad Arguments");
36
        }
37

38
        String disk_name = config.getString("disk", "default");
39

40
        const String & path_from = command_arguments[0];
41
        const String & path_to = command_arguments[1];
42

43
        DiskPtr disk = disk_selector->get(disk_name);
44

45
        String relative_path_from = validatePathAndGetAsRelative(path_from);
46
        String relative_path_to = validatePathAndGetAsRelative(path_to);
47

48
        if (disk->isFile(relative_path_from))
49
            disk->moveFile(relative_path_from, relative_path_to);
50
        else
51
            disk->moveDirectory(relative_path_from, relative_path_to);
52
    }
53
};
54
}
55

56
std::unique_ptr <DB::ICommand> makeCommandMove()
57
{
58
    return std::make_unique<DB::CommandMove>();
59
}
60

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.