]> mj.ucw.cz Git - pciids.git/blob - initdb.pl
5194321721e1092a89259e46ff4a85bf76adbb1c
[pciids.git] / initdb.pl
1 #!/usr/bin/perl
2
3 #       PciIds web database
4 #       Copyright (C) 2008 Michal Vaner (vorner@ucw.cz)
5 #
6 #       This program is free software; you can redistribute it and/or modify
7 #       it under the terms of the GNU General Public License as published by
8 #       he Free Software Foundation; either version 2 of the License, or
9 #       (at your option) any later version.
10 #
11 #       This program is distributed in the hope that it will be useful,
12 #       but WITHOUT ANY WARRANTY; without even the implied warranty of
13 #       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 #
15 #       GNU General Public License for more details.
16 #
17 #       You should have received a copy of the GNU General Public License
18 #       along with this program; if not, write to the Free Software
19 #       Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
20
21 use strict;
22 use warnings;
23 BEGIN {
24         unshift @INC, ".";
25 }
26 use PciIds::Config;
27 use PciIds::Db;
28 use PciIds::Startup;
29 use DBI;
30
31 my @lines;
32 my $tablename;
33
34 defConf( { "dbcharset" => "UTF8", "dbtype" => "InnoDB" } );
35
36 my %replaces = (
37         "CHARSET" => "CHARSET ".$config{"dbcharset"}
38 );
39
40 sub createTable( $ ) {
41         die "Invalid table definition\n" unless( defined( $tablename ) && @lines );
42         my $nt = $_[ 0 ]->prepare( "CREATE TABLE ".$tablename." (".( join "\n", @lines ).") TYPE = $config{dbtype};" );
43         $nt->execute();
44         @lines = ();
45         print "Created table $tablename\n";
46         undef $tablename;
47 }
48
49 my $dbh = connectDb();
50 open TABLES, $directory."cf/tables" or die "Could not open table definitions\n";
51 foreach( <TABLES> ) {
52         chomp;
53         if( /^\s*$/ ) {
54                 createTable( $dbh );
55         } elsif( s/^@// ) {
56                 $tablename = $_;
57         } else {
58                 s/#.*//;
59                 s/<<([^<>]+)>>/$replaces{$1}/g;
60                 push @lines, $_;
61         }
62 }
63 close TABLES;
64 createTable( $dbh );
65 $dbh->commit();
66 $dbh->disconnect;