-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile
More file actions
141 lines (126 loc) · 6.35 KB
/
Makefile
File metadata and controls
141 lines (126 loc) · 6.35 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
# Colors for output
YELLOW=\033[0;33m
GREEN=\033[0;32m
RED=\033[0;31m
NC=\033[0m # No Color
.PHONY: build start import logs sh stop
logs:
docker compose logs -f
build:
docker compose -f docker-compose.full.yml build --no-cache
start:
docker compose -f docker-compose.full.yml up -d
docker compose -f docker-compose.full.yml exec db sh -c 'psql -U user -d db -c "CREATE EXTENSION IF NOT EXISTS cube CASCADE;"'
docker compose -f docker-compose.full.yml exec db sh -c 'psql -U user -d db -c "CREATE EXTENSION IF NOT EXISTS earthdistance CASCADE;"'
docker compose -f docker-compose.full.yml exec db sh -c 'psql -U user -d db -c "SELECT * FROM pg_extension;"'
docker compose -f docker-compose.full.yml logs -f
stop:
docker compose -f docker-compose.full.yml down
db-start:
docker compose up -d
dev:
pnpm i
pnpm prisma db push
pnpm prisma generate
pnpm dev
db-stop:
docker compose down
db-reset:
pnpm prisma db push --force-reset
sh:
docker compose exec app sh
clean-posts:
docker compose exec db sh -c 'psql -U user -d db -c "DELETE FROM public.\"Post\";"'
import:
pnpm prisma db push --force-reset
pnpm prisma generate
docker compose exec db sh -c 'psql -U user -d db -c "CREATE EXTENSION IF NOT EXISTS cube CASCADE;"'
docker compose exec db sh -c 'psql -U user -d db -c "CREATE EXTENSION IF NOT EXISTS earthdistance CASCADE;"'
docker compose exec db sh -c 'psql -U user -d db -c "SELECT * FROM pg_extension;"'
@echo "$(YELLOW)Importing data...$(NC)"
cd cli && cp -r ../prisma/schema.prisma ./prisma/schema.prisma
cd cli && pnpm i
cd cli && pnpm prisma
cd cli && pnpm cli import --all
@echo "$(YELLOW)Indexing data...$(NC)"
cd cli && pnpm cli reindex
@echo "$(GREEN)✓ Data imported and indexed$(NC)"
db-push-prod:
@echo "$(YELLOW)Resetting the prod database...$(NC)"
@if [ ! -f .env.prod ]; then \
echo "$(YELLOW)Creating .env.prod file from example...$(NC)"; \
cp .env.example .env.prod; \
echo "$(RED)Please edit .env.prod with your actual production credentials before continuing.$(NC)"; \
echo "$(RED)Then run 'make db-push-prod' again.$(NC)"; \
exit 1; \
else \
echo "$(GREEN)✓ Using .env.prod file$(NC)"; \
fi
$(eval include .env.prod)
$(eval export DIRECT_URL)
@echo "$(RED)WARNING: This will delete all data in the prod database$(NC)"
@echo "$(RED)Are you sure you want to continue? [y/N]$(NC)"
@read -r confirm; \
if [ "$$confirm" != "y" ] && [ "$$confirm" != "Y" ]; then \
echo "$(YELLOW)Operation cancelled.$(NC)"; \
exit 1; \
fi
@echo "$(YELLOW)Pushing schema to prod database and resetting database...$(NC)"
@echo "$(YELLOW)First, dropping all tables in the prod database database...$(NC)"
@echo "$(YELLOW)Exporting the data...$(NC)"
@PGPASSWORD=password pg_dump db -U user -h 127.0.0.1 --no-comments --no-owner --no-privileges > db.sql 2>/dev/null || (echo "$(RED)Error: Failed to export data$(NC)" && exit 1)
@echo "$(YELLOW)Cleaning up SQL dump...$(NC)"
@psql "$(DIRECT_URL)" -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public; GRANT ALL ON SCHEMA public TO postgres; GRANT ALL ON SCHEMA public TO public;" >/dev/null 2>&1 || (echo "$(RED)Error: Failed to drop schema in prod database$(NC)")
@echo "$(GREEN)✓ All tables dropped in prod database database$(NC)"
@echo "$(YELLOW)Installing database extensions...$(NC)"
@psql "$(DIRECT_URL)" -c "CREATE EXTENSION IF NOT EXISTS cube CASCADE;" >/dev/null 2>&1 || echo "$(YELLOW)Note: cube extension might already exist$(NC)"
@psql "$(DIRECT_URL)" -c "CREATE EXTENSION IF NOT EXISTS earthdistance CASCADE;" >/dev/null 2>&1 || echo "$(YELLOW)Note: earthdistance extension might already exist$(NC)"
@echo "$(YELLOW)Uploading data to prod database (this may take a while)...$(NC)"
@psql "$(DIRECT_URL)" < db.sql >/dev/null 2>&1 || (echo "$(RED)Error: Failed to upload data to prod database$(NC)" && exit 1)
@echo "$(GREEN)✓ Data exported and uploaded$(NC)"
@echo "$(YELLOW)Cleaning up temporary files...$(NC)"
@rm -f db.sql
@echo "$(GREEN)✓ Temporary files removed$(NC)"
db-push-dev:
@echo "$(YELLOW)Resetting the dev database...$(NC)"
@if [ ! -f .env.dev ]; then \
echo "$(YELLOW)Creating .env.dev file from example...$(NC)"; \
cp .env.example .env.dev; \
echo "$(RED)Please edit .env.dev with your actual development credentials before continuing.$(NC)"; \
echo "$(RED)Then run 'make db-push-dev' again.$(NC)"; \
exit 1; \
else \
echo "$(GREEN)✓ Using .env.dev file$(NC)"; \
fi
$(eval include .env.dev)
$(eval export DIRECT_URL)
@echo "$(RED)WARNING: This will delete all data in the dev database$(NC)"
@echo "$(RED)Are you sure you want to continue? [y/N]$(NC)"
@read -r confirm; \
if [ "$$confirm" != "y" ] && [ "$$confirm" != "Y" ]; then \
echo "$(YELLOW)Operation cancelled.$(NC)"; \
exit 1; \
fi
@echo "$(YELLOW)Pushing schema to dev database and resetting database...$(NC)"
@echo "$(YELLOW)First, dropping all tables in the dev database database...$(NC)"
@echo "$(YELLOW)Exporting the data...$(NC)"
@PGPASSWORD=password pg_dump db -U user -h 127.0.0.1 --no-comments --no-owner --no-privileges > db.sql 2>/dev/null || (echo "$(RED)Error: Failed to export data$(NC)" && exit 1)
@echo "$(YELLOW)Cleaning up SQL dump...$(NC)"
@psql "$(DIRECT_URL)" -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public; GRANT ALL ON SCHEMA public TO postgres; GRANT ALL ON SCHEMA public TO public;" >/dev/null 2>&1 || (echo "$(RED)Error: Failed to drop schema in dev database$(NC)")
@echo "$(GREEN)✓ All tables dropped in dev database database$(NC)"
@echo "$(YELLOW)Installing database extensions...$(NC)"
@psql "$(DIRECT_URL)" -c "CREATE EXTENSION IF NOT EXISTS cube CASCADE;" >/dev/null 2>&1 || echo "$(YELLOW)Note: cube extension might already exist$(NC)"
@psql "$(DIRECT_URL)" -c "CREATE EXTENSION IF NOT EXISTS earthdistance CASCADE;" >/dev/null 2>&1 || echo "$(YELLOW)Note: earthdistance extension might already exist$(NC)"
@echo "$(YELLOW)Uploading data to dev database (this may take a while)...$(NC)"
@psql "$(DIRECT_URL)" < db.sql >/dev/null 2>&1 || (echo "$(RED)Error: Failed to upload data to dev database$(NC)" && exit 1)
@echo "$(GREEN)✓ Data exported and uploaded$(NC)"
@echo "$(YELLOW)Cleaning up temporary files...$(NC)"
@rm -f db.sql
@echo "$(GREEN)✓ Temporary files removed$(NC)"
deploy:
@echo "$(YELLOW)Deploying...$(NC)"
npx prisma migrate deploy
pnpm prisma
cd cli && cp -r ../prisma/schema.prisma ./prisma/schema.prisma
cd cli && pnpm prisma
@echo "$(GREEN)✓ Deployment completed$(NC)"