https://github.com/eclipsemode/song-library
Go song library project
https://github.com/eclipsemode/song-library
go go-chi sqlite3
Last synced: 8 months ago
JSON representation
Go song library project
- Host: GitHub
- URL: https://github.com/eclipsemode/song-library
- Owner: eclipsemode
- Created: 2025-01-23T18:46:27.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-23T18:47:51.000Z (about 1 year ago)
- Last Synced: 2025-05-21T22:11:42.225Z (11 months ago)
- Topics: go, go-chi, sqlite3
- Language: Go
- Homepage:
- Size: 42 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Реализация онлайн библиотеки песен 🎶
## Данные
### 1. Переменные env
Приложение имеет следующие env переменные:
- PORT = порт API
- HOST = адрес API
- TIMEOUT = Максимальное время ожидания в ms, после которого сервер закроет соединение
- IDLE_TIMEOUT = Время ожидания клиента в ждущем состоянии до его закрытия
- EXTERNAL_API = адрес внешнего API для запроса SongDetail
### 2. Зависимости
Проект использует версию Golang 1.23.4, и следующие важные библиотеки:
- **Go chi**: Роутер для создания REST API.
- **Swagger**: Для документирования API (Документация доступна по адресу http://localhost:8000/swagger/index.html при запущенном сервере).
- **godotenv**: Для подключенимя .env.
*Весь список зависимостей в файле go.mod
### 3. Маршруты API
- **DELETE /songs/{songId}** - Удаление песни по ID.
- **POST /songs** - Добавление новой песни в библиотеку (Данные песни получаеются по внешнему API, используются query параметры).
- **PUT /songs** - Обновление информации о песне.
- **GET /songs** - Получение списка песен с фильтрацией и пагинацией (используются query параметры).
- **GET /songs/{songId}** - Получение текста песни с пагинацией по куплетам (используются query параметры).
### 4. База данных
В проекте используется простая и легковесная база данных sqlite. Данная база была выбрана из-за простоты проекта.
## Запуск проекта
Приложение требует предварительно изменить EXTERNAL_API в env переменной на внешний сервис.
Запуск приложения происходит командой:
```sh
make run
```
Данная команда автоматически создаст Swagger документацию, бинарный файл, и запустит приложение.
Миграции со структурой базы данных и моковыми данными осуществляется при запуске приложения.
## Makefile Команды
Запуск приложения - предварительно запускает генерацию Swagger и создание бинарного файла
```sh
make run
```
---
Запуск приложения в DEBUG режиме (отображаются логи уровня DEBUG) - предварительно запускает генерацию Swagger и создание бинарного файла
```sh
make run-debug
```
---
Создание бинарного файла приложения
```sh
make build
```
---
Генерация Swagger документа:
```sh
make swag
```