Implement swagger

This commit is contained in:
zardzul
2026-03-13 21:03:01 +01:00
parent 30298390a0
commit 0deee355c1
10 changed files with 652 additions and 4 deletions
+200
View File
@@ -0,0 +1,200 @@
// 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": {
"/artist/getAll": {
"get": {
"produces": [
"application/json"
],
"tags": [
"artist"
],
"summary": "List all artists",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/handlers.ErrorResponse"
}
}
}
}
},
"/user/create": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"user"
],
"summary": "Create a user",
"parameters": [
{
"description": "User payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/handlers.CreateUserRequest"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/handlers.CreateUserResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/handlers.ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/handlers.ErrorResponse"
}
}
}
}
},
"/user/getUserNameByID/{id}": {
"get": {
"produces": [
"application/json"
],
"tags": [
"user"
],
"summary": "Get username by user ID",
"parameters": [
{
"type": "string",
"description": "User ID (UUID)",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/handlers.UsernameResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/handlers.ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/handlers.ErrorResponse"
}
}
}
}
}
},
"definitions": {
"handlers.CreateUserRequest": {
"type": "object",
"required": [
"password",
"user_mail",
"user_name"
],
"properties": {
"password": {
"type": "string",
"minLength": 12
},
"user_mail": {
"type": "string"
},
"user_name": {
"type": "string"
}
}
},
"handlers.CreateUserResponse": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"message": {
"type": "string"
}
}
},
"handlers.ErrorResponse": {
"type": "object",
"properties": {
"error": {
"type": "string"
}
}
},
"handlers.UsernameResponse": {
"type": "object",
"properties": {
"user_name": {
"type": "string"
}
}
}
}
}`
// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
Version: "1.0",
Host: "",
BasePath: "/",
Schemes: []string{},
Title: "Music Index API",
Description: "API for managing users and artists in Music Index.",
InfoInstanceName: "swagger",
SwaggerTemplate: docTemplate,
LeftDelim: "{{",
RightDelim: "}}",
}
func init() {
swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
}
+175
View File
@@ -0,0 +1,175 @@
{
"swagger": "2.0",
"info": {
"description": "API for managing users and artists in Music Index.",
"title": "Music Index API",
"contact": {},
"version": "1.0"
},
"basePath": "/",
"paths": {
"/artist/getAll": {
"get": {
"produces": [
"application/json"
],
"tags": [
"artist"
],
"summary": "List all artists",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/handlers.ErrorResponse"
}
}
}
}
},
"/user/create": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"user"
],
"summary": "Create a user",
"parameters": [
{
"description": "User payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/handlers.CreateUserRequest"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/handlers.CreateUserResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/handlers.ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/handlers.ErrorResponse"
}
}
}
}
},
"/user/getUserNameByID/{id}": {
"get": {
"produces": [
"application/json"
],
"tags": [
"user"
],
"summary": "Get username by user ID",
"parameters": [
{
"type": "string",
"description": "User ID (UUID)",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/handlers.UsernameResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/handlers.ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/handlers.ErrorResponse"
}
}
}
}
}
},
"definitions": {
"handlers.CreateUserRequest": {
"type": "object",
"required": [
"password",
"user_mail",
"user_name"
],
"properties": {
"password": {
"type": "string",
"minLength": 12
},
"user_mail": {
"type": "string"
},
"user_name": {
"type": "string"
}
}
},
"handlers.CreateUserResponse": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"message": {
"type": "string"
}
}
},
"handlers.ErrorResponse": {
"type": "object",
"properties": {
"error": {
"type": "string"
}
}
},
"handlers.UsernameResponse": {
"type": "object",
"properties": {
"user_name": {
"type": "string"
}
}
}
}
}
+114
View File
@@ -0,0 +1,114 @@
basePath: /
definitions:
handlers.CreateUserRequest:
properties:
password:
minLength: 12
type: string
user_mail:
type: string
user_name:
type: string
required:
- password
- user_mail
- user_name
type: object
handlers.CreateUserResponse:
properties:
id:
type: string
message:
type: string
type: object
handlers.ErrorResponse:
properties:
error:
type: string
type: object
handlers.UsernameResponse:
properties:
user_name:
type: string
type: object
info:
contact: {}
description: API for managing users and artists in Music Index.
title: Music Index API
version: "1.0"
paths:
/artist/getAll:
get:
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
additionalProperties: true
type: object
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/handlers.ErrorResponse'
summary: List all artists
tags:
- artist
/user/create:
post:
consumes:
- application/json
parameters:
- description: User payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/handlers.CreateUserRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/handlers.CreateUserResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/handlers.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/handlers.ErrorResponse'
summary: Create a user
tags:
- user
/user/getUserNameByID/{id}:
get:
parameters:
- description: User ID (UUID)
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/handlers.UsernameResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/handlers.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/handlers.ErrorResponse'
summary: Get username by user ID
tags:
- user
swagger: "2.0"