Added backend and fixed openapi generation

This commit is contained in:
2025-04-08 22:24:24 +02:00
parent 21496baab5
commit 67a3162ae3
21 changed files with 405 additions and 157 deletions
+75
View File
@@ -0,0 +1,75 @@
import org.openapitools.generator.gradle.plugin.tasks.GenerateTask
import org.springframework.boot.gradle.tasks.bundling.BootJar
plugins {
id("org.openapi.generator") version "7.12.0"
id("org.springframework.boot") version "3.4.4"
id("io.spring.dependency-management") version "1.1.7"
java
}
repositories {
mavenCentral()
}
tasks.named("compileJava") {
dependsOn("generateJavaApi")
dependsOn("generateFrontendApi")
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
tasks.named<BootJar>("bootJar") {
enabled = false
}
tasks.jar {
enabled = true
}
sourceSets {
main {
java {
srcDir("${projectDir}/build/generated-resources/model/src/main/java")
exclude("org/openapitools/configuration/SpringDocConfiguration.java")
}
}
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-validation")
implementation("io.swagger.core.v3:swagger-annotations:2.2.20")
implementation("org.openapitools:jackson-databind-nullable:0.2.6")
implementation("org.springframework.hateoas:spring-hateoas:2.2.0")
}
tasks.register< GenerateTask>("generateJavaApi") {
generatorName.set("spring")
library.set("spring-boot")
inputSpec.set("${projectDir}/src/main/resources/api.yml")
configFile.set("${projectDir}/src/main/resources/config_backend.json")
outputDir.set("${projectDir}/build/generated-resources/model")
typeMappings.put("OffsetDateTime", "Instant")
importMappings.put("java.time.OffsetDateTime", "java.time.Instant")
modelNameSuffix.set("Dto")
generateModelTests.set(false)
generateModelDocumentation.set(false)
generateApiTests.set(false)
generateApiDocumentation.set(false)
generateAliasAsModel.set(true)
modelPackage.set("com.alttd.altitudeweb.model")
generateApiTests.set(false)
}
tasks.register<GenerateTask>("generateFrontendApi") {
generatorName.set("typescript-angular")
inputSpec.set("$rootDir/open_api/src/main/resources/api.yml")
outputDir.set("${projectDir}/../frontend/src/api")
configFile.set("$rootDir/open_api/src/main/resources/config_frontend.json")
generateApiTests.set(false)
}
@@ -10,6 +10,33 @@ tags:
- name: player
description: Retrieve player information
paths:
/player/teamMembers/{group}:
get:
tags:
- team
summary: Get team members
description: Retrieve players who are part of the specified team
operationId: getTeamMembers
parameters:
- name: group
in: path
required: true
description: The group name of the team
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/TeamMembers'
default:
description: Unexpected error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
/player/history:
post:
tags:
@@ -59,6 +86,22 @@ components:
duration:
type: integer
format: int64
TeamMembers:
type: array
items:
$ref: '#/components/schemas/TeamMember'
TeamMember:
type: object
properties:
name:
type: string
description: The name of the team member
group:
type: string
description: The group to which the team member belongs
required:
- name
- group
Error:
type: object
properties:
@@ -0,0 +1,33 @@
{
"library": "spring-boot",
"hideGenerationTimestamp": true,
"modelPackage": "com.alttd.altitudeweb.api.model",
"apiPackage": "com.alttd.altitudeweb.api",
"invokerPackage": "com.alttd.altitudeweb.api",
"serializableModel": true,
"openApiNullable": false,
"useTags": true,
"useGzipFeature" : true,
"hateoas": true,
"unhandledException": true,
"useSwaggerUI": true,
"importMappings": {
"ResourceSupport":"org.springframework.hateoas.RepresentationModel",
"Link": "org.springframework.hateoas.Link"
},
"generateApis": true,
"generateApiTests": false,
"generateApiDocumentation": false,
"generateModels": true,
"generateModelTests": false,
"generateSupportingFiles": false,
"modelNameSuffix": "Dto",
"generateTests": false,
"skipSpringdoc": true,
"dateLibrary": "java8",
"interfaceOnly": true,
"swaggerDocketConfig": false,
"skipDefaultInterface": true,
"enumUnknownDefaultCase": true,
"useSpringBoot3": true
}
@@ -0,0 +1,4 @@
{
"npmName": "generated-api",
"supportsES6": true
}