Created
December 14, 2021 14:21
-
-
Save manuthu/4cbf520f79668d5a2b91233c15bc6833 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
set -e | |
DB_USER=<db-user> | |
DB_HOST=<db-host> | |
DB_NAME=<db-name> | |
CSV_FILE_NAME=<Reports> | |
DATE=$(date "+%Y-%m-%d") | |
LOG_FILE=logs/Reports-$DATE.log | |
log() { | |
TS=$(date "+%Y-%m-%d-%H:%M:%S") | |
echo "[$TS][INFO] $1" | tee -a $LOG_FILE | |
} | |
log_and_die() { | |
TS=$(date "+%Y-%m-%d-%H:%M:%S") | |
echo "[TS]:[ERROR] $1" | tee -a $LOG_FILE | |
exit 1 | |
} | |
validate_date() { | |
if [[ $1 =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]] | |
then log "Begin Generation of report for date $1." | |
else log_and_die "Date $1 is in an invalid format (not YYYY-MM-DD) e.g 2021-11-30" | |
fi | |
} | |
generate_csv_report() { | |
log "Generate CSV report $1 to $2" | |
psql -U $DB_USER -h $DB_HOST $DB_NAME -c "\copy ($1) to '$2' WITH (FORMAT CSV, HEADER TRUE, FORCE_QUOTE *)" | |
} | |
daily_all_downloads() { | |
log "Generate all user downloads for $1" | |
SQL="SELECT distinct phone_number FROM otp_token where date(created_at)=date('$1')" | |
CSV_FILE=reports/report_all_downloads_$1.csv | |
generate_csv_report "$SQL" "$CSV_FILE" | |
log "Done generating" | |
} | |
daily_activated_downloads() { | |
log "Generate activated users for $1" | |
SQL="SELECT distinct phone_number FROM otp_token where date(created_at)=date('$1') AND redeemed=TRUE" | |
CSV_FILE=reports/report_activated_users_$1.csv | |
generate_csv_report "$SQL" $CSV_FILE | |
log "Done generating" | |
} | |
show_help() { | |
log_and_die "$0 2021-12-14" | |
} | |
OPTIND=1 | |
while getopts "h?d:" opt; do | |
case "$opt" in | |
h|\?) | |
show_help | |
exit 0 | |
;; | |
d) DATE=$OPTARG | |
;; | |
*) | |
show_help | |
exit 1 | |
esac | |
done | |
validate_date $DATE | |
daily_all_downloads "$DATE" | |
daily_activated_downloads "$DATE" |
Author
manuthu
commented
Dec 14, 2021
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment