mirror of
https://github.com/EQEmu/Server.git
synced 2026-03-04 16:42:26 +00:00
Update repository generator
This commit is contained in:
parent
f984bd2faf
commit
3c9fe45af5
@ -4,6 +4,7 @@ use warnings FATAL => 'all';
|
|||||||
# Author: Akkadius
|
# Author: Akkadius
|
||||||
# @file: repository-generator.pl
|
# @file: repository-generator.pl
|
||||||
# @description: Script used to generate database repositories
|
# @description: Script used to generate database repositories
|
||||||
|
# @example perl ~/code/utils/scripts/generators/repository-generator.pl ~/server/eqemu_config.json
|
||||||
|
|
||||||
use File::Find;
|
use File::Find;
|
||||||
use Data::Dumper;
|
use Data::Dumper;
|
||||||
@ -12,7 +13,7 @@ use Data::Dumper;
|
|||||||
# args
|
# args
|
||||||
#############################################
|
#############################################
|
||||||
my $eqemu_config = $ARGV[0];
|
my $eqemu_config = $ARGV[0];
|
||||||
my $requested_table_to_generate = $ARGV[1];
|
my $requested_table_to_generate = $ARGV[1] ? $ARGV[1] : "";
|
||||||
|
|
||||||
my $i = 0;
|
my $i = 0;
|
||||||
while ($ARGV[$i]) {
|
while ($ARGV[$i]) {
|
||||||
@ -20,6 +21,11 @@ while ($ARGV[$i]) {
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!-e $eqemu_config) {
|
||||||
|
print "Error! Config file [$eqemu_config] not found\n";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
#############################################
|
#############################################
|
||||||
# database
|
# database
|
||||||
#############################################
|
#############################################
|
||||||
@ -46,25 +52,30 @@ my $pass = $config->{"server"}{"database"}{"password"};
|
|||||||
my $dsn = "dbi:mysql:$database_name:$host:3306";
|
my $dsn = "dbi:mysql:$database_name:$host:3306";
|
||||||
my $connect = DBI->connect($dsn, $user, $pass);
|
my $connect = DBI->connect($dsn, $user, $pass);
|
||||||
|
|
||||||
my $table_names_exec = $connect->prepare(
|
|
||||||
"
|
|
||||||
SELECT
|
|
||||||
TABLE_NAME
|
|
||||||
FROM
|
|
||||||
INFORMATION_SCHEMA.COLUMNS
|
|
||||||
WHERE
|
|
||||||
TABLE_SCHEMA = ?
|
|
||||||
GROUP BY
|
|
||||||
TABLE_NAME
|
|
||||||
";
|
|
||||||
|
|
||||||
$table_names_exec->execute($database_name, $table_to_generate);
|
|
||||||
|
|
||||||
my @tables = ();
|
my @tables = ();
|
||||||
while (my @row = $table_names_exec->fetchrow_array()) {
|
if ($requested_table_to_generate eq "all" || !$requested_table_to_generate) {
|
||||||
push(@tables, $row[0]);
|
|
||||||
|
my $table_names_exec = $connect->prepare(
|
||||||
|
"
|
||||||
|
SELECT
|
||||||
|
TABLE_NAME
|
||||||
|
FROM
|
||||||
|
INFORMATION_SCHEMA.COLUMNS
|
||||||
|
WHERE
|
||||||
|
TABLE_SCHEMA = ?
|
||||||
|
GROUP BY
|
||||||
|
TABLE_NAME
|
||||||
|
");
|
||||||
|
|
||||||
|
$table_names_exec->execute($database_name);
|
||||||
|
|
||||||
|
while (my @row = $table_names_exec->fetchrow_array()) {
|
||||||
|
push(@tables, $row[0]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $generated_repository_files = "";
|
||||||
|
|
||||||
foreach my $table_to_generate (@tables) {
|
foreach my $table_to_generate (@tables) {
|
||||||
my $ex = $connect->prepare(
|
my $ex = $connect->prepare(
|
||||||
"
|
"
|
||||||
@ -263,7 +274,12 @@ foreach my $table_to_generate (@tables) {
|
|||||||
|
|
||||||
print $new_repository;
|
print $new_repository;
|
||||||
|
|
||||||
my $generated_repository = './common/repositories/' . $table_to_generate . '_repository.h';
|
my $generated_repository = './common/repositories/' . $table_to_generate . '_repository.h';
|
||||||
|
my $cmake_generated_reference = $generated_repository;
|
||||||
|
|
||||||
|
$cmake_generated_reference =~ s/.\/common\///g;
|
||||||
|
|
||||||
|
$generated_repository_files .= $cmake_generated_reference . "\n";
|
||||||
|
|
||||||
open(FH, '>', $generated_repository) or die $!;
|
open(FH, '>', $generated_repository) or die $!;
|
||||||
|
|
||||||
@ -272,6 +288,10 @@ foreach my $table_to_generate (@tables) {
|
|||||||
close(FH);
|
close(FH);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print "\n# Make sure to add generated repositories to common/CMakeLists.txt under the repositories section\n\n";
|
||||||
|
|
||||||
|
print $generated_repository_files . "\n";
|
||||||
|
|
||||||
sub trim {
|
sub trim {
|
||||||
my $string = $_[0];
|
my $string = $_[0];
|
||||||
$string =~ s/^\s+//;
|
$string =~ s/^\s+//;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user