server/src/config/config.service.ts

157 lines
2.9 KiB
TypeScript

import { Injectable } from '@nestjs/common';
import { ConfigService as _ConfigService } from '@nestjs/config';
@Injectable()
export class ConfigService {
constructor(
/**
* `@nestjs/config` 的 ConfigService实例
*/
public config: _ConfigService,
) {}
/**
* 保留原有的get方法
*/
get(...args: [string, any]) {
return this.config.get(...args);
}
/**
* 标题
* @default 'Appnify'
*/
get title(): string {
return this.config.get('TITLE', 'Appnify');
}
/**
* 是否启用CORS(跨域)
* @default true
*/
get cors(): boolean {
return this.config.get('CORS', true);
}
/**
* 副标题
* @default 'Appnify'
*/
get subtitle(): string {
return this.config.get('SUBTITLE', 'Appnify');
}
/**
* API前缀
* @default '/api'
*/
get apiPrefix(): string {
return this.config.get('API_PREFIX', '/api');
}
/**
* API默认版本
* @default '1'
*/
get apiVersion(): string {
return this.config.get('API_VERSION', '1');
}
/**
* API文档前缀
* @default '/openapi'
*/
get apiDocPrefix(): string {
const prefix = this.config.get('API_DOC_PREFIX', '/openapi');
return prefix.startsWith('/') ? prefix : `/${prefix}`;
}
/**
* 运行端口
* @default 3030
*/
get port(): number {
return Number(this.config.get('SERVER_PORT', 3030));
}
/**
* 运行地址
* @default '0:0:0:0'
*/
get host(): string {
return this.config.get('SERVER_HOST', '0:0:0:0');
}
/**
* 数据库类型
* @default 'sqlite'
*/
get dbType(): 'sqlite' | 'mysql' | 'mongodb' {
return this.config.get('DB_TYPE', 'sqlite');
}
/**
* SQLite数据库文件路径
* @default './content/db.sqlite'
*/
get dbSqlitePath(): string {
return this.config.get('DB_SQLITE_PATH', './content/db.sqlite');
}
/**
* 上传文件目录
* @default './content/uploads'
*/
get uploadDir(): string {
return this.config.get('UPLOAD_DIR', './content/uploads');
}
/**
* 上传文件URL前缀
* @default '/uploads'
*/
get uploadPrefix(): string {
return this.config.get('UPLOAD_URL', '/uploads');
}
/**
* 静态文件目录
* @default './content/static'
*/
get staticDir(): string {
return this.config.get('STATIC_DIR', './content/static');
}
/**
* 默认页码
* @default 1
*/
get defaultPage(): number {
return Number(this.config.get('DEFAULT_PAGE_NUMBER', 1));
}
/**
* 默认分页大小
* @default 10
*/
get defaultPageSize(): number {
return Number(this.config.get('DEFAULT_PAGE_SIZE', 10));
}
/**
* JWT密钥
* @default 'todo'
*/
get jwtSecret(): string {
return this.config.get('JWT_SECRET', 'todo');
}
/**
* 日志保存目录
* @default './content/logs'
*/
get logDir(): string {
return this.config.get('LOG_DIR', './content/logs');
}
}