function data_href: new (optional) argument $details
[www.energie.vellum.cz.git] / obsah_init.pl
index 917e2da..d2ded01 100755 (executable)
@@ -6,7 +6,7 @@ use strict;
 use DBI;
 
 use vars qw/$db_driver $db_host $db_user $db_pwd $DB_PWD $db_name $db/;
-use vars qw/$tb_obsah/;
+use vars qw/$tb_obsah $tb_clanek/;
 
 $db_driver="mysql";
 $db_host="";
@@ -14,6 +14,7 @@ $db_user="short";
 $DB_PWD=$ENV{"HOME"}."/priv/mysql.${db_user}.pwd";
 $db_name="short";
 $tb_obsah="energie_obsah";
+$tb_clanek="energie_clanek";
 
 open DB_PWD or die "Failed open \"$DB_PWD\": $!";
 $db_pwd=<DB_PWD>;
@@ -41,8 +42,19 @@ eval { &db_do("drop table $tb_obsah") };
 
 &db_do("alter table $tb_obsah add unique (year,month)");
 
+eval { &db_do("drop table $tb_clanek") };
 
-use vars qw/$insert_tb_obsah $year $month $month_last $sequential $contents $first/;
+&db_do("create table $tb_clanek ("
+               ."year year(4) not null,"
+               ."month tinyint not null,"
+               ."id tinyint not null,"
+               ."name text not null,"
+               ."contents text not null"
+               .")");
+
+&db_do("alter table $tb_clanek add unique (year,month,id)");
+
+use vars qw/$insert_tb_obsah $insert_tb_clanek $year $month $month_last $sequential $contents $first $article_id/;
 
 sub where
 {
@@ -68,10 +80,13 @@ sub flush_month
        undef $year,$month;
        undef $contents;
        undef $first;
+       undef $article_id;
 }
 
 $insert_tb_obsah=$db->prepare("insert into $tb_obsah (year,month,month_last,sequential,contents) values (?,?,?,?,?)")
                or die "Prepare fail: $!";
+$insert_tb_clanek=$db->prepare("insert into $tb_clanek (year,month,id,name,contents) values (?,?,?,?,?)")
+               or die "Prepare fail: $!";
 
 while (<>) {
        chomp;
@@ -84,12 +99,23 @@ while (<>) {
                $contents="";
                next;
                }
+       if (/^#(.+)$/) {
+my( $clanek )="";
+my( $line );
+               while (($line=<>)!~/^#$/) {
+                       die "Article EOF marker not found".&where() if (!$line);
+                       $clanek.=$line;
+                       }
+               # $article_id probably should not be zero
+               $insert_tb_clanek->execute($year,$month,++$article_id,$1,$clanek) or die "SQL insert failure: $!";
+               next;
+               }
        if (/^Pøíloha:$/) {
                die "Multiple \"Pøíloha\"s".&where() if ($contents=~/\004/);
                $contents.="\004";
                next;
                }
-       if (/^[^[:space:]]/ || (/^\s/ && $contents=~/\004/)) {
+       if (/^[^ \t]/ || (/^\s/ && $contents=~/\004/)) {
                $contents.="\001$_\002";
                $first=$_;
                next;