Thanks to visit codestin.com
Credit goes to github.com

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

No packages published