go/psql endpoints
// https::/.../add
post
request = {
url: "URL" // string
}
answer = {
state: STATE // state_enum
state_msg: "MSG" // string
short_url_if_possible: "URL" // string
}
// https::/.../stat
post
request = {
url: "URL" // string
}
answer = {
state: STATE // state_enum
state_msg: "MSG" // string
stat_url_if_possible: 000 // unsigned int
}
enum state_enum = {
SUCCESS
ERROR
}
Для запуска сервиса с использованием Docker и Docker Compose выполните следующие шаги:
- Клонируйте репозиторий:
git clone https://github.com/minifylink/backend.git
cd backend
- Создайте файл .env на основе примера:
cp .env.example .env
-
Отредактируйте .env файл, установив необходимые пароли и настройки
-
При необходимости адаптируйте скрипт инициализации базы данных в
docker/init-db.sh
-
Запустите сервисы с помощью Docker Compose:
docker-compose up -d
- Сервис будет доступен по адресу http://localhost:8082
При первом запуске PostgreSQL автоматически инициализируется скриптом docker/init-db.sh
, который создает необходимые таблицы:
links
- для хранения ссылокusers
- для хранения пользователейanalytics
- для хранения аналитики по переходам
Настройки подключения к базе данных берутся из файла config/prod.yaml
и переменных окружения в .env
.
Если у вас возникают проблемы с подключением к базе данных, вы можете использовать следующие команды для отладки:
- Запуск тестового сервиса для проверки соединения с базой данных:
docker-compose --profile debug up db-test
- Проверка логов PostgreSQL:
docker-compose logs postgres
- Проверка логов бэкенд-сервиса:
docker-compose logs backend
- Вход в контейнер PostgreSQL для ручной проверки:
docker-compose exec postgres psql -U postgres -d shortener
- Если драйвер "pgx" не найден, убедитесь, что в файле repository.go используется строка
sql.Open("pgx", ...)
вместоsql.Open("postgres", ...)
, а также правильно импортирован пакет:_ "github.com/jackc/pgx/v5/stdlib"
.
Если вы хотите собрать Docker образ вручную:
docker build -t url-shortener .
Запуск контейнера:
docker run -p 8082:8082 -e HTTP_SERVER_PASSWORD=your_password url-shortener