Skip to content

Gulner-GI/BookList

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple BookList

Этот проект - это элементарный RESTful API для создания и управления списком книг. Реализован на Golang с использованием фреймворка Gin, с базой данных SQlite3. Проект был сделан в учебных целях, для оттачивания собственных навыков программирования Стек технологий: Язык: Go
Веб‑фреймворк: Gin
БД: SQLite3
Документация: swaggo (Swagger UI)
Тестирование: встроенный testing
CLI: Bash скрипты

Установка и запуск bash

  1. Клонировать репозиторий git clone https://github.com/Gulner-GI/BookList.git cd BookList
  2. Загрузить зависимости go mod download
  3. Сделать скрипт исполняемым chmod +x run
  4. Запустить сервер ./run start

Структура проекта: BookList/ config/config.go # конфигурация через ENV db/db.go # инициализация и миграции базы docs/docs.go # сгенерированная Swagger‑документация /swagger.json /swagger.yaml handlers/handlers.go # HTTP‑хендлеры и тесты /helpers_test.go /handlers_integration_test.go loggers/logger.go # настройка логирования models/models.go # структуры Book, Update, ErrorResponse routes/router.go # роутинг Gin run # обёртка для запуска скриптов scripts/start.sh # CLI‑скрипты: get.sh, add.sh, update.sh, delete.sh /help.sh /get.sh /create.sh /update.sh /delete.sh /end.sh main.go # точка входа books.db # база данных go.sum
go.mod
server.log # лог файл (генерируется на запуске) README.md # этот файл

Функционал Реализован полный CRUD функционал для получения списка книг, добавления книг в список, изменения данных о книгах, удаления книг из списка. Для прямой работы через HTTP можно использовать curl (см. документацию Swagger UI) Реализован CLI-интерфейс на bash: ./run start # запускает сервер ./run help # выдаёт список возможных команд ./run get [] # выдаёт список из всех книг, либо книгу с указанным id ./run create <title> <true|false> [--link ] # создаёт новую книгу ./run update --id [--title <title>] [--year ] [--genre ] [--status <true|false>] [--link ] # частично изменяет данные ./run delete # удаляет книгу по указанному id ./run end # завершает работу сервера Доступна swagger-документация по адресу http://localhost:8080/swagger/index.html Реализовано логирование, все логи пишутся в server.log Реализованы unit-тесты для вспомогательных функций (helpers_test.go), и интеграционные тесты полного CRUD цикла (handlers_integration_test.go)

Конфигурация По умолчанию: порт 8080, путь к файлу SQLite - DB_PATH указывает на books.db, режим работы GIN_MODE=debug

Стек технологий:

Язык: Go

Веб‑фреймворк: Gin

БД: SQLite3

Документация: swaggo (Swagger UI)

Тестирование: встроенный testing

CLI: Bash скрипты

Установка и запуск

bash

  1. Клонировать репозиторий

git clone https://github.com/Gulner-GI/BookList.git

cd BookList

  1. Загрузить зависимости

go mod download

  1. Сделать скрипт исполняемым

chmod +x run

  1. Запустить сервер

./run start

Структура проекта:

BookList/

config/config.go # конфигурация через ENV

db/db.go # инициализация и миграции базы

docs/docs.go # сгенерированная Swagger‑документация

/swagger.yaml

/swagger.json

handlers/handlers.go # HTTP‑хендлеры и тесты

/helpers_test.go

/handlers_integration_test.go

loggers/logger.go # настройка логирования

models/models.go # структуры Book, Update, ErrorResponse

routes/router.go # роутинг Gin

run # обёртка для запуска скриптов

scripts/start.sh # CLI‑скрипты

    /help.sh
    
    /get.sh
    
    /create.sh
    
    /update.sh
    
    /delete.sh
    
    /end.sh

main.go # точка входа

books.db # база данных

go.sum

go.mod

server.log # лог файл (генерируется на запуске)

README.md

Функционал

Реализован полный CRUD функционал для получения списка книг, добавления книг в список, изменения данных о книгах, удаления книг из списка. Для прямой работы через HTTP можно использовать curl (см. документацию Swagger UI) Реализован CLI-интерфейс на bash:

./run start                           # запускает сервер

./run help                            # выдаёт список возможных команд

./run get   [<id>]                    # выдаёт список из всех книг, либо книгу с указанным id

./run create <title> <year> <genre> <status> [link]                                              # создаёт новую книгу

./run update --id <id> [-title <title>] [-year <year>] [-genre <genre>] [-status <true|false>] [-link <url>] # частично изменяет данные

./run delete <id>                     # удаляет книгу по указанному id

./run end                             # завершает работу сервера

Доступна swagger-документация по адресу http://localhost:8080/swagger/index.html

Реализовано логирование, все логи пишутся в server.log

Реализованы unit-тесты для вспомогательных функций (helpers_test.go), и интеграционные тесты полного CRUD цикла (handlers_integration_test.go)

Конфигурация

По умолчанию: порт 8080, путь к файлу SQLite - DB_PATH указывает на books.db, режим работы GIN_MODE=debug

About

Mastering backend development with Go. My first project for learning REST APIs, SQLite3, Gin and other things

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors