#!/usr/bin/env bash

playwright:local() {
  bash e2e/Taskfile playwright:local
}

playwright:ui() {
  bash e2e/Taskfile playwright:ui
}

refresh_sqlx_db() {
  rm -f some_user.db
  for migration in migrations/each_user/*.sql; do
    echo "Applying $migration..."
    echo "BEGIN TRANSACTION;$(cat "$migration");COMMIT TRANSACTION;"\
      | sqlite3 some_user.db
  done
}

_env() {
  refresh_sqlx_db > /dev/null
  DATABASE_URL=sqlite:some_user.db \
  CACHE_BUST_ASSETS_DIR=static \
    "$@"
}

_cargo() {
    _env cargo "$@"
}

edit() {
  _env nvim
}

deploy_to_server() {
  where="$1"
  _cargo build --release
  rsync -v -essh ./target/release/mascarpone "$where:~" \
    && rsync -rav -essh ./hashed_static "$where:~/" \
    && ssh -t "$where" "sudo mv -f mascarpone /usr/bin/ && sudo rm -rf /var/local/mascarpone/hashed_static && sudo mv -f hashed_static /var/local/mascarpone/ && sudo systemctl restart mascarpone"
}

dev() {
  find src static migrations | entr -ccdr ./Taskfile _cargo run -- serve
}

"$@"
