generated from tailored/router-template
init
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import { app } from './index.ts';
|
||||
import { useConfig } from '@kevisual/use-config/env';
|
||||
|
||||
import { config } from './modules/config.ts';
|
||||
app
|
||||
.route({
|
||||
path: 'auth',
|
||||
@@ -38,7 +37,6 @@ app
|
||||
})
|
||||
.addTo(app);
|
||||
|
||||
const config = useConfig();
|
||||
const port = config.PORT || 4000;
|
||||
|
||||
console.log('run demo: http://localhost:' + port + '/api/router?path=demo&key=demo');
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
import { pino } from 'pino';
|
||||
import { useConfig } from '@kevisual/use-config/env';
|
||||
|
||||
const config = useConfig();
|
||||
|
||||
export const logger = pino({
|
||||
level: config.LOG_LEVEL || 'info',
|
||||
transport: {
|
||||
target: 'pino-pretty',
|
||||
options: {
|
||||
colorize: true,
|
||||
translateTime: 'SYS:standard',
|
||||
ignore: 'pid,hostname',
|
||||
},
|
||||
},
|
||||
serializers: {
|
||||
error: pino.stdSerializers.err,
|
||||
req: pino.stdSerializers.req,
|
||||
res: pino.stdSerializers.res,
|
||||
},
|
||||
base: {
|
||||
app: 'ai-chat',
|
||||
env: process.env.NODE_ENV || 'development',
|
||||
},
|
||||
});
|
||||
|
||||
export const logError = (message: string, data?: any) => logger.error({ data }, message);
|
||||
export const logWarning = (message: string, data?: any) => logger.warn({ data }, message);
|
||||
export const logInfo = (message: string, data?: any) => logger.info({ data }, message);
|
||||
export const logDebug = (message: string, data?: any) => logger.debug({ data }, message);
|
||||
|
||||
export const log = {
|
||||
error: logError,
|
||||
warn: logWarning,
|
||||
info: logInfo,
|
||||
debug: logDebug,
|
||||
};
|
||||
3
src/modules/config.ts
Normal file
3
src/modules/config.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import { useConfig } from '@kevisual/use-config/env';
|
||||
|
||||
export const config = useConfig();
|
||||
@@ -1,27 +1,42 @@
|
||||
import { Redis } from 'ioredis';
|
||||
import { config } from './config.ts';
|
||||
|
||||
type initRedisOpts = {
|
||||
onConnect?: () => void; // 连接成功的回调函数
|
||||
onError?: (msg?: any) => void; // 连接断开的回调函数
|
||||
};
|
||||
const initRedis = (config?: any, options?: initRedisOpts) => {
|
||||
const redis = new Redis({
|
||||
host: config?.REDIS_HOST || 'localhost', // Redis 服务器的主机名或 IP 地址
|
||||
port: config?.REDIS_PORT || 6379, // Redis 服务器的端口号
|
||||
// password: 'your_password', // Redis 的密码 (如果有)
|
||||
db: 0, // 要使用的 Redis 数据库索引 (0-15)
|
||||
keyPrefix: '', // key 前缀
|
||||
retryStrategy(times) {
|
||||
// 连接重试策略
|
||||
return Math.min(times * 50, 2000); // 每次重试时延迟增加
|
||||
},
|
||||
maxRetriesPerRequest: null, // 允许请求重试的次数 (如果需要无限次重试)
|
||||
...config, // 其他配置项
|
||||
});
|
||||
// 监听连接事件
|
||||
redis.on('connect', () => {
|
||||
if (options?.onConnect) {
|
||||
options.onConnect();
|
||||
console.log('Redis 连接成功');
|
||||
}
|
||||
});
|
||||
|
||||
redis.on('error', (err) => {
|
||||
console.error('Redis 连接错误', err);
|
||||
if (options?.onError) {
|
||||
options.onError(err);
|
||||
}
|
||||
});
|
||||
return redis;
|
||||
};
|
||||
// 配置 Redis 连接
|
||||
export const redis = new Redis({
|
||||
host: 'localhost', // Redis 服务器的主机名或 IP 地址
|
||||
port: 6379, // Redis 服务器的端口号
|
||||
// password: 'your_password', // Redis 的密码 (如果有)
|
||||
db: 0, // 要使用的 Redis 数据库索引 (0-15)
|
||||
keyPrefix: '', // key 前缀
|
||||
retryStrategy(times) {
|
||||
// 连接重试策略
|
||||
return Math.min(times * 50, 2000); // 每次重试时延迟增加
|
||||
},
|
||||
maxRetriesPerRequest: null, // 允许请求重试的次数 (如果需要无限次重试)
|
||||
});
|
||||
|
||||
// 监听连接事件
|
||||
redis.on('connect', () => {
|
||||
console.log('Redis 连接成功');
|
||||
});
|
||||
|
||||
redis.on('error', (err) => {
|
||||
console.error('Redis 连接错误', err);
|
||||
});
|
||||
export const redis = useConfigKey('redis', () => initRedis(config));
|
||||
|
||||
// 初始化 Redis 客户端
|
||||
export const redisPublisher = new Redis(); // 用于发布消息
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { Sequelize } from 'sequelize';
|
||||
import { useConfig } from '@kevisual/use-config/env';
|
||||
|
||||
const config = useConfig();
|
||||
import { config } from './config.ts';
|
||||
import { useContextKey } from '@kevisual/use-config/context';
|
||||
|
||||
export type PostgresConfig = {
|
||||
postgres: {
|
||||
@@ -23,9 +22,13 @@ const postgresConfig = {
|
||||
port: parseInt(config.POSTGRES_PORT || '5432'),
|
||||
database: config.POSTGRES_DB || 'postgres',
|
||||
};
|
||||
// connect to db
|
||||
export const sequelize = new Sequelize({
|
||||
dialect: 'postgres',
|
||||
...postgresConfig,
|
||||
// logging: false,
|
||||
});
|
||||
|
||||
export const init = async () => {
|
||||
return new Sequelize({
|
||||
dialect: 'postgres',
|
||||
...postgresConfig,
|
||||
// logging: false,
|
||||
});
|
||||
};
|
||||
|
||||
export const sequelize = useContextKey('sequelize', () => init());
|
||||
|
||||
Reference in New Issue
Block a user