added documentation in update-database.sh

This commit is contained in:
Tristan Ancelet 2023-05-09 21:47:26 -05:00
parent 8948ce741d
commit 8c686409be

View File

@ -18,9 +18,14 @@ for name in $( $sqlite_cmd <<< "SELECT crontab_path FROM crontabs;"); do
crontabs_in_db+=( "$name" ) crontabs_in_db+=( "$name" )
done done
# This will go through and count the number of files in each directory (to determine if they need to be checked)
for dir in ${crontab_dirs[@]}; do for dir in ${crontab_dirs[@]}; do
# If the directory has less than 1 crontab (aka empty) it will be skipped
if [[ $( ls -1 $dir | wc -l ) -ge 1 ]]; then if [[ $( ls -1 $dir | wc -l ) -ge 1 ]]; then
for file in $dir/* ; do for file in $dir/* ; do
# For each file in the directory it will check to see if the current file
# path is already stored in the DB
# if not it will create one and it will be be indexed in the DB
if [[ -f $file ]] && [[ ! "${crontabs_in_db[@]}" == *$file* ]]; then if [[ -f $file ]] && [[ ! "${crontabs_in_db[@]}" == *$file* ]]; then
$sqlite_cmd <<< " $sqlite_cmd <<< "
INSERT INTO crontabs (crontab_path, crontab_data) VALUES INSERT INTO crontabs (crontab_path, crontab_data) VALUES
@ -32,10 +37,16 @@ for dir in ${crontab_dirs[@]}; do
fi fi
done done
# This will request all of the information from the db relating to all of the indexed crontab's
IFS='|' IFS='|'
while read crontab_id crontab_path; do while read crontab_id crontab_path; do
# It will initially request the id and path of the file, and then will load in the actual data of the
# file to be compared to the file content's on disk.
data=`sqlite3 ../webcron.db <<< "SELECT crontab_data FROM crontabs WHERE crontab_id = $crontab_id"` data=`sqlite3 ../webcron.db <<< "SELECT crontab_data FROM crontabs WHERE crontab_id = $crontab_id"`
# this will check to make sure that the file exists on disk and
# will compare the disk and db versions of the file to make sure if a change is needed to be
# loaded into the db.
if [[ -f $crontab_path ]] && [[ ! "$data" == "$(<$crontab_path)" ]]; then if [[ -f $crontab_path ]] && [[ ! "$data" == "$(<$crontab_path)" ]]; then
sqlite3 ../webcron.db <<<" sqlite3 ../webcron.db <<<"
UPDATE crontabs SET crontab_data = '$(<$crontab_path)' WHERE crontab_id = $crontab_id UPDATE crontabs SET crontab_data = '$(<$crontab_path)' WHERE crontab_id = $crontab_id