From 71409f40dc1bba4f6d4b75008306d1ee9b6fd22c Mon Sep 17 00:00:00 2001 From: Ravonzz Date: Mon, 10 Jun 2024 07:36:18 +0500 Subject: [PATCH] Added readme.md --- docs/docs.go | 36 ------------------------------------ docs/swagger.json | 9 --------- docs/swagger.yaml | 6 ------ main.go | 30 ------------------------------ readme.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 44 insertions(+), 81 deletions(-) delete mode 100644 docs/docs.go delete mode 100644 docs/swagger.json delete mode 100644 docs/swagger.yaml create mode 100644 readme.md diff --git a/docs/docs.go b/docs/docs.go deleted file mode 100644 index ffca88c..0000000 --- a/docs/docs.go +++ /dev/null @@ -1,36 +0,0 @@ -// Package docs Code generated by swaggo/swag. DO NOT EDIT -package docs - -import "github.com/swaggo/swag" - -const docTemplate = `{ - "schemes": {{ marshal .Schemes }}, - "swagger": "2.0", - "info": { - "description": "{{escape .Description}}", - "title": "{{.Title}}", - "contact": {}, - "version": "{{.Version}}" - }, - "host": "{{.Host}}", - "basePath": "{{.BasePath}}", - "paths": {} -}` - -// SwaggerInfo holds exported Swagger Info so clients can modify it -var SwaggerInfo = &swag.Spec{ - Version: "1.0", - Host: "", - BasePath: "", - Schemes: []string{}, - Title: "API для тестового задания на Golang", - Description: "", - InfoInstanceName: "swagger", - SwaggerTemplate: docTemplate, - LeftDelim: "{{", - RightDelim: "}}", -} - -func init() { - swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) -} diff --git a/docs/swagger.json b/docs/swagger.json deleted file mode 100644 index 792945b..0000000 --- a/docs/swagger.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "API для тестового задания на Golang", - "contact": {}, - "version": "1.0" - }, - "paths": {} -} \ No newline at end of file diff --git a/docs/swagger.yaml b/docs/swagger.yaml deleted file mode 100644 index 08de91f..0000000 --- a/docs/swagger.yaml +++ /dev/null @@ -1,6 +0,0 @@ -info: - contact: {} - title: API для тестового задания на Golang - version: "1.0" -paths: {} -swagger: "2.0" diff --git a/main.go b/main.go index f6b01fe..58a2cb7 100644 --- a/main.go +++ b/main.go @@ -8,23 +8,13 @@ import ( "net/http" "github.com/gin-gonic/gin" - swaggerFiles "github.com/swaggo/files" - ginSwagger "github.com/swaggo/gin-swagger" ) -// @title API для тестового задания на Golang -// @version 1.0 - func main() { // Создание сервера r := gin.Default() - // Добавляем Swagger UI - r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) - - - r.POST("/product", func(c *gin.Context) { var product database.Product if err := c.ShouldBind(&product); err != nil { @@ -34,27 +24,22 @@ func main() { controllers.CreateProduct(c, product) }) - r.DELETE("/product/:id", func(c *gin.Context) { controllers.DeleteProduct(c) }) - r.GET("/product", func(c *gin.Context) { controllers.GetProducts(c) }) - r.GET("/product/:id", func(c *gin.Context) { controllers.GetProductInfo(c) }) - r.GET("/product/:id/buy", func(c *gin.Context) { controllers.BuyProduct(c) }) - r.POST("/manufacturer", func(c *gin.Context) { var manufacturer database.Manufacturer if err := c.ShouldBind(&manufacturer); err != nil { @@ -64,19 +49,14 @@ func main() { controllers.CreateManufacturer(c, manufacturer) }) - r.DELETE("/manufacturer/:id", func(c *gin.Context) { controllers.DeleteManufacturer(c) }) - - r.GET("/manufacturer", func(c *gin.Context) { controllers.GetManufacturers(c) }) - - r.PATCH("/manufacturer/:id", func(c *gin.Context) { var manufacturer types.ManufacturerPatchRequest if err := c.ShouldBind(&manufacturer); err != nil { @@ -86,8 +66,6 @@ func main() { controllers.EditManufacture(c, manufacturer) }) - - r.POST("/registration", func(c *gin.Context) { var form types.RegisterRequest if err := c.ShouldBind(&form); err != nil { @@ -97,8 +75,6 @@ func main() { controllers.RegisterUser(c, form) }) - - r.POST("/login", func(c *gin.Context) { var register types.LoginRequest if err := c.ShouldBind(®ister); err != nil { @@ -108,13 +84,10 @@ func main() { controllers.LoginUser(c, register) }) - r.GET("/user", func(c *gin.Context) { controllers.GetUser(c) }) - - r.PATCH("/user", func(c *gin.Context) { var user types.EditUserNameRequest if err := c.ShouldBind(&user); err != nil { @@ -124,7 +97,6 @@ func main() { controllers.EditUserName(c, user) }) - r.POST("/user/addmoney", func(c *gin.Context) { var moneyRequest types.AddMoneyRequest if err := c.ShouldBind(&moneyRequest); err != nil { @@ -134,7 +106,6 @@ func main() { controllers.AddMoneyToUser(c, moneyRequest) }) - r.GET("/user/products", func(c *gin.Context) { controllers.GetBuyedProducts(c) }) @@ -158,4 +129,3 @@ func main() { }() } - diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..40bcf75 --- /dev/null +++ b/readme.md @@ -0,0 +1,44 @@ +# Документация API + +## Обзор +Этот проект представляет собой RESTful API для управления товарами, производителями и пользователями. В качестве ORM используется GORM. + +## Endpoints + +### Товары + +- **POST /product** - Создание нового товара. Требуется JSON с данными товара. +- **DELETE /product/:id** - Удаление товара по идентификатору. +- **GET /product** - Получение списка всех товаров. +- **GET /product/:id** - Получение информации о конкретном товаре. +- **GET /product/:id/buy** - Покупка товара по идентификатору. + +### Производители + +- **POST /manufacturer** - Создание нового производителя. Требуется JSON с данными производителя. +- **DELETE /manufacturer/:id** - Удаление производителя по идентификатору. +- **GET /manufacturer** - Получение списка всех производителей. +- **PATCH /manufacturer/:id** - Редактирование данных производителя. Требуется JSON с изменениями. + +### Пользователи + +- **POST /registration** - Регистрация нового пользователя. Требуется JSON с данными пользователя. +- **POST /login** - Вход пользователя. Требуется JSON с данными для входа. +- **GET /user** - Получение данных текущего пользователя. +- **PATCH /user** - Редактирование имени пользователя. Требуется JSON с новым именем. +- **POST /user/addmoney** - Добавление денег на счет пользователя. Требуется JSON с суммой. +- **GET /user/products** - Получение списка купленных пользователем товаров. + +## Запуск сервера + +Сервер запускается в докер контейнере + +Сначала нужно собрать image командой: +``` +docker build -t ravonzz/go-testapi . +``` + +Затем можно запускать контейнер вместе с БД Postgresql командой: +``` +docker-compose up -d +```