File size: 4,127 Bytes
6b5e1db
9fa975b
0245be8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9fa975b
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
.PHONY: default banner install install-seed seed run stop db-purge api-install env-create env db db-stop api api-stop
SHELL := /bin/bash 
default: help

help:
	make banner
	@echo "+------------------+"
	@echo "| 🏠 CORE COMMANDS |"
	@echo "+------------------+"
	@echo "make install - Setup environment and build models"
	@echo "make install-seed - Setup environment, build models and seed database"
	@echo "make seed - Seed database with dummy data"
	@echo "make run - Run database and API server"
	@echo "make stop - Stop database and API server"
	@echo "make db-purge - Delete all data in database\n"

banner:
	@echo "\n\n-------------------------------------"
	@echo "β–’β–ˆβ–€β–€β–ˆ β–ˆβ–€β–€β–ˆ β–ˆβ–€β–€ β–ˆβ–€β–€β–ˆ β–’β–ˆβ–€β–€β–ˆ β–’β–ˆβ–€β–€β–ˆ β–€β–€β–ˆβ–€β–€"
	@echo "β–’β–ˆβ–„β–„β–€ β–ˆβ–„β–„β–ˆ β–€β–€β–ˆ β–ˆβ–„β–„β–ˆ β–’β–ˆβ–‘β–„β–„ β–’β–ˆβ–„β–„β–ˆ β–‘β–’β–ˆβ–‘β–‘"
	@echo "β–’β–ˆβ–‘β–’β–ˆ β–€β–‘β–‘β–€ β–€β–€β–€ β–€β–‘β–‘β–€ β–’β–ˆβ–„β–„β–ˆ β–’β–ˆβ–‘β–‘β–‘ β–‘β–’β–ˆβ–‘β–‘"
	@echo "+-----------------------------------+"
	@echo "|       πŸ€– FastAPI LLM server       |"
	@echo "+-----------------------------------+\n\n"

# ================
# 🏠 CORE COMMANDS
# ================

# ----------------------------------
# Setup environment and build models
# ----------------------------------
install:
	@make banner
	@make api-install
	@make db-stop
	@echo "βœ… Installation complete. Run 'make run' to start services.\n"

# ----------------------------------------------
# Setup environment and build models and seed DB
# ----------------------------------------------
install-seed:
	@make banner
	@make api-install
	@make seed
	@make db-stop
	@echo "βœ… Installation complete. Run 'make run' to start services.\n"


seed:
	@make banner
	@echo "🌱 Seeding database ..\n"
	@python3 seed.py

# ---------------------------
# Run database and API server
# ---------------------------
run:
	@make banner
	@make env
	@echo "πŸš€  Starting services ..\n"
	@make db
	@make api

# ----------------------------
# Stop database and API server
# ----------------------------
stop:
	@make banner
	@echo "πŸ›‘  Stopping services ..\n"
	@make db-stop
	@make api-stop

# ---------------------------
# Delete all data in database
# ---------------------------
db-purge:
	@echo "β›”  Are you sure you want to delete all data in the database? [y/N]\n"
	@read confirmation; \
	if [ "$$confirmation" = "y" ] || [ "$$confirmation" = "Y" ]; then \
		echo "Deleting generated files..."; \
		make db-stop; \
		rm -rf ../../mnt; \
		echo "Deleted."; \
	else \
		echo "Aborted."; \
	fi

# ==================
# πŸ’ HELPER COMMANDS
# ==================

# --------------
# Install helper
# --------------
api-install:
	@echo "πŸ—οΈ  Installing services ..\n"
	@make env-create
	@make db-stop
	@make db
	@make models

# -------------------
# Create a virtualenv
# -------------------
env-create:
	@echo "Creating virtual environment .."
	@if [ -d "./venv" ]; then \
		echo "Environment and dependecies created already, loading .."; \
		source ./venv/bin/activate; \
	else \
		echo "Install dependencies .."; \
		python3 -m venv venv; \
		. venv/bin/activate; \
		pip3 install -r requirements.txt; \
	fi

# ---------------------------
# Load an existing virtualenv
# ---------------------------
env:
	@echo "loading virtual environment if exists"
	@if [ -d "./venv" ]; then \
		source ./venv/bin/activate; \
	fi

# -----------------
# Start Postgres DB
# -----------------
db:
	@echo "Starting Postgres with pgvector .."
	@cd ../../ && docker-compose -f docker-compose.yml up -d db

# -----------------
# Stop Postgres DB
# -----------------
db-stop:
	@cd ../../ && docker-compose -f docker-compose.yml up -d db

# ------------
# Build models
# ------------
models:
	@echo "πŸ’½ Building models in database .."
	@sleep 60 && python3 models.py

# -----------------
# Start FastAPI API
# -----------------
api:
	@echo "⚑ Starting FastAPI API server .."
	@sleep 5 && uvicorn main:app --port 8888 --reload

# -----------------
# Stop FastAPI API
# -----------------
api-stop:
	@echo "πŸ›‘ Stopping FastAPI server .."
	@killall uvicorn