mod client
mod server
mod shared

set quiet := true

pod_name := "pod_sigo"

# List available recipes
_default:
    just --list 

# 󰌢  Build Lustre runtime and start HTTP server
[group("dev")]
dev: lint
    just client::build
    just server::run

#   Update project dependencies
[group("dev")]
deps-update:
    just shared::_deps-update
    just client::_deps-update
    just server::_deps-update

#   Check for errors
[group("dev")]
lint: fmt
    just server::_lint
    just client::_lint
    just shared::_lint

# 󰙨  Run unit tests
[group("dev")]
test:
    just client::_test
    just server::_test

#   Format files
[group("dev")]
fmt:
  just client::_fmt
  just server::_fmt
  just shared::_fmt

#   Starts the server and database
[group("podman")]
up: _create-pod
    just server::init-database {{ pod_name }}
    just server::init-server {{ pod_name }}
    echo {{ GREEN }}"Listening on http://0.0.0.0:8000"{{ NORMAL }}

#   Starts only the database
[group("podman")]
db-up:
    just _create-pod ""
    just server::init-database {{ pod_name }}
    echo {{ GREEN }}"  PostgreSQL is ready on port 5432"{{ NORMAL }}

#   Stop and remove the entire pod
[group("podman")]
down:
    podman pod exists {{ pod_name }} || (echo "Pod does not exist" && exit 1)
    podman pod stop {{ pod_name }}
    podman pod rm {{ pod_name }}

# 󰏖  Create pod
[group("podman")]
_create-pod server_port="-p 8000:8000":
    podman pod exists {{ pod_name }} \
    || podman pod create --name {{ pod_name }} {{ server_port }} -p 5432:5432
