#!/bin/bash

# Перенаправляем stderr в stdout
exec 2>&1

MYSQL="/usr/bin/mysql"
NAME="socialdb"

TMPDIR="/opt/tmp"
TMPPREFIX="profile-dump-mail-";
DSTDIR="/opt/profile-dump/mail";

DAYS=5

TIME=`date '+%s'`
DATE=`date '+%F'`

DSTFILE="$DATE.tar.gz"
DSTPATH="$DSTDIR/$DSTFILE"
TMPFILE="$TMPPREFIX$TIME"
TMPPATH="$TMPDIR/$TMPFILE"
TMPARCHIVE="$TMPFILE.tar.gz"

QUERY=$(cat <<EOF
SELECT pr.provider_id, CASE pr.provider_id WHEN 2 THEN pe.email WHEN 4 THEN pr.username WHEN 6 THEN pr.userid END
FROM profile pr
  JOIN person pe USING (profile_id)
  JOIN subscription s USING (profile_id)
WHERE s.sid = 2 AND s.value = 0
  AND (
    (pr.provider_id = 2 AND pe.email != '')
    OR
    (pr.provider_id = 4 AND pr.username != '')
    OR
    (pr.provider_id = 6)
  )
EOF
)

# В системном TMPDIR не хватает места для дампа, поэтому используем каталог на HDD
export TMPDIR

cd $TMPDIR
echo Dumping profile-table to $TMPPATH ...
$MYSQL --database=$NAME --skip-column-names --execute="$QUERY" --quick | sort | uniq > $TMPFILE
echo Packing temporary mail-dump to temporary archive...
tar zcf $TMPARCHIVE $TMPFILE
echo Moving temporary mail-archive to destination directory...
mv $TMPARCHIVE $DSTPATH
echo Removing temporary mail-dump...
rm $TMPPATH
cd $DSTDIR
echo Cleaning old archives in destination directory...
find . -type f -mtime +$DAYS -exec rm -f {} \;
