1
0
mirror of https://github.com/khorevaa/kubodin.git synced 2025-03-03 15:32:43 +02:00
kubodin/api/infobases.go
2021-03-04 16:09:08 +03:00

285 lines
12 KiB
Go

package api
import (
"github.com/gofiber/fiber/v2"
"github.com/khorevaa/kubodin/service"
"github.com/khorevaa/ras-client/serialize"
"strconv"
)
type infobasesApi struct {
service service.Service
}
func (a *infobasesApi) Routes(r fiber.Router) {
r.Get("/infobases", withClient(a.List))
r.Post("/infobases", withClient(a.Create))
r.Get("/infobases/:infobase", withClient(a.Info))
r.Post("/infobases/:infobase", withClient(a.Update))
r.Delete("/infobases/:infobase", withClient(a.Drop))
router := r.Group("/infobases/:infobase")
parentApi := []route{
&sessionsApi{service: a.service},
&connectionsApi{service: a.service},
&blockerApi{service: a.service},
&locksApi{service: a.service},
}
for _, api := range parentApi {
api.Routes(router)
}
}
// List получение списка информационных баз с кластера
// Swagger-spec:
// @Summary получение списка информационных баз с кластера
// @Description получение списка информационных баз с кластера
// @Tags infobases
// @Accept json
// @Produce json
// @Param app path string true "app name"
// @Param cluster path string true "cluster uuid"
// @Param cluster-usr query string false "cluster user"
// @Param cluster-pwd query string false "cluster password"
// @Param force query bool false "force update ignore cache"
// @Success 200 {object} Response{data=serialize.InfobaseSummaryList}
// @Failure 500 {object} Response
// @Router /app/{app}/clusters/{cluster}/infobases [get]
func (a *infobasesApi) List(client service.ClientContext, ctx *fiber.Ctx) error {
list, err := a.service.GetInfobases(client)
if err != nil {
return ErrorResponse(ctx, err, "error get infobases")
}
return SuccessResponse(ctx, list)
}
// List получение списка информационных баз с сервера 1С Предприятие
// Swagger-spec:
// @Summary получение списка информационных баз с сервера 1С Предприятие
// @Description получение списка информационных баз с сервера 1С Предприятие
// @Tags infobases
// @Accept json
// @Produce json
// @Param app path string true "app name"
// @Param cluster-id query string false "cluster uuid"
// @Param cluster-usr query string false "cluster user"
// @Param cluster-pwd query string false "cluster password"
// @Param infobase-usr query string false "infobase user"
// @Param infobase-pwd query string false "infobase password"
// @Param force query bool false "force update ignore cache"
// @Success 200 {object} Response{data=serialize.InfobaseSummaryList}
// @Failure 500 {object} Response
// @Router /app/{app}/infobases [get]
func (a *infobasesApi) ListApp() {}
// Info получение информации об информационной базе с кластера
// Swagger-spec:
// @Summary получение информации об информационной базе с кластера
// @Description получение информации об информационной базе с кластера
// @Tags infobases
// @Accept json
// @Produce json
// @Param app path string true "app name"
// @Param cluster path string true "cluster uuid"
// @Param infobase path string true "infobase name or uuid"
// @Param cluster-usr query string false "cluster user"
// @Param cluster-pwd query string false "cluster password"
// @Param infobase-usr query string false "infobase user"
// @Param infobase-pwd query string false "infobase password"
// @Param force query bool false "force update ignore cache"
// @Success 200 {object} Response{data=serialize.InfobaseInfo}
// @Failure 500 {object} Response{data=string}
// @Router /app/{app}/clusters/{cluster}/infobases/{infobase} [get]
func (a *infobasesApi) Info(client service.ClientContext, ctx *fiber.Ctx) error {
return NoAllowResponse(ctx)
}
// Info получение информации об информационной базе с сервера 1С Предприятие
// Swagger-spec:
// @Summary получение информации об информационной базе с сервера 1С Предприятие
// @Description получение информации об информационной базе с сервера 1С Предприятие
// @Tags infobases
// @Accept json
// @Produce json
// @Param app path string true "app name"
// @Param infobase path string true "infobase name or uuid"
// @Param cluster-id query string false "cluster uuid"
// @Param cluster-usr query string false "cluster user"
// @Param cluster-pwd query string false "cluster password"
// @Param infobase-usr query string false "infobase user"
// @Param infobase-pwd query string false "infobase password"
// @Param force query bool false "force update ignore cache"
// @Success 200 {object} Response{data=serialize.InfobaseInfo}
// @Failure 500 {object} Response{data=string}
// @Router /app/{app}/infobases/{infobase} [get]
func (a *infobasesApi) InfoApp() {}
// Update обновление информации об информационной базе на кластере
// Swagger-spec:
// @Summary обновление информации об информационной базе на кластере
// @Description побновление информации об информационной базе на кластере
// @Tags infobases
// @Accept json
// @Produce json
// @Param app path string true "app name"
// @Param cluster path string true "cluster uuid"
// @Param infobase path string true "infobase name or uuid"
// @Param cluster-usr query string false "cluster user"
// @Param cluster-pwd query string false "cluster password"
// @Param infobase-usr query string false "infobase user"
// @Param infobase-pwd query string false "infobase password"
// @Param force query bool false "force update ignore cache"
// @Param info body serialize.InfobaseInfo true "new info"
// @Success 200 {object} Response{data=string}
// @Failure 400 {object} Response{data=string}
// @Failure 500 {object} Response{data=string}
// @Router /app/{app}/clusters/{cluster}/infobases/{infobase} [post]
func (a *infobasesApi) Update(client service.ClientContext, ctx *fiber.Ctx) error {
return NoAllowResponse(ctx)
}
// Update обновление информации об информационной базе на сервера 1С Предприятие
// Swagger-spec:
// @Summary обновление информации об информационной базе на сервера 1С Предприятие
// @Description обновление информации об информационной базе на сервера 1С Предприятие
// @Tags infobases
// @Accept json
// @Produce json
// @Param app path string true "app name"
// @Param infobase path string true "infobase name or uuid"
// @Param cluster-id query string false "cluster uuid"
// @Param cluster-usr query string false "cluster user"
// @Param cluster-pwd query string false "cluster password"
// @Param infobase-usr query string false "infobase user"
// @Param infobase-pwd query string false "infobase password"
// @Param force query bool false "force update ignore cache"
// @Param info body serialize.InfobaseInfo true "new info"
// @Success 200 {object} Response{data=string}
// @Failure 400 {object} Response{data=string}
// @Failure 500 {object} Response{data=string}
// @Router /app/{app}/infobases/{infobase} [post]
func (a *infobasesApi) UpdateApp() {}
// Create создание информационной базы на кластере
// Swagger-spec:
// @Summary оздание информационной базы на кластере
// @Description оздание информационной базы на кластере
// @Tags infobases
// @Accept json
// @Produce json
// @Param app path string true "app name"
// @Param cluster path string true "cluster uuid"
// @Param cluster-usr query string false "cluster user"
// @Param cluster-pwd query string false "cluster password"
// @Param create-db query bool false "create server db"
// @Param info body serialize.InfobaseInfo true "new info"
// @Success 200 {object} Response{data=serialize.InfobaseInfo}
// @Failure 400 {object} Response{data=string}
// @Failure 500 {object} Response{data=string}
// @Router /app/{app}/clusters/{cluster}/infobases [post]
func (a *infobasesApi) Create(client service.ClientContext, ctx *fiber.Ctx) error {
var body serialize.InfobaseInfo
err := ctx.BodyParser(&body)
if err != nil {
return ErrorResponse(ctx, err, "error body parse infobase info")
}
//err = validateCreateInfobaseInfo(body)
//if err != nil {
// return ErrorResponse(ctx, err, "validate error")
//}
createDB, _ := strconv.ParseBool(ctx.Query("create-db", "false"))
info, err := a.service.CreateInfobase(client, &body, createDB)
if err != nil {
return ErrorResponse(ctx, err, "create infobase error")
}
return SuccessResponse(ctx, info)
}
// Create создание информационной базы на сервере 1С Предприятие
// Swagger-spec:
// @Summary создание информационной базы на сервере 1С Предприятие
// @Description создание информационной базы на сервере 1С Предприятие
// @Tags infobases
// @Accept json
// @Produce json
// @Param app path string true "app name"
// @Param cluster-id query string false "cluster uuid"
// @Param cluster-usr query string false "cluster user"
// @Param cluster-pwd query string false "cluster password"
// @Param create-db query bool false "create server db"
// @Param info body serialize.InfobaseInfo true "new info"
// @Success 200 {object} Response{data=serialize.InfobaseInfo}
// @Failure 400 {object} Response{data=string}
// @Failure 500 {object} Response{data=string}
// @Router /app/{app}/infobases [post]
func (a *infobasesApi) CreateApp() {}
// Drop удаляет информационную базу с сервера кластера
// Swagger-spec:
// @Summary удаляет информационную базу с сервера кластера
// @Description удаляет информационную базу с сервера кластера
// @Tags infobases
// @Accept json
// @Produce json
// @Param app path string true "app name"
// @Param cluster path string true "cluster uuid"
// @Param infobase path string true "infobase name or uuid"
// @Param cluster-usr query string false "cluster user"
// @Param cluster-pwd query string false "cluster password"
// @Param infobase-usr query string false "infobase user"
// @Param infobase-pwd query string false "infobase password"
// @Param delete-db query bool false "delete server db"
// @Success 200 {object} Response{data=string}
// @Failure 500 {object} Response{data=string}
// @Router /app/{app}/clusters/{cluster}/infobases/{infobase} [delete]
func (a *infobasesApi) Drop(client service.ClientContext, ctx *fiber.Ctx) error {
deleteDB, _ := strconv.ParseBool(ctx.Query("delete-db", "false"))
err := a.service.DropInfobase(client, deleteDB)
if err != nil {
return ErrorResponse(ctx, err, "drop infobase error")
}
return SuccessResponse(ctx, nil)
}
// DropApp удаляет информационную базу с сервера 1С Предприятие
// Swagger-spec:
// @Summary удаляет информационную базу с сервера 1С Предприятие
// @Description удаляет информационную базу с сервера 1С Предприятие
// @Tags infobases
// @Accept json
// @Produce json
// @Param app path string true "app name"
// @Param infobase path string true "infobase name or uuid"
// @Param cluster-id query string false "cluster uuid"
// @Param cluster-usr query string false "cluster user"
// @Param cluster-pwd query string false "cluster password"
// @Param infobase-usr query string false "infobase user"
// @Param infobase-pwd query string false "infobase password"
// @Param delete-db query bool false "delete server db"
// @Success 200 {object} Response{data=string}
// @Failure 500 {object} Response{data=string}
// @Router /app/{app}/infobases/{infobase} [delete]
func (a *infobasesApi) DropApp() {}