9fb512932a
Endpoints:
- GET /api/v2/enrich-sources — sport→source mapping
- GET /api/v2/klubovi/priority-sort — financirani/godišnjak prvi
- GET /api/v2/clan/{id}/kategorije — many-to-many kategorije
- GET /api/v2/clan/{id}/full — kompletna slika (profil+kategorije+sezone+utakmice+stats)
- POST /api/v2/export/klubovi — XLSX export selektiranih
Schema:
- pgz_sport.clan_kategorije (M2M: igrač u juniorskoj+seniorskoj)
- pgz_sport.player_stats (multi-sport: nogomet/košarka/rukomet/odbojka/vaterpolo)
- pgz_sport.klub_roster (multi-source)
- pgz_sport.enrichment_sources (sport→izvor)
- View: v_pgz_priority_klubovi (financiran || u_godisnjaku)
- View: v_klubovi_priority_sort (priority sort)
Sport harvesters scaffold:
- scripts/sport_harvesters/__base.py (SportHarvester class)
- hks_basketball.py, hrs_handball.py, hos_volleyball.py, hvs_waterpolo.py
50 lines
1.6 KiB
Bash
Executable File
50 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# sport_harvest_backup.sh — pre-cron pg_dump of harvest tables
|
|
# v1.0 — dradulic@outlook.com / damir@rinet.one — 2026-05-05
|
|
# Description: Backups 4 ključne pgz_sport tablice prije sport harvester cron cikla.
|
|
# Pokreće ga /etc/cron.d/sport-harvesters u 02:50 svaki 2. dan.
|
|
|
|
set -u
|
|
|
|
DSN_HOST="${RINET_DB_HOST:-10.10.0.2}"
|
|
DSN_PORT="${RINET_DB_PORT:-6432}"
|
|
DSN_DB="${RINET_DB_NAME:-rinet_v3}"
|
|
DSN_USER="${RINET_DB_USER:-rinet}"
|
|
DSN_PASS="${RINET_DB_PASS:-R1net2026!SecureDB#v7}"
|
|
|
|
BACKUP_DIR="/opt/pgz-sport/_backups"
|
|
LOG_DIR="/var/log/pgz-sport-debug"
|
|
DATE_TAG="$(date +%Y%m%d_%H%M)"
|
|
DATE_DAY="$(date +%Y%m%d)"
|
|
OUT_FILE="${BACKUP_DIR}/sport_harvest_pre_${DATE_TAG}.sql"
|
|
LOG_FILE="${LOG_DIR}/cron_backup_${DATE_DAY}.log"
|
|
|
|
mkdir -p "${BACKUP_DIR}" "${LOG_DIR}"
|
|
|
|
{
|
|
echo "[$(date -Is)] sport_harvest_backup START → ${OUT_FILE}"
|
|
|
|
PGPASSWORD="${DSN_PASS}" pg_dump \
|
|
-h "${DSN_HOST}" -p "${DSN_PORT}" -U "${DSN_USER}" -d "${DSN_DB}" \
|
|
--no-owner --no-privileges --data-only \
|
|
-t pgz_sport.clanovi \
|
|
-t pgz_sport.klub_roster \
|
|
-t pgz_sport.player_stats \
|
|
-t pgz_sport.clan_kategorije \
|
|
-f "${OUT_FILE}"
|
|
RC=$?
|
|
|
|
if [ "${RC}" -eq 0 ] && [ -s "${OUT_FILE}" ]; then
|
|
SIZE=$(stat -c%s "${OUT_FILE}")
|
|
echo "[$(date -Is)] OK rc=${RC} size=${SIZE}B"
|
|
else
|
|
echo "[$(date -Is)] FAIL rc=${RC} (file empty or pg_dump error)"
|
|
exit 1
|
|
fi
|
|
|
|
# Retencija: zadrži 14 dana
|
|
find "${BACKUP_DIR}" -maxdepth 1 -name 'sport_harvest_pre_*.sql' -mtime +14 -print -delete
|
|
echo "[$(date -Is)] retention swept (>14d)"
|
|
echo "[$(date -Is)] sport_harvest_backup DONE"
|
|
} >> "${LOG_FILE}" 2>&1
|