forked from carsonkrueger/go-htmx-starter
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
104 lines (80 loc) · 3 KB
/
Makefile
File metadata and controls
104 lines (80 loc) · 3 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
# Targets with a -external suffix use the DB_EXTERNAL_PORT env variable. This is used when running the server outside of the docker container.
# Conversly targets with a -internal suffix use the DB_PORT env variable. This is used when running the server within the docker container OR if using a local database (not a docker database).
include .env
GO_BIN_PATH := ~/go/bin
DB_URL := "postgres://${DB_USER}:${DB_PASSWORD}@${DB_EXTERNAL_HOST}:${DB_EXTERNAL_PORT}/${DB_NAME}?sslmode=disable"
ifeq ($(INTERNAL),true)
DB_URL := "postgres://${DB_USER}:${DB_PASSWORD}@${DB_INTERNAL_HOST}:${DB_INTERNAL_PORT}/${DB_NAME}?sslmode=disable"
GO_BIN_PATH := /go/bin
else
DB_HOST := ${DB_EXTERNAL_HOST}
DB_PORT := ${DB_EXTERNAL_PORT}
endif
AIR_CMD := ${GO_BIN_PATH}/air
TEMPL_CMD := ${GO_BIN_PATH}/templ
MIGRATE_CMD := ${GO_BIN_PATH}/migrate
JET_CMD := ${GO_BIN_PATH}/jet
JET_MODEL_PATH := ../../../../pkg/db
live:
make docker-postgres
${AIR_CMD}
templ:
${TEMPL_CMD} generate
tw:
npx @tailwindcss/cli -i app.css -o ./public/css/index.css
build:
go build -ldflags="-s -w" -o ./bin/main .
docker:
make docker-down
docker compose up -d --build \
go_starter_db \
go_starter_backend \
--remove-orphans
docker-down:
docker compose down
docker-postgres:
make docker-postgres-down
docker compose up -d go_starter_db --remove-orphans
docker-postgres-down:
docker compose down go_starter_db
migrate:
${MIGRATE_CMD} -database ${DB_URL} -path migrations up
migrate-internal:
${MIGRATE_CMD} -database ${DB_URL} -path migrations up
migrate-down:
${MIGRATE_CMD} -database ${DB_URL} -path migrations down
migrate-down-one:
${MIGRATE_CMD} -database ${DB_URL} -path migrations down 1
seed:
go run . seed
seed-undo:
go run . -undo=true seed
jet-all:
@echo "Fetching schemas from database..."
SCHEMAS=$$(PGPASSWORD='${DB_PASSWORD}' psql -h ${DB_HOST} -p ${DB_PORT} -U ${DB_USER} -d ${DB_NAME} -Atc "SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('pg_catalog', 'information_schema', 'pg_toast')"); \
echo "Schemas found: $$SCHEMAS"; \
for SCHEMA in $$SCHEMAS; do \
echo "------ Generating models for schema: $$SCHEMA ------"; \
${JET_CMD} -dsn=${DB_URL} -schema=$$SCHEMA -ignore-tables=schema_migrations -rel-model-path=${JET_MODEL_PATH}/$$SCHEMA/model -path=./internal/database/gen; \
done
generate-migration:
@read -p "Enter migration name: " name; \
${MIGRATE_CMD} create -ext sql -dir migrations -seq $$name
generate-service:
@echo "Enter camelCase service name: "; \
read service; \
go run . -service="$$service" genService
generate-dao:
@echo "Enter camelCase table name: "; \
read table; \
echo "Enter schema name: "; \
read schema; \
go run . -schema="$$schema" -table="$$table" genDAO
generate-private-controller:
@echo "Enter camelCase controller name: "; \
read controller; \
go run . -name="$$controller" -private=true genController
generate-public-controller:
@echo "Enter camelCase controller name: "; \
read controller; \
go run . -name="$$controller" -private=false genController