164 lines
5.2 KiB
Bash
Executable File
164 lines
5.2 KiB
Bash
Executable File
# Script zu checken, ob Ausschreibungen neu dazugekommen sind oder sich geändert haben
|
|
|
|
# Aufbau der Wettkampfdatenbank:
|
|
# Tabellen
|
|
# - downloads -> Verwalten der heruntergeladenen Ausschreibungen
|
|
# - adressen -> Verwalten von Adressen der Wettkampforte
|
|
# - wk -> Verwalten der Wettkämpfe
|
|
# Aufbau der einzelnen Tabellen:
|
|
# - downloads
|
|
# - id PRIMARY KEY INT -> Die interne ID der Ausschreibung
|
|
# - dateiname TEXT -> der Dateiname der Auschreibung
|
|
# - sha512 TEXT -> Hash der Datei
|
|
# - wkID TEXT -> IDs der zugehörigen Wettkämpfe (kommasepariert, leer soll heißen uninteresannte Ausschreibung)
|
|
# - wk
|
|
# - id PRIMARY KEY INT -> Die interne ID des Wettkampfes
|
|
# - datum TEXT -> Datum des Wettkampfes
|
|
# - name TEXT -> Name des Wettkampfes
|
|
# - adrID -> ID des Wettkampfortes in der Adressdatenbank
|
|
|
|
|
|
|
|
# Über Dateinamenliste iterieren
|
|
filelist=`ls -1A download/`
|
|
for file in $filelist
|
|
do
|
|
# Hash der Datei merken
|
|
hash=`rhash --printf=%{sha512} download/"$file"`
|
|
# sqlQuery zusammenstellen: Alle AusschreibungsIDs suchen, die diese Ausschreibung haben
|
|
query="SELECT id FROM downloads WHERE dateiName='$file';"
|
|
ids=`echo $query | sqlite wk.db`
|
|
echo "Gefundene wkIDs: $ids"
|
|
if
|
|
[[ $ids = "" ]]
|
|
then
|
|
# Wenn dateiname noch nicht in der Datenbank gefunden wurde, Eintrag neu anlegen
|
|
# echo "$file noch nicht zugeordnet!"
|
|
# Wettkampfdaten abfragen
|
|
# echo `evince download/$file &`
|
|
mupdf download/$file &
|
|
echo "Ausschreibung: $file"
|
|
echo "Datum (bei mehreren Daten per Leertaste getrennt, zum Ignorieren nichts):"
|
|
read daten
|
|
# Werden keine Daten eingegeben, dann soll die Ausschreibung ignoriert werden
|
|
if test -z $daten
|
|
then
|
|
query="INSERT INTO downloads(dateiname, sha512, wkID) VALUES('$file', '$hash', -1);"
|
|
echo $query | sqlite wk.db
|
|
continue
|
|
else
|
|
# Ansonsten wird für jedes Datum ein Wettkampf angelegt
|
|
wkName = ""
|
|
plz = ""
|
|
ak = ""
|
|
for datum in $daten
|
|
do
|
|
echo "$datum:"
|
|
# Ausgabe anderer WK an diesem Datum
|
|
query="SELECT id,name FROM wk WHERE datum='$datum';"
|
|
wks=`echo $query | sqlite wk.db`
|
|
echo $wks
|
|
# Eingabe des Wettkampfnamens (bei mehreren Daten kann mit leerem Namen einfach der zuletzt eingegebene Name verwendet werden)
|
|
echo "Wettkampfname: ($wkName)"
|
|
read temp
|
|
if test -z $temp
|
|
then
|
|
echo "Wettkampfname übernommen: $wkName"
|
|
else
|
|
wkName = temp
|
|
fi
|
|
# Eingabe der Postleitzahl des Wettkampfortes
|
|
echo "PLZ: ($plz)"
|
|
read temp
|
|
if test -z $temp
|
|
then
|
|
echo "PLZ übernommen: $plz"
|
|
else
|
|
plz = temp
|
|
fi
|
|
# Zur Postleitzahl gehörige Adresse finden
|
|
query="SELECT id FROM adressen WHERE plz='$plz';"
|
|
adrIDs=`echo $query | sqlite wk.db`
|
|
if test -z $adrIDs
|
|
then
|
|
# @todo: Eingabe der Adresse
|
|
echo "Keine zugehörige Adresse gefunden!"
|
|
adrID = 0
|
|
#else
|
|
# @todo: Behandlung verschiedener Adressen mit gleicher PLZ ergänzen
|
|
fi
|
|
# Eingabe der Altersklassen
|
|
echo "AK: ($ak)"
|
|
read temp
|
|
if test -z $temp
|
|
then
|
|
echo "Übernommene AK: $ak"
|
|
else
|
|
ak = temp
|
|
fi
|
|
# Hinzufügen des Wettkampfes zur Datenbank
|
|
query="INSERT INTO wk(datum, name, ak, adrID) VALUES('$datum','$wkName','$ak','adrID');"
|
|
`echo $query | sqlite wk.db`
|
|
# Eintrag in die Ausschreibungsdatenbank; Dazu brauchen wir die wkID
|
|
query="SELECT id FROM wk WHERE datum='$datum' AND name='$wkName' AND ak='$ak';"
|
|
wkID=`echo $query | sqlite wk.db`
|
|
query="INSERT INTO downloads(dateiname, sha512, wk) VALUES('$file', '$hash', '$wkID');"
|
|
echo $query | sqlite wk.db
|
|
done # nächstes Datum
|
|
fi # Ende Hinzufügen eines neuen Wettkampfes
|
|
# Wenn wir wkIDs für diese Ausschreibung gefunden haben müssen wir testen, ob sich der Hash geändert hat
|
|
else
|
|
query="SELECT sha512 FROM downloads WHERE dateiName='$file';"
|
|
dbhash=`echo $query | sqlite wk.db`
|
|
if
|
|
[[ $hash != $dbhash ]]
|
|
then
|
|
echo "$file hat sich geändert!"
|
|
query="SELECT wkID FROM downloads WHERE dateiName='$file';"
|
|
wkIDs=`echo $query | sqlite wk.db`
|
|
echo "Betroffene Wettkämpfe: $wkIDs"
|
|
# todo Bei einer geänderten Ausschreibung die daten des Wettkampfeintrages anpassen
|
|
for wkID in $wkIDs
|
|
do
|
|
query="SELECT name FROM wk WHERE id='$wkID';"
|
|
wkName=`echo $query | sqlite wk.db`
|
|
echo "Wettkampfname: ($wkName)"
|
|
read temp
|
|
if test -z $temp
|
|
then
|
|
echo "Wettkampfname übernommen: $wkName"
|
|
else
|
|
wkName = temp
|
|
fi
|
|
query="SELECT datum FROM wk WHERE id='$wkID';"
|
|
wkDatum=`echo $query | sqlite wk.db`
|
|
echo "Datum: ($wkDatum)"
|
|
read temp
|
|
if test -z $temp
|
|
then
|
|
echo "Datum übernommen: $Datum"
|
|
else
|
|
wkDatum = temp
|
|
fi
|
|
query="SELECT ak FROM wk WHERE id='$wkID';"
|
|
wkAk=`echo $query | sqlite wk.db`
|
|
echo "Ak: ($wkAk)"
|
|
read temp
|
|
if test -z $temp
|
|
then
|
|
echo "Ak übernommen: $wkAk"
|
|
else
|
|
wkAk= temp
|
|
fi
|
|
query="UPDATE wk SET name='$wkName',datum='$wkDatum',ak='$wkAk' WHERE id=$id;"
|
|
`echo $query | sqlite wk.db`
|
|
done
|
|
query="UPDATE downloads SET sha512='$hash' WHERE id=$id;"
|
|
`echo $query | sqlite wk.db`
|
|
# @todo: Update der Ausschreibung zum Upload auslösen
|
|
else
|
|
echo "$file unverändert!"
|
|
fi # ende unveränderte ausschreibung
|
|
fi # ende existenz ausschreibung
|
|
done # ende dateilistenschleife
|