Projekt: Hesla Jednoty bratrské/2018/HesSQL.pm

Z Wikiverzity
Skočit na navigaci Skočit na vyhledávání

HesSQL.pm[editovat]

Perlovský modul pro práci s databází Hesel Jednoty bratrské – viz Projekt: Hesla Jednoty bratrské/2018/hes-stru.sql.

#! /usr/bin/perl -w
# společná část programů (struktury MySQL databáze):
# hes-sql-load.pl	# načtení databáze z tabulky `import` - německý originál losungen
# hes-sql-transl.pl	# převod do češtiny
# version 0.2 – rok 2018 Quotes

package HesSQL;
use Exporter;
@ISA = qw(Exporter);
@EXPORT_OK = qw($dbh $bib_dbh $transbook $nbook $bookname $bibleverse $import_r $day_cs_r $day_w $dayname_w
      $losung_w $reading_w $song_r_de $song_w $song_u_de_text $comment_w $drittetext_w $day_r $losung_r $reading_r $seq_w $quote_w) ;

#use strict;	# nezvládnul jsem názvy globálů
use DBI;

#use Symbol;
#qualify ($dbh);

my $year	= '18';
my $hes_dbname	= "hes$year";
my $bib_dbname	= "bible";
my $hostname	= 'localhost';
my $hes_dsn	= "DBI:mysql:database=$hes_dbname; host=$hostname";
my $bib_dsn	= "DBI:mysql:database=$bib_dbname; host=$hostname";
my $user	= 'petr';
my $password	= '********';


$dbh = DBI->connect($hes_dsn, $user, $password, { RaiseError=>1,AutoCommit=>0 })
  || die "!!Chyba připojení k databázi hesel $hes_dbname č. $DBI::err: $DBI::errstr\n"; # uplatní se jen při RaiseError=>0

$bib_dbh = DBI->connect($bib_dsn, $user, $password, { RaiseError=>1,AutoCommit=>0 })
  || die "!!Chyba připojení k biblické databázi $bib_dbname č. $DBI::err: $DBI::errstr\n"; # uplatní se jen při RaiseError=>0

$dbh->do("SET NAMES `utf8`");
$bib_dbh->do("SET NAMES `utf8`");

### BIBLE ###

