# SME-OmniStore 快捷命令
# 用法: make <目标>

PYTHON  = python
BACKEND = backend
ALEMBIC = $(PYTHON) -m alembic

.PHONY: help install reset db-up db-down migrate migrate-down shell run

help:
	@echo ""
	@echo "  SME-OmniStore 可用命令"
	@echo "  ─────────────────────────────────────────────"
	@echo "  make install       首次安装（交互模式）"
	@echo "  make install-auto  首次安装（静默模式，使用 .env）"
	@echo "  make reset         重置并重新安装"
	@echo "  make db-up         启动 MySQL + Redis（Docker）"
	@echo "  make db-down       停止 Docker 服务"
	@echo "  make migrate       执行最新迁移"
	@echo "  make migrate-down  回滚最近一次迁移"
	@echo "  make run           启动 FastAPI 开发服务器"
	@echo "  make shell         进入 Python 交互环境（含模型）"
	@echo ""

install:
	cd $(BACKEND) && $(PYTHON) install.py

install-auto:
	cd $(BACKEND) && $(PYTHON) install.py --auto

reset:
	cd $(BACKEND) && $(PYTHON) install.py --reset

db-up:
	docker compose up -d mysql redis
	@echo "等待 MySQL 就绪..."
	@sleep 8

db-down:
	docker compose down

migrate:
	cd $(BACKEND) && $(ALEMBIC) upgrade head

migrate-down:
	cd $(BACKEND) && $(ALEMBIC) downgrade -1

migrate-history:
	cd $(BACKEND) && $(ALEMBIC) history --verbose

run:
	cd $(BACKEND) && uvicorn main:app --reload --host 0.0.0.0 --port 8000

shell:
	cd $(BACKEND) && $(PYTHON) -c "\
import os; os.environ.setdefault('DB_HOST','localhost'); \
from app.core.models import *; \
import code; code.interact(local=dict(globals(), **locals()))"
