-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathMakefile
More file actions
179 lines (150 loc) · 6.75 KB
/
Makefile
File metadata and controls
179 lines (150 loc) · 6.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
.PHONY: setup dev run install db-setup db-migrate db-seed db-reset migrate-up migrate-down migrate-create migrate-force db-create db-drop build clean tidy help
include .env
# Variables (edit as needed)
DB_URL = postgres://$(DB_USER):$(DB_PASSWORD)@$(DB_HOST):$(DB_PORT)/$(DB_NAME)?sslmode=$(DB_SSLMODE)
DB_URL_ADMIN = postgres://$(DB_USER):$(DB_PASSWORD)@$(DB_HOST):$(DB_PORT)/postgres?sslmode=$(DB_SSLMODE)
DB_URL_WITH_CUSTOM_SCHEMA = postgres://$(DB_USER):$(DB_PASSWORD)@$(DB_HOST):$(DB_PORT)/$(DB_NAME)?sslmode=$(DB_SSLMODE)&x-migrations-table=evo_core_schema_community_migrations
MIGRATIONS_DIR = migrations
MIGRATION_COUNT ?= 1
# =============================================================================
# PADRÃO PADRONIZADO - COMANDOS PRINCIPAIS
# =============================================================================
# Setup completo do projeto (install + db-setup)
setup: install db-setup
@echo "✅ Setup completo concluído!"
# Instalar dependências e ferramentas
install:
@echo "📦 Instalando dependências Go..."
go mod tidy
go mod download
@echo "🔧 Instalando golang-migrate..."
@if ! command -v migrate &> /dev/null; then \
echo "Instalando golang-migrate..."; \
go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest; \
else \
echo "golang-migrate já está instalado"; \
fi
@echo "✅ Instalação concluída!"
# Rodar em modo desenvolvimento
dev:
@echo "🔧 Iniciando EvoAI Core Service em modo desenvolvimento..."
go run -race cmd/api/main.go -dev
# Rodar em modo produção
run:
@echo "🚀 Iniciando EvoAI Core Service em modo produção..."
go run cmd/api/main.go
# Setup do banco de dados (create + migrate)
db-setup: db-create migrate-up
@echo "✅ Banco de dados configurado!"
# Rodar migrações pendentes
db-migrate: migrate-up
# Rodar seeds (não implementado no core service)
db-seed:
@echo "⚠️ Seeds não implementados no EvoAI Core Service"
# Resetar banco completo (drop + create + migrate)
db-reset: db-drop db-create migrate-up
@echo "✅ Banco de dados resetado!"
# Tidy the dependencies
tidy:
go mod tidy
# Clean up generated files and binaries
clean:
rm -rf bin/
# =============================================================================
# COMANDOS DE MIGRAÇÃO (PADRÃO PADRONIZADO)
# =============================================================================
# Rodar migrações pendentes
migrate-up:
@echo "🚀 Rodando migrações pendentes..."
@echo "📋 Usando tabela de migrações customizada: evo_core_schema_community_migrations"
migrate -database "$(DB_URL_WITH_CUSTOM_SCHEMA)" -path $(MIGRATIONS_DIR) up
@echo "✅ Migrações aplicadas!"
# Reverter última migração
migrate-down:
@echo "⬇️ Revertendo última migração..."
migrate -database "$(DB_URL_WITH_CUSTOM_SCHEMA)" -path $(MIGRATIONS_DIR) down $(MIGRATION_COUNT)
@echo "✅ Migração revertida!"
# Criar nova migração (uso: make migrate-create NAME=nome_da_migracao)
migrate-create:
@if [ -z "$(NAME)" ]; then \
echo "❌ NAME é obrigatório. Use: make migrate-create NAME=nome_da_migracao"; \
exit 1; \
fi
@echo "📝 Criando nova migração: $(NAME)..."
migrate create -ext sql -dir $(MIGRATIONS_DIR) -seq $(NAME)
@echo "✅ Migração criada!"
# Run force migrations (migrate-force will migrate up to the last migration) (pass MIGRATION_COUNT=number: make migrate-force MIGRATION_COUNT=1)
migrate-force:
@echo "Running EvoAI Core migrations..."
@echo "🚀 Using custom migrations table: evo_core_schema_community_migrations"
@if [ -z "$(MIGRATION_COUNT)" ]; then \
echo "❌ MIGRATION_COUNT is required. Use: make migrate-force MIGRATION_COUNT=1"; \
exit 1; \
fi
migrate -database "$(DB_URL_WITH_CUSTOM_SCHEMA)" -path $(MIGRATIONS_DIR) force $(MIGRATION_COUNT)
@echo "✅ EvoAI migrations completed!"
# Database management commands
db-create:
@echo "Checking database $(DB_NAME)..."
@if [ "$(DB_NAME)" = "evolution_production" ] || [ "$(DB_NAME)" = "evolution_development" ]; then \
echo "⚠️ Using Evolution database. Make sure Evolution is set up first!"; \
psql "$(DB_URL)" -c "SELECT 1" >/dev/null 2>&1 && echo "✅ Database $(DB_NAME) is accessible" || echo "❌ Cannot access $(DB_NAME). Make sure Evolution database exists!"; \
else \
echo "Creating database $(DB_NAME)..."; \
psql "$(DB_URL_ADMIN)" -c "CREATE DATABASE $(DB_NAME);" || echo "Database may already exist"; \
echo "✅ Database $(DB_NAME) created or already exists"; \
fi
db-drop:
@echo "Dropping database $(DB_NAME)..."
@echo "⚠️ This will permanently delete all data in $(DB_NAME)"
@read -p "Are you sure? [y/N]: " confirm && [ "$$confirm" = "y" ] || exit 1
@psql "$(DB_URL_ADMIN)" -c "DROP DATABASE IF EXISTS $(DB_NAME);"
@echo "✅ Database $(DB_NAME) dropped"
# Complete database reset (drop, create, migrate)
db-reset: db-drop db-create migrate-up
@echo "✅ Database reset completed successfully!"
# Setup database from scratch
db-setup: db-create migrate-up
@echo "✅ Database setup completed successfully!"
# =============================================================================
# COMANDOS ADICIONAIS
# =============================================================================
# Build the application
build:
go build -o bin/app cmd/api/main.go
# Tidy the dependencies
tidy:
go mod tidy
# Clean up generated files and binaries
clean:
rm -rf bin/
# =============================================================================
# HELP
# =============================================================================
help: ## Mostrar ajuda com todos os comandos
@echo "EvoAI Core Service - Makefile Commands"
@echo ""
@echo "🚀 Quick Start (PADRÃO PADRONIZADO):"
@echo " make setup - Setup completo (install + db-setup)"
@echo " make dev - Rodar em modo desenvolvimento"
@echo " make run - Rodar em modo produção"
@echo ""
@echo "📦 Setup & Installation:"
@echo " make install - Instalar dependências e ferramentas"
@echo " make setup - Setup completo (install + db-setup)"
@echo ""
@echo "🗄️ Database Management (PADRÃO PADRONIZADO):"
@echo " make db-setup - Setup inicial do banco (create + migrate)"
@echo " make db-migrate - Rodar migrações pendentes"
@echo " make db-seed - Rodar seeds (não implementado)"
@echo " make db-reset - Resetar banco completo"
@echo ""
@echo "🔄 Migrations (PADRÃO PADRONIZADO):"
@echo " make migrate-up - Rodar migrações pendentes"
@echo " make migrate-down - Reverter última migração"
@echo " make migrate-create NAME=nome - Criar nova migração"
@echo ""
@echo "🛠️ Development:"
@echo " make build - Build da aplicação"
@echo " make tidy - Organizar módulos Go"
@echo " make clean - Limpar arquivos gerados"