# převod německého názvu knihy z Losungen na český, používaný v Heslech
$transbook = $bib_dbh->prepare("SELECT `name` FROM `book` WHERE `trans`='hes' AND b IN
  (SELECT `b` FROM `book` WHERE `trans`='los' AND `name`=?)"); 

#číslo knihy podle jejího názvu v Losungen 
$nbook =  $bib_dbh->prepare("SELECT `b` FROM `book` WHERE `trans`='los' AND `name`=?");

#název knihy podle čísla
$bookname =  $bib_dbh->prepare("SELECT `name` FROM `book` WHERE `b`=? AND `trans`=? AND `long`=?");

# biblický verš
$bibleverse =  $bib_dbh->prepare("SELECT `text` FROM `verse` WHERE `id`=?");

### HESLA ###

$import_r = $dbh->prepare("SELECT * FROM `import` ORDER BY `Datum`");

# table day_cs: text_de, sel, date, which, text, meaning, src
$day_cs_r   = $dbh->prepare("SELECT `which` FROM `day_cs` WHERE `text_de`=?");

# table day: sel, date, seq, which, nr, lang, text, meaning, src;
# which = sunday, holiday, important, week
$day_w = $dbh->prepare("INSERT INTO day VALUES (?,?,?,?,?,?,?,?,?,?)");	# 10 columns

# table dayname: date, lang, text;
$dayname_w = $dbh->prepare("INSERT INTO dayname VALUES (?,?,?)");		# 3 columns

# table losung: sel, date, seq, which, nr, lang, transl, source, intro, text;
# which = YEAR, MONTH, week, sunday, holiday, important, OT, NT
$losung_w = $dbh->prepare("INSERT INTO losung VALUES (?,?,?,?,?,?,?,?,?,?)");	# 10 columns !!

# table reading: sel, date, seq, which, lang, source; which = SR,CR,WP,Ev,Ep,Ps,Pr,PF,DL,x1,x2,x3
$reading_w = $dbh->prepare("INSERT INTO reading VALUES (?,?,?,?,?,?)"); 	# 6 columns

# table song: sel, date, seq, which, lang, book, nr, strophe, strophe2, text; which = Ld, WL
$song_r_de = $dbh->prepare("SELECT sel,date,seq,which,lang,book,nr,strophe,strophe2,text FROM `song` WHERE lang='de'");
$song_w = $dbh->prepare("INSERT INTO song VALUES (?,?,?,?,?,?,?,?,?,?)");	# 10 columns !!
$song_u_de_text = $dbh->prepare("UPDATE song SET text=? WHERE lang='de' AND seq=?");	#

# table comment: sel, date, lang, histdatetxt, text
$comment_w = $dbh->prepare("INSERT INTO comment VALUES (?,?,?,?,?)");		# 5 columns

# table drittetext: sel, date, lang, source, song, author, text
$drittetext_w = $dbh->prepare("INSERT INTO drittetext VALUES (?,?,?,?,?,?,?)");# 7 columns

# table quote: sel, date, which, lang, transl, source, text
$quote_w = $dbh->prepare("INSERT INTO quote VALUES (?,?,?,?,?,?,?)"); # 7 columns

##

$day_r       = $dbh->prepare
  ("SELECT D.date, D.dow, D.seq, D.which, D.nr, D.text, C.sel, C.text, C.meaning, C.src FROM `day` as D
       LEFT JOIN `day_cs` as C ON D.text = C.text_de
       WHERE D.lang='de' ORDER BY `date`,`which`, `seq`");		# naše preferované pořadí
$losung_r    = $dbh->prepare("SELECT * FROM `losung`  WHERE `lang`='de' ORDER BY `date`,`which`");
$reading_r   = $dbh->prepare("SELECT * FROM `reading` WHERE `lang`='de' ORDER BY `date`,`which`");
# $song_r      =$dbh->prepare("SELECT * FROM `song`    WHERE `lang`='de' ORDER BY `date`,`which`");
# $comment_r   =$dbh->prepare("SELECT * FROM `comment` WHERE `lang`='de' ORDER BY `date`,`which`");
# $drittetext_r=$dbh->prepare("SELECT * FROM `drittetext` WHERE `lang`='de' ORDER BY `date`,`which`");

# table seq: ori, cs							# změna pořadí u cs
$seq_w = $dbh->prepare("INSERT INTO seq VALUES (?,?)");			# 2 columns

1;

#! /usr/bin/perl -w
# společná část programů (struktury MySQL databáze):
# hes-sql-load.pl	# načtení databáze z tabulky `import` - německý originál losungen
# hes-sql-transl.pl	# převod do češtiny
# version 0.2 – rok 2018 Quotes

package HesSQL;
use Exporter;
@ISA = qw(Exporter);
@EXPORT_OK = qw($dbh $bib_dbh $transbook $nbook $bookname $bibleverse $import_r $day_cs_r $day_w $dayname_w
      $losung_w $reading_w $song_r_de $song_w $song_u_de_text $comment_w $drittetext_w $day_r $losung_r $reading_r $seq_w $quote_w) ;

#use strict;	# nezvládnul jsem názvy globálů
use DBI;

#use Symbol;
#qualify ($dbh);

my $year	= '18';
my $hes_dbname	= "hes$year";
my $bib_dbname	= "bible";
my $hostname	= 'localhost';
my $hes_dsn	= "DBI:mysql:database=$hes_dbname; host=$hostname";
my $bib_dsn	= "DBI:mysql:database=$bib_dbname; host=$hostname";
my $user	= 'petr';
my $password	= 'blabla';


$dbh = DBI->connect($hes_dsn, $user, $password, { RaiseError=>1,AutoCommit=>0 })
  || die "!!Chyba připojení k databázi hesel $hes_dbname č. $DBI::err: $DBI::errstr\n"; # uplatní se jen při RaiseError=>0

$bib_dbh = DBI->connect($bib_dsn, $user, $password, { RaiseError=>1,AutoCommit=>0 })
  || die "!!Chyba připojení k biblické databázi $bib_dbname č. $DBI::err: $DBI::errstr\n"; # uplatní se jen při RaiseError=>0

$dbh->do("SET NAMES `utf8`");
$bib_dbh->do("SET NAMES `utf8`");

### BIBLE ###

# převod německého názvu knihy z Losungen na český, používaný v Heslech
$transbook = $bib_dbh->prepare("SELECT `name` FROM `book` WHERE `trans`='hes' AND b IN
  (SELECT `b` FROM `book` WHERE `trans`='los' AND `name`=?)"); 

#číslo knihy podle jejího názvu v Losungen 
$nbook =  $bib_dbh->prepare("SELECT `b` FROM `book` WHERE `trans`='los' AND `name`=?");

#název knihy podle čísla
$bookname =  $bib_dbh->prepare("SELECT `name` FROM `book` WHERE `b`=? AND `trans`=? AND `long`=?");

# biblický verš
$bibleverse =  $bib_dbh->prepare("SELECT `text` FROM `verse` WHERE `id`=?");

### HESLA ###

$import_r = $dbh->prepare("SELECT * FROM `import` ORDER BY `Datum`");

# table day_cs: text_de, sel, date, which, text, meaning, src
$day_cs_r   = $dbh->prepare("SELECT `which` FROM `day_cs` WHERE `text_de`=?");

# table day: sel, date, seq, which, nr, lang, text, meaning, src;
# which = sunday, holiday, important, week
$day_w = $dbh->prepare("INSERT INTO day VALUES (?,?,?,?,?,?,?,?,?,?)");	# 10 columns

# table dayname: date, lang, text;
$dayname_w = $dbh->prepare("INSERT INTO dayname VALUES (?,?,?)");		# 3 columns

# table losung: sel, date, seq, which, nr, lang, transl, source, intro, text;
# which = YEAR, MONTH, week, sunday, holiday, important, OT, NT
$losung_w = $dbh->prepare("INSERT INTO losung VALUES (?,?,?,?,?,?,?,?,?,?)");	# 10 columns !!

# table reading: sel, date, seq, which, lang, source; which = SR,CR,WP,Ev,Ep,Ps,Pr,PF,DL,x1,x2,x3
$reading_w = $dbh->prepare("INSERT INTO reading VALUES (?,?,?,?,?,?)"); 	# 6 columns

# table song: sel, date, seq, which, lang, book, nr, strophe, strophe2, text; which = Ld, WL
$song_r_de = $dbh->prepare("SELECT sel,date,seq,which,lang,book,nr,strophe,strophe2,text FROM `song` WHERE lang='de'");
$song_w = $dbh->prepare("INSERT INTO song VALUES (?,?,?,?,?,?,?,?,?,?)");	# 10 columns !!
$song_u_de_text = $dbh->prepare("UPDATE song SET text=? WHERE lang='de' AND seq=?");	#

# table comment: sel, date, lang, histdatetxt, text
$comment_w = $dbh->prepare("INSERT INTO comment VALUES (?,?,?,?,?)");		# 5 columns

# table drittetext: sel, date, lang, source, song, author, text
$drittetext_w = $dbh->prepare("INSERT INTO drittetext VALUES (?,?,?,?,?,?,?)");# 7 columns

# table quote: sel, date, which, lang, transl, source, text
$quote_w = $dbh->prepare("INSERT INTO quote VALUES (?,?,?,?,?,?,?)"); # 7 columns

##

$day_r       = $dbh->prepare
  ("SELECT D.date, D.dow, D.seq, D.which, D.nr, D.text, C.sel, C.text, C.meaning, C.src FROM `day` as D
       LEFT JOIN `day_cs` as C ON D.text = C.text_de
       WHERE D.lang='de' ORDER BY `date`,`which`, `seq`");		# naše preferované pořadí
$losung_r    = $dbh->prepare("SELECT * FROM `losung`  WHERE `lang`='de' ORDER BY `date`,`which`");
$reading_r   = $dbh->prepare("SELECT * FROM `reading` WHERE `lang`='de' ORDER BY `date`,`which`");
# $song_r      =$dbh->prepare("SELECT * FROM `song`    WHERE `lang`='de' ORDER BY `date`,`which`");
# $comment_r   =$dbh->prepare("SELECT * FROM `comment` WHERE `lang`='de' ORDER BY `date`,`which`");
# $drittetext_r=$dbh->prepare("SELECT * FROM `drittetext` WHERE `lang`='de' ORDER BY `date`,`which`");

# table seq: ori, cs							# změna pořadí u cs
$seq_w = $dbh->prepare("INSERT INTO seq VALUES (?,?)");			# 2 columns

1;