mirror of
https://github.com/khorevaa/kubodin.git
synced 2025-03-03 15:32:43 +02:00
285 lines
12 KiB
Go
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() {}
|