Feat: server-infoエンドポイント / Fix: logger.tsを追跡対象に / Feat: lynqchat-jsを利用可能に / Fix: lynqchat-jsに不足していたエンドポイントを追加
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"name": "backend",
|
||||
"private": true,
|
||||
"main": "dist/index.js",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
|
||||
Executable
+34
@@ -0,0 +1,34 @@
|
||||
import { appendFileSync } from "node:fs";
|
||||
import { EOL } from "node:os";
|
||||
|
||||
const createLog = (
|
||||
nativeLogger: (...args: any[]) => void,
|
||||
type: string,
|
||||
...args: any[]
|
||||
) => {
|
||||
if (args[0] instanceof Array) {
|
||||
args = args[0];
|
||||
}
|
||||
|
||||
const content = `${new Date().toLocaleString()} [${type}] ${args.join("\n").replaceAll("\n", "\n ")}`;
|
||||
|
||||
nativeLogger(content);
|
||||
|
||||
try {
|
||||
appendFileSync(
|
||||
`${import.meta.dirname}/../../../../.log/system.log`,
|
||||
`${content.toString().replace(/\x1B\[[0-9;]*m/g, '')}${EOL}`
|
||||
);
|
||||
} catch (err) {
|
||||
console.error(`${new Date().toLocaleString()} Logger: Failed to write to file.`);
|
||||
}
|
||||
}
|
||||
|
||||
const logger = {
|
||||
log: (...args: any[]) => createLog(console.log, "LOG", args),
|
||||
info: (...args: any[]) => createLog(console.info, "INFO", args),
|
||||
error: (...args: any[]) => createLog(console.error, "ERROR", args),
|
||||
warn: (...args: any[]) => createLog(console.warn, "WARN", args),
|
||||
}
|
||||
|
||||
export default logger;
|
||||
@@ -2,6 +2,7 @@ import type { FastifyInstance } from "fastify";
|
||||
import Setup from "./setup";
|
||||
import Primary from "./primary";
|
||||
import Me from "./me";
|
||||
import ServerInfo from "./server-info";
|
||||
|
||||
export default async function Routes(fastify: FastifyInstance) {
|
||||
await fastify.register(Setup, {
|
||||
@@ -12,6 +13,10 @@ export default async function Routes(fastify: FastifyInstance) {
|
||||
prefix: "/primary",
|
||||
});
|
||||
|
||||
await fastify.register(ServerInfo, {
|
||||
prefix: "/server-info",
|
||||
});
|
||||
|
||||
await fastify.register(Me, {
|
||||
prefix: "/me",
|
||||
});
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
import { DatabaseError } from "@/errors";
|
||||
import logger from "@/lib/logger";
|
||||
import { ConfigEntity } from "@/modules/entities/Config";
|
||||
import { UserEntity } from "@/modules/entities/User";
|
||||
import type { FastifyInstance } from "fastify";
|
||||
|
||||
export default async function ServerInfo(fastify: FastifyInstance) {
|
||||
fastify.post("/", async (req, res) => {
|
||||
try {
|
||||
const config = fastify.orm.em.getRepository(ConfigEntity);
|
||||
const user = fastify.orm.em.getRepository(UserEntity);
|
||||
const configCount = await config.count();
|
||||
const userCount = await user.count();
|
||||
|
||||
return res.send({
|
||||
isInitialized: configCount > 0,
|
||||
isFirstAdminExists: userCount > 0,
|
||||
userCount,
|
||||
});
|
||||
} catch (err) {
|
||||
logger.error("Database error:", err);
|
||||
|
||||
return res.code(500).send(DatabaseError());
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
import { ConfigEntity } from "@/modules/entities/Config";
|
||||
import { UserEntity } from "@/modules/entities/User";
|
||||
import type { FastifyInstance } from "fastify";
|
||||
|
||||
export default async function ServerInfo(fastify: FastifyInstance) {
|
||||
fastify.post("/", async (req, res) => {
|
||||
const config = fastify.orm.em.getRepository(ConfigEntity);
|
||||
const user = fastify.orm.em.getRepository(UserEntity);
|
||||
const configCount = await config.count();
|
||||
const userCount = await user.count();
|
||||
|
||||
return res.send({
|
||||
isInitialized: configCount > 0,
|
||||
isFirstAdminExists: userCount > 0,
|
||||
userCount,
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user