added swagger docs for equipment and updated group tasks
parent
65f5c1ca19
commit
a08fdd918c
23
go.mod
23
go.mod
|
@ -2,19 +2,27 @@ module jannex/admin-dashboard-backend
|
||||||
|
|
||||||
go 1.20
|
go 1.20
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/go-playground/validator/v10 v10.12.0
|
||||||
|
github.com/gofiber/fiber/v2 v2.44.0
|
||||||
|
github.com/gofiber/websocket/v2 v2.1.6
|
||||||
|
github.com/google/uuid v1.3.0
|
||||||
|
github.com/joho/godotenv v1.5.1
|
||||||
|
github.com/rs/zerolog v1.29.1
|
||||||
|
github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee
|
||||||
|
golang.org/x/crypto v0.7.0
|
||||||
|
gorm.io/driver/mysql v1.5.0
|
||||||
|
gorm.io/gorm v1.25.0
|
||||||
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/andybalholm/brotli v1.0.5 // indirect
|
github.com/andybalholm/brotli v1.0.5 // indirect
|
||||||
github.com/fasthttp/websocket v1.5.2 // indirect
|
github.com/fasthttp/websocket v1.5.2 // indirect
|
||||||
github.com/go-playground/locales v0.14.1 // indirect
|
github.com/go-playground/locales v0.14.1 // indirect
|
||||||
github.com/go-playground/universal-translator v0.18.1 // indirect
|
github.com/go-playground/universal-translator v0.18.1 // indirect
|
||||||
github.com/go-playground/validator/v10 v10.12.0 // indirect
|
|
||||||
github.com/go-sql-driver/mysql v1.7.0 // indirect
|
github.com/go-sql-driver/mysql v1.7.0 // indirect
|
||||||
github.com/gofiber/fiber/v2 v2.44.0 // indirect
|
|
||||||
github.com/gofiber/websocket/v2 v2.1.6 // indirect
|
|
||||||
github.com/google/uuid v1.3.0 // indirect
|
|
||||||
github.com/jinzhu/inflection v1.0.0 // indirect
|
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||||
github.com/jinzhu/now v1.1.5 // indirect
|
github.com/jinzhu/now v1.1.5 // indirect
|
||||||
github.com/joho/godotenv v1.5.1 // indirect
|
|
||||||
github.com/klauspost/compress v1.16.3 // indirect
|
github.com/klauspost/compress v1.16.3 // indirect
|
||||||
github.com/leodido/go-urn v1.2.2 // indirect
|
github.com/leodido/go-urn v1.2.2 // indirect
|
||||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
|
@ -22,16 +30,11 @@ require (
|
||||||
github.com/mattn/go-runewidth v0.0.14 // indirect
|
github.com/mattn/go-runewidth v0.0.14 // indirect
|
||||||
github.com/philhofer/fwd v1.1.2 // indirect
|
github.com/philhofer/fwd v1.1.2 // indirect
|
||||||
github.com/rivo/uniseg v0.2.0 // indirect
|
github.com/rivo/uniseg v0.2.0 // indirect
|
||||||
github.com/rs/zerolog v1.29.1 // indirect
|
|
||||||
github.com/savsgio/dictpool v0.0.0-20221023140959-7bf2e61cea94 // indirect
|
github.com/savsgio/dictpool v0.0.0-20221023140959-7bf2e61cea94 // indirect
|
||||||
github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee // indirect
|
|
||||||
github.com/tinylib/msgp v1.1.8 // indirect
|
github.com/tinylib/msgp v1.1.8 // indirect
|
||||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||||
github.com/valyala/fasthttp v1.45.0 // indirect
|
github.com/valyala/fasthttp v1.45.0 // indirect
|
||||||
github.com/valyala/tcplisten v1.0.0 // indirect
|
github.com/valyala/tcplisten v1.0.0 // indirect
|
||||||
golang.org/x/crypto v0.7.0 // indirect
|
|
||||||
golang.org/x/sys v0.7.0 // indirect
|
golang.org/x/sys v0.7.0 // indirect
|
||||||
golang.org/x/text v0.8.0 // indirect
|
golang.org/x/text v0.8.0 // indirect
|
||||||
gorm.io/driver/mysql v1.5.0 // indirect
|
|
||||||
gorm.io/gorm v1.25.0 // indirect
|
|
||||||
)
|
)
|
||||||
|
|
5
go.sum
5
go.sum
|
@ -2,9 +2,11 @@ github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/
|
||||||
github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
|
github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
|
||||||
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/fasthttp/websocket v1.5.2 h1:KdCb0EpLpdJpfE3IPA5YLK/aYBO3dhZcvwxz6tXe2LQ=
|
github.com/fasthttp/websocket v1.5.2 h1:KdCb0EpLpdJpfE3IPA5YLK/aYBO3dhZcvwxz6tXe2LQ=
|
||||||
github.com/fasthttp/websocket v1.5.2/go.mod h1:S0KC1VBlx1SaXGXq7yi1wKz4jMub58qEnHQG9oHuqBw=
|
github.com/fasthttp/websocket v1.5.2/go.mod h1:S0KC1VBlx1SaXGXq7yi1wKz4jMub58qEnHQG9oHuqBw=
|
||||||
|
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
|
||||||
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
|
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
|
||||||
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
|
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
|
||||||
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
|
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
|
||||||
|
@ -43,6 +45,7 @@ github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG
|
||||||
github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw=
|
github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw=
|
||||||
github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0=
|
github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0=
|
||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
|
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
|
||||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||||
|
@ -60,6 +63,7 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS
|
||||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
|
github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
|
||||||
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
github.com/tinylib/msgp v1.1.6/go.mod h1:75BAfg2hauQhs3qedfdDZmWAPcFMAvJE5b9rGOMufyw=
|
github.com/tinylib/msgp v1.1.6/go.mod h1:75BAfg2hauQhs3qedfdDZmWAPcFMAvJE5b9rGOMufyw=
|
||||||
github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0=
|
github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0=
|
||||||
|
@ -124,6 +128,7 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T
|
||||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gorm.io/driver/mysql v1.5.0 h1:6hSAT5QcyIaty0jfnff0z0CLDjyRgZ8mlMHLqSt7uXM=
|
gorm.io/driver/mysql v1.5.0 h1:6hSAT5QcyIaty0jfnff0z0CLDjyRgZ8mlMHLqSt7uXM=
|
||||||
gorm.io/driver/mysql v1.5.0/go.mod h1:FFla/fJuCvyTi7rJQd27qlNX2v3L6deTR1GgTjSOLPo=
|
gorm.io/driver/mysql v1.5.0/go.mod h1:FFla/fJuCvyTi7rJQd27qlNX2v3L6deTR1GgTjSOLPo=
|
||||||
|
|
6
main.go
6
main.go
|
@ -1,9 +1,9 @@
|
||||||
// Package classification Jannex API Documentation.
|
// Package classification JNX Admin-Dashboard API Documentation.
|
||||||
//
|
//
|
||||||
// Schemes: https
|
// Schemes: https
|
||||||
// Host: janex
|
// Host: jannex
|
||||||
// BasePath: /v1
|
// BasePath: /v1
|
||||||
// Version: 0.0.1
|
// Version: 1.0.0
|
||||||
//
|
//
|
||||||
// Consumes:
|
// Consumes:
|
||||||
// - application/json
|
// - application/json
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
package structs
|
|
||||||
|
|
||||||
import "encoding/json"
|
|
||||||
|
|
||||||
type ApiGroupTaskRequest struct {
|
|
||||||
Category string
|
|
||||||
GroupId string
|
|
||||||
Description string
|
|
||||||
GlobalInputs json.RawMessage
|
|
||||||
}
|
|
|
@ -14,6 +14,7 @@ type Equipment struct {
|
||||||
UpdatedAt time.Time
|
UpdatedAt time.Time
|
||||||
} */
|
} */
|
||||||
|
|
||||||
|
// swagger:model EquipmentDocumentation
|
||||||
type EquipmentDocumentation struct {
|
type EquipmentDocumentation struct {
|
||||||
Id string
|
Id string
|
||||||
StockItemId string // stock item id of invex system
|
StockItemId string // stock item id of invex system
|
||||||
|
@ -34,6 +35,7 @@ type ApiGetDocumentationEquipmentRequest struct {
|
||||||
DocumentationId string `json:"documentationId"`
|
DocumentationId string `json:"documentationId"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// swagger:model ApiCreateEquipmentDocumentationRequest
|
||||||
type ApiCreateEquipmentDocumentationRequest struct {
|
type ApiCreateEquipmentDocumentationRequest struct {
|
||||||
StockItemId string `json:"stockItemId"`
|
StockItemId string `json:"stockItemId"`
|
||||||
Type uint8 `json:"type"`
|
Type uint8 `json:"type"`
|
||||||
|
@ -41,11 +43,13 @@ type ApiCreateEquipmentDocumentationRequest struct {
|
||||||
Notes json.RawMessage `json:"notes"`
|
Notes json.RawMessage `json:"notes"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// swagger:model ApiEquipmentDocumentationResponse
|
||||||
type ApiEquipmentDocumentationResponse struct {
|
type ApiEquipmentDocumentationResponse struct {
|
||||||
Status int
|
Status int
|
||||||
Documentations []EquipmentDocumentation
|
Documentations []EquipmentDocumentation
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// swagger:model ApiEditEquipmentDocumentationRequest
|
||||||
type ApiEditEquipmentDocumentationRequest struct {
|
type ApiEditEquipmentDocumentationRequest struct {
|
||||||
DocumentationId string `json:"documentationId"`
|
DocumentationId string `json:"documentationId"`
|
||||||
Type uint8 `json:"type"`
|
Type uint8 `json:"type"`
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package structs
|
package structs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -94,3 +95,11 @@ type GroupTaskStepFile struct {
|
||||||
OriginalFileName string // file name which was used by the python script
|
OriginalFileName string // file name which was used by the python script
|
||||||
SystemFileName string // file name which was set by this server
|
SystemFileName string // file name which was set by this server
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// swagger:model ApiGroupTaskRequest
|
||||||
|
type ApiGroupTaskRequest struct {
|
||||||
|
Category string
|
||||||
|
GroupId string
|
||||||
|
Description string
|
||||||
|
GlobalInputs json.RawMessage
|
||||||
|
}
|
||||||
|
|
|
@ -10,12 +10,240 @@
|
||||||
],
|
],
|
||||||
"swagger": "2.0",
|
"swagger": "2.0",
|
||||||
"info": {
|
"info": {
|
||||||
"title": "Janex API Documentation.",
|
"title": "JNX Admin-Dashboard API Documentation.",
|
||||||
"version": "0.0.1"
|
"version": "1.0.0"
|
||||||
},
|
},
|
||||||
"host": "janex",
|
"host": "jannex",
|
||||||
"basePath": "/v1",
|
"basePath": "/v1",
|
||||||
"paths": {
|
"paths": {
|
||||||
|
"/equipment/documentation/create": {
|
||||||
|
"post": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"equipment"
|
||||||
|
],
|
||||||
|
"summary": "Create a new equipment documentation",
|
||||||
|
"operationId": "equipmentCreateEquipmentDocumentation",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "You can create a new api key in your user profile",
|
||||||
|
"name": "X-Api-Key",
|
||||||
|
"in": "header"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/ApiCreateEquipmentDocumentationRequest"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "New equipment documentation created successfully"
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Invalid request body"
|
||||||
|
},
|
||||||
|
"401": {
|
||||||
|
"description": "No permissions"
|
||||||
|
},
|
||||||
|
"500": {
|
||||||
|
"description": "Failed to create equipment documentation"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/equipment/documentation/edit": {
|
||||||
|
"post": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"equipment"
|
||||||
|
],
|
||||||
|
"summary": "Edit equipment documentation",
|
||||||
|
"operationId": "equipmentEditEquipmentDocumentation",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "You can create a new api key in your user profile",
|
||||||
|
"name": "X-Api-Key",
|
||||||
|
"in": "header"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/ApiEditEquipmentDocumentationRequest"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "Equipment documentation edited successfully"
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Invalid request body"
|
||||||
|
},
|
||||||
|
"401": {
|
||||||
|
"description": "No permissions"
|
||||||
|
},
|
||||||
|
"500": {
|
||||||
|
"description": "Failed to edit equipment documentation"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/equipment/documentation/{stockItemId}/{documentationId}": {
|
||||||
|
"get": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"equipment"
|
||||||
|
],
|
||||||
|
"summary": "Get equipment documentation",
|
||||||
|
"operationId": "equipmentGetEquipmentDocumentation",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "You can create a new api key in your user profile",
|
||||||
|
"name": "X-Api-Key",
|
||||||
|
"in": "header"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "Stock item id",
|
||||||
|
"name": "stockItemId",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "Documentation id",
|
||||||
|
"name": "documentationId",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "Equipment documentation",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/EquipmentDocumentation"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Invalid request body"
|
||||||
|
},
|
||||||
|
"401": {
|
||||||
|
"description": "No permissions"
|
||||||
|
},
|
||||||
|
"500": {
|
||||||
|
"description": "Failed to get equipment documentation"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/equipment/documentations/{stockItemId}": {
|
||||||
|
"get": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"equipment"
|
||||||
|
],
|
||||||
|
"summary": "Get equipment documentations",
|
||||||
|
"operationId": "equipmentGetEquipmentDocumentations",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "You can create a new api key in your user profile",
|
||||||
|
"name": "X-Api-Key",
|
||||||
|
"in": "header"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "Stock item id",
|
||||||
|
"name": "stockItemId",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "Equipment documentations. Status 200 if equipment documentations found, status 404 if stock item not found on invex, status 401 if backend has no permissions to access invex",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/ApiEquipmentDocumentationResponse"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Invalid request body"
|
||||||
|
},
|
||||||
|
"401": {
|
||||||
|
"description": "No permissions"
|
||||||
|
},
|
||||||
|
"500": {
|
||||||
|
"description": "Failed to get equipment documentations"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/equipment/thumbnail/{stockItemId}": {
|
||||||
|
"get": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"equipment"
|
||||||
|
],
|
||||||
|
"summary": "Get equipment thumbnail",
|
||||||
|
"operationId": "equipmentGetEquipmentThumbnail",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "You can create a new api key in your user profile",
|
||||||
|
"name": "X-Api-Key",
|
||||||
|
"in": "header"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "Stock item id",
|
||||||
|
"name": "stockItemId",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "Equipment thumbnail picture. Backend server is just proxying the request to invex server and returning the response"
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Invalid request body"
|
||||||
|
},
|
||||||
|
"401": {
|
||||||
|
"description": "No permissions"
|
||||||
|
},
|
||||||
|
"500": {
|
||||||
|
"description": "Failed to get equipment thumbnail"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/grouptasks/start": {
|
"/grouptasks/start": {
|
||||||
"post": {
|
"post": {
|
||||||
"consumes": [
|
"consumes": [
|
||||||
|
@ -25,10 +253,10 @@
|
||||||
"application/json"
|
"application/json"
|
||||||
],
|
],
|
||||||
"tags": [
|
"tags": [
|
||||||
"grouptasks"
|
"grouptask"
|
||||||
],
|
],
|
||||||
"summary": "Start a new group task",
|
"summary": "Start a new group task",
|
||||||
"operationId": "grouptasksStart",
|
"operationId": "grouptaskStartGroupTask",
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"description": "You can create a new api key in your user profile",
|
"description": "You can create a new api key in your user profile",
|
||||||
|
@ -36,14 +264,16 @@
|
||||||
"in": "header"
|
"in": "header"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"description": "JSON -\u003e Category str, GroupId str, Description str, GlobalInputs [{key, value}, {...}]",
|
|
||||||
"name": "body",
|
"name": "body",
|
||||||
"in": "body"
|
"in": "body",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/ApiGroupTaskRequest"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "New group task created successfully"
|
"description": "New group task started successfully"
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
"description": "Invalid request body"
|
"description": "Invalid request body"
|
||||||
|
@ -52,10 +282,128 @@
|
||||||
"description": "No permissions"
|
"description": "No permissions"
|
||||||
},
|
},
|
||||||
"422": {
|
"422": {
|
||||||
"description": "No group tasks in this category or provided global inputs incomplete"
|
"description": "Global inputs are not complete or no group tasks in this category"
|
||||||
|
},
|
||||||
|
"500": {
|
||||||
|
"description": "Failed to start group task"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"definitions": {
|
||||||
|
"ApiCreateEquipmentDocumentationRequest": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"notes": {
|
||||||
|
"type": "object",
|
||||||
|
"x-go-name": "Notes"
|
||||||
|
},
|
||||||
|
"stockItemId": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "StockItemId"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "Title"
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "uint8",
|
||||||
|
"x-go-name": "Type"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "jannex/admin-dashboard-backend/modules/structs"
|
||||||
|
},
|
||||||
|
"ApiEditEquipmentDocumentationRequest": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"documentationId": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "DocumentationId"
|
||||||
|
},
|
||||||
|
"notes": {
|
||||||
|
"type": "object",
|
||||||
|
"x-go-name": "Notes"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "Title"
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "uint8",
|
||||||
|
"x-go-name": "Type"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "jannex/admin-dashboard-backend/modules/structs"
|
||||||
|
},
|
||||||
|
"ApiEquipmentDocumentationResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Documentations": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/EquipmentDocumentation"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Status": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "jannex/admin-dashboard-backend/modules/structs"
|
||||||
|
},
|
||||||
|
"ApiGroupTaskRequest": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Category": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"Description": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"GlobalInputs": {
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"GroupId": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "jannex/admin-dashboard-backend/modules/structs"
|
||||||
|
},
|
||||||
|
"EquipmentDocumentation": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"CreatedAt": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "date-time"
|
||||||
|
},
|
||||||
|
"CreatedByUserId": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"Id": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"Notes": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"StockItemId": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"Title": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"Type": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "uint8"
|
||||||
|
},
|
||||||
|
"UpdatedAt": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "date-time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "jannex/admin-dashboard-backend/modules/structs"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -9,6 +9,31 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func CreateEquipmentDocumentation(c *fiber.Ctx) error {
|
func CreateEquipmentDocumentation(c *fiber.Ctx) error {
|
||||||
|
// swagger:operation POST /equipment/documentation/create equipment equipmentCreateEquipmentDocumentation
|
||||||
|
// ---
|
||||||
|
// summary: Create a new equipment documentation
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: X-Api-Key
|
||||||
|
// in: header
|
||||||
|
// description: You can create a new api key in your user profile
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/ApiCreateEquipmentDocumentationRequest"
|
||||||
|
// responses:
|
||||||
|
// '200':
|
||||||
|
// description: New equipment documentation created successfully
|
||||||
|
// '400':
|
||||||
|
// description: Invalid request body
|
||||||
|
// '401':
|
||||||
|
// description: No permissions
|
||||||
|
// '500':
|
||||||
|
// description: Failed to create equipment documentation
|
||||||
|
|
||||||
var body structs.ApiCreateEquipmentDocumentationRequest
|
var body structs.ApiCreateEquipmentDocumentationRequest
|
||||||
|
|
||||||
if err := utils.BodyParserHelper(c, &body); err != nil {
|
if err := utils.BodyParserHelper(c, &body); err != nil {
|
||||||
|
@ -19,6 +44,34 @@ func CreateEquipmentDocumentation(c *fiber.Ctx) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetEquipmentDocumentations(c *fiber.Ctx) error {
|
func GetEquipmentDocumentations(c *fiber.Ctx) error {
|
||||||
|
// swagger:operation GET /equipment/documentations/{stockItemId} equipment equipmentGetEquipmentDocumentations
|
||||||
|
// ---
|
||||||
|
// summary: Get equipment documentations
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: X-Api-Key
|
||||||
|
// in: header
|
||||||
|
// description: You can create a new api key in your user profile
|
||||||
|
// - name: stockItemId
|
||||||
|
// in: path
|
||||||
|
// description: Stock item id
|
||||||
|
// required: true
|
||||||
|
// type: string
|
||||||
|
// responses:
|
||||||
|
// '200':
|
||||||
|
// description: Equipment documentations. Status 200 if equipment documentations found, status 404 if stock item not found on invex, status 401 if backend has no permissions to access invex
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/ApiEquipmentDocumentationResponse"
|
||||||
|
// '400':
|
||||||
|
// description: Invalid request body
|
||||||
|
// '401':
|
||||||
|
// description: No permissions
|
||||||
|
// '500':
|
||||||
|
// description: Failed to get equipment documentations
|
||||||
|
|
||||||
var params structs.ApiEquipmentRequest
|
var params structs.ApiEquipmentRequest
|
||||||
|
|
||||||
if err := utils.ParamsParserHelper(c, ¶ms); err != nil {
|
if err := utils.ParamsParserHelper(c, ¶ms); err != nil {
|
||||||
|
@ -29,6 +82,39 @@ func GetEquipmentDocumentations(c *fiber.Ctx) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetEquipmentDocumentation(c *fiber.Ctx) error {
|
func GetEquipmentDocumentation(c *fiber.Ctx) error {
|
||||||
|
// swagger:operation GET /equipment/documentation/{stockItemId}/{documentationId} equipment equipmentGetEquipmentDocumentation
|
||||||
|
// ---
|
||||||
|
// summary: Get equipment documentation
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: X-Api-Key
|
||||||
|
// in: header
|
||||||
|
// description: You can create a new api key in your user profile
|
||||||
|
// - name: stockItemId
|
||||||
|
// in: path
|
||||||
|
// description: Stock item id
|
||||||
|
// required: true
|
||||||
|
// type: string
|
||||||
|
// - name: documentationId
|
||||||
|
// in: path
|
||||||
|
// description: Documentation id
|
||||||
|
// required: true
|
||||||
|
// type: string
|
||||||
|
// responses:
|
||||||
|
// '200':
|
||||||
|
// description: Equipment documentation
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/EquipmentDocumentation"
|
||||||
|
// '400':
|
||||||
|
// description: Invalid request body
|
||||||
|
// '401':
|
||||||
|
// description: No permissions
|
||||||
|
// '500':
|
||||||
|
// description: Failed to get equipment documentation
|
||||||
|
|
||||||
var params structs.ApiGetDocumentationEquipmentRequest
|
var params structs.ApiGetDocumentationEquipmentRequest
|
||||||
|
|
||||||
if err := utils.ParamsParserHelper(c, ¶ms); err != nil {
|
if err := utils.ParamsParserHelper(c, ¶ms); err != nil {
|
||||||
|
@ -39,6 +125,31 @@ func GetEquipmentDocumentation(c *fiber.Ctx) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func EditEquipmentDocumentation(c *fiber.Ctx) error {
|
func EditEquipmentDocumentation(c *fiber.Ctx) error {
|
||||||
|
// swagger:operation POST /equipment/documentation/edit equipment equipmentEditEquipmentDocumentation
|
||||||
|
// ---
|
||||||
|
// summary: Edit equipment documentation
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: X-Api-Key
|
||||||
|
// in: header
|
||||||
|
// description: You can create a new api key in your user profile
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/ApiEditEquipmentDocumentationRequest"
|
||||||
|
// responses:
|
||||||
|
// '200':
|
||||||
|
// description: Equipment documentation edited successfully
|
||||||
|
// '400':
|
||||||
|
// description: Invalid request body
|
||||||
|
// '401':
|
||||||
|
// description: No permissions
|
||||||
|
// '500':
|
||||||
|
// description: Failed to edit equipment documentation
|
||||||
|
|
||||||
var body structs.ApiEditEquipmentDocumentationRequest
|
var body structs.ApiEditEquipmentDocumentationRequest
|
||||||
|
|
||||||
if err := utils.BodyParserHelper(c, &body); err != nil {
|
if err := utils.BodyParserHelper(c, &body); err != nil {
|
||||||
|
@ -49,6 +160,32 @@ func EditEquipmentDocumentation(c *fiber.Ctx) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetEquipmentThumbnail(c *fiber.Ctx) error {
|
func GetEquipmentThumbnail(c *fiber.Ctx) error {
|
||||||
|
// swagger:operation GET /equipment/thumbnail/{stockItemId} equipment equipmentGetEquipmentThumbnail
|
||||||
|
// ---
|
||||||
|
// summary: Get equipment thumbnail
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: X-Api-Key
|
||||||
|
// in: header
|
||||||
|
// description: You can create a new api key in your user profile
|
||||||
|
// - name: stockItemId
|
||||||
|
// in: path
|
||||||
|
// description: Stock item id
|
||||||
|
// required: true
|
||||||
|
// type: string
|
||||||
|
// responses:
|
||||||
|
// '200':
|
||||||
|
// description: Equipment thumbnail picture. Backend server is just proxying the request to invex server and returning the response
|
||||||
|
// '400':
|
||||||
|
// description: Invalid request body
|
||||||
|
// '401':
|
||||||
|
// description: No permissions
|
||||||
|
// '500':
|
||||||
|
// description: Failed to get equipment thumbnail
|
||||||
|
|
||||||
var params structs.ApiEquipmentRequest
|
var params structs.ApiEquipmentRequest
|
||||||
|
|
||||||
if err := utils.ParamsParserHelper(c, ¶ms); err != nil {
|
if err := utils.ParamsParserHelper(c, ¶ms); err != nil {
|
||||||
|
|
|
@ -13,7 +13,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func StartGroupTask(c *fiber.Ctx) error {
|
func StartGroupTask(c *fiber.Ctx) error {
|
||||||
// swagger:operation POST /grouptasks/start grouptasks grouptasksStart
|
// swagger:operation POST /grouptasks/start grouptask grouptaskStartGroupTask
|
||||||
// ---
|
// ---
|
||||||
// summary: Start a new group task
|
// summary: Start a new group task
|
||||||
// consumes:
|
// consumes:
|
||||||
|
@ -26,16 +26,19 @@ func StartGroupTask(c *fiber.Ctx) error {
|
||||||
// description: You can create a new api key in your user profile
|
// description: You can create a new api key in your user profile
|
||||||
// - name: body
|
// - name: body
|
||||||
// in: body
|
// in: body
|
||||||
// description: JSON -> Category str, GroupId str, Description str, GlobalInputs [{key, value}, {...}]
|
// schema:
|
||||||
|
// "$ref": "#/definitions/ApiGroupTaskRequest"
|
||||||
// responses:
|
// responses:
|
||||||
// '200':
|
// '200':
|
||||||
// description: New group task created successfully
|
// description: New group task started successfully
|
||||||
// '400':
|
// '400':
|
||||||
// description: Invalid request body
|
// description: Invalid request body
|
||||||
// '401':
|
// '401':
|
||||||
// description: No permissions
|
// description: No permissions
|
||||||
// '422':
|
// '422':
|
||||||
// description: No group tasks in this category or provided global inputs incomplete
|
// description: Global inputs are not complete or no group tasks in this category
|
||||||
|
// '500':
|
||||||
|
// description: Failed to start group task
|
||||||
|
|
||||||
var body structs.ApiGroupTaskRequest
|
var body structs.ApiGroupTaskRequest
|
||||||
|
|
||||||
|
|
|
@ -38,15 +38,11 @@ func SetupRoutes(app *fiber.App) {
|
||||||
g.Post("/start", requestAccessValidation, grouptask.StartGroupTask)
|
g.Post("/start", requestAccessValidation, grouptask.StartGroupTask)
|
||||||
|
|
||||||
e := v1.Group("/equipment")
|
e := v1.Group("/equipment")
|
||||||
// TODO: add user session validation
|
|
||||||
//e.Get("/scanned/:stockItemId", requestAccessValidation, equipment.EquipmentScanned)
|
|
||||||
//e.Get("/", requestAccessValidation, equipment.GetEquipment)
|
|
||||||
e.Get("/documentations/:stockItemId", requestAccessValidation, equipment.GetEquipmentDocumentations)
|
e.Get("/documentations/:stockItemId", requestAccessValidation, equipment.GetEquipmentDocumentations)
|
||||||
e.Post("/documentation/create", requestAccessValidation, equipment.CreateEquipmentDocumentation)
|
e.Post("/documentation/create", requestAccessValidation, equipment.CreateEquipmentDocumentation)
|
||||||
e.Get("/documentation/:stockItemId/:documentationId", requestAccessValidation, equipment.GetEquipmentDocumentation)
|
e.Get("/documentation/:stockItemId/:documentationId", requestAccessValidation, equipment.GetEquipmentDocumentation)
|
||||||
e.Post("/documentation/edit", requestAccessValidation, equipment.EditEquipmentDocumentation)
|
e.Post("/documentation/edit", requestAccessValidation, equipment.EditEquipmentDocumentation)
|
||||||
// access validation here implemented as it would require to implement authorization on web client side on Avatar Component
|
e.Get("/thumbnail/:stockItemId", requestAccessValidation, equipment.GetEquipmentThumbnail)
|
||||||
e.Get("/thumbnail/:stockItemId", equipment.GetEquipmentThumbnail)
|
|
||||||
|
|
||||||
app.Static("/", config.Cfg.FolderPaths.PublicStatic)
|
app.Static("/", config.Cfg.FolderPaths.PublicStatic)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue