relx 0.1.0
A Modern C++23 Type-Safe SQL Query Builder
Loading...
Searching...
No Matches
command_line_tools.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "core.hpp"
4
5#include <fstream>
6#include <functional>
7#include <iostream>
8#include <optional>
9#include <string>
10#include <vector>
11
13
17void print_usage(const char* program_name, const std::vector<std::string>& supported_versions = {});
18
24void print_usage(const char* program_name, const std::vector<std::string>& supported_versions,
25 bool create_available, bool drop_available);
26
31void write_migration_to_file(const Migration& migration, const std::string& filename,
32 bool include_rollback = true);
33
36void print_migration(const Migration& migration);
37
40 enum class Command { HELP, GENERATE, CREATE, DROP, INVALID };
41
43 std::string from_version;
44 std::string to_version;
45 std::string version;
46 std::string output_file;
47 std::string error_message;
48};
49
53CommandLineArgs parse_args(const std::vector<std::string>& args);
54
60 std::function<MigrationResult<Migration>(const std::string&, const std::string&)>;
61
65using CreateMigrationGenerator = std::function<MigrationResult<Migration>(const std::string&)>;
66
70using DropMigrationGenerator = std::function<MigrationResult<Migration>(const std::string&)>;
71
80int run_migration_tool(int argc, char* argv[], const std::vector<std::string>& supported_versions,
81 MigrationGenerator migration_generator,
82 std::optional<CreateMigrationGenerator> create_generator = std::nullopt,
83 std::optional<DropMigrationGenerator> drop_generator = std::nullopt);
84
85} // namespace relx::migrations::cli
Container for migration operations.
Definition core.hpp:332
void print_migration(const Migration &migration)
Print a migration to the console with formatting.
void write_migration_to_file(const Migration &migration, const std::string &filename, bool include_rollback=true)
Write a migration to a SQL file with proper formatting.
CommandLineArgs parse_args(const std::vector< std::string > &args)
Parse command-line arguments for migration tools.
std::function< MigrationResult< Migration >(const std::string &)> CreateMigrationGenerator
Type alias for a function that generates a create table migration.
void print_usage(const char *program_name, const std::vector< std::string > &supported_versions={})
Print usage information for a migration command-line tool.
std::function< MigrationResult< Migration >(const std::string &, const std::string &)> MigrationGenerator
Type alias for a function that generates a migration between two versions.
int run_migration_tool(int argc, char *argv[], const std::vector< std::string > &supported_versions, MigrationGenerator migration_generator, std::optional< CreateMigrationGenerator > create_generator=std::nullopt, std::optional< DropMigrationGenerator > drop_generator=std::nullopt)
Run a complete migration command-line tool.
std::function< MigrationResult< Migration >(const std::string &)> DropMigrationGenerator
Type alias for a function that generates a drop table migration.
Command-line argument parsing result.