feat: 优化swagger类型

master
luoer 2023-10-18 17:53:05 +08:00
parent a9d099bb17
commit 2902d63702
4 changed files with 115 additions and 11 deletions

40
.gitea/stack.yaml Normal file
View File

@ -0,0 +1,40 @@
version: '3'
services:
server:
image: git.dev.juetan.cn/juetan/server:latest
networks:
- public
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
labels:
- traefik.enable=true
- traefik.http.routers.nest.rule=Host(`nest.dev.juetan.cn`) && PathPrefix(`/api`, `/upload`)
- traefik.http.routers.nest.entrypoints=websecure
- traefik.http.routers.nest.tls=true
- traefik.http.routers.nest.tls.certresolver=acmer
- traefik.http.services.nest1.loadbalancer.server.port=3030
web:
image: git.dev.juetan.cn/juetan/web:latest
networks:
- public
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
labels:
- traefik.enable=true
- traefik.http.routers.vue.rule=Host(`nest.dev.juetan.cn`)
- traefik.http.routers.vue.entrypoints=websecure
- traefik.http.routers.vue.tls=true
- traefik.http.routers.vue.tls.certresolver=acmer
- traefik.http.services.vue1.loadbalancer.server.port=80
networks:
public:
external: true

View File

@ -37,20 +37,38 @@ export function addResponseWrapper(doc: OpenAPIObject) {
continue;
}
const schema = json.schema;
// json.schema = {
// allOf: [
// {
// $ref: '#/components/schemas/Response',
// },
// {
// type: 'object',
// properties: {
// data: schema,
// },
// required: ['data'],
// },
// ],
// };
json.schema = {
allOf: [
{
$ref: '#/components/schemas/Response',
type: 'object',
properties: {
code: {
type: 'integer',
description: '状态码',
example: 2000,
format: 'int32',
},
{
type: 'object',
properties: {
data: schema,
},
required: ['data'],
message: {
type: 'string',
description: '提示信息',
example: '请求成功',
},
],
};
data: schema,
},
required: ['code', 'message'],
}
}
}
}

View File

@ -90,6 +90,41 @@ export class ConfigService {
return this.config.get('DB_TYPE', 'sqlite');
}
/**
* MySQL
*/
get sqlHost(): string {
return this.config.get('DB_MYSQL_HOST', 'localhost');
}
/**
* MySQL
*/
get sqlPort(): number {
return Number(this.config.get('DB_MYSQL_PORT', 3306));
}
/**
* MySQL
*/
get sqlUser(): string {
return this.config.get('DB_MYSQL_USERNAME', 'root');
}
/**
* MySQL
*/
get sqlPass(): string {
return this.config.get('DB_MYSQL_PASSWORD', '');
}
/**
* MySQL
*/
get sqlDatabase(): string {
return this.config.get('DB_MYSQL_DATABASE', 'appnify');
}
/**
* SQLite
* @default './content/db.sqlite'

View File

@ -23,6 +23,17 @@ import { RequestMiddleware } from './suscribers/request.middleware';
};
}
if (config.dbType === 'mysql') {
return {
type: config.dbType,
host: config.sqlHost,
port: config.sqlPort,
username: config.sqlUser,
password: config.sqlPass,
database: config.sqlDatabase,
synchronize: true,
autoLoadEntities: true,
namingStrategy: new SnakeNamingStrategy(),
};
}
},
inject: [ConfigService],