fix admn controller
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
import type { Response } from 'express';
|
import type { Response } from 'express';
|
||||||
import { createRequire } from 'node:module';
|
import { createRequire } from 'node:module';
|
||||||
|
import fs from 'node:fs';
|
||||||
import path from 'node:path';
|
import path from 'node:path';
|
||||||
import process from 'node:process';
|
import process from 'node:process';
|
||||||
|
import { fileURLToPath } from 'node:url';
|
||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
import { AppDataSource } from '../config/data-source.js';
|
import { AppDataSource } from '../config/data-source.js';
|
||||||
import { env } from '../config/env.js';
|
import { env } from '../config/env.js';
|
||||||
@@ -37,10 +39,50 @@ const userUpdateSchema = z.object({
|
|||||||
defaultCurrency: z.string().min(3).max(8).optional()
|
defaultCurrency: z.string().min(3).max(8).optional()
|
||||||
});
|
});
|
||||||
|
|
||||||
|
type PackageJson = { version?: string };
|
||||||
|
|
||||||
const require = createRequire(import.meta.url);
|
const require = createRequire(import.meta.url);
|
||||||
const rootPackage = require(path.resolve(process.cwd(), '..', 'package.json')) as { version?: string };
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
const apiPackage = require(path.resolve(process.cwd(), 'package.json')) as { version?: string };
|
const __dirname = path.dirname(__filename);
|
||||||
const webPackage = require(path.resolve(process.cwd(), '..', 'web', 'package.json')) as { version?: string };
|
|
||||||
|
const readPackageJsonSafe = (filePath: string | null): PackageJson | null => {
|
||||||
|
if (!filePath || !fs.existsSync(filePath)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
return JSON.parse(fs.readFileSync(filePath, 'utf8')) as PackageJson;
|
||||||
|
} catch {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const findNearestPackageJson = (startDir: string): string | null => {
|
||||||
|
let currentDir = path.resolve(startDir);
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
const candidate = path.join(currentDir, 'package.json');
|
||||||
|
if (fs.existsSync(candidate)) {
|
||||||
|
return candidate;
|
||||||
|
}
|
||||||
|
|
||||||
|
const parentDir = path.dirname(currentDir);
|
||||||
|
if (parentDir === currentDir) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
currentDir = parentDir;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const apiPackagePath = findNearestPackageJson(__dirname);
|
||||||
|
const apiPackage = readPackageJsonSafe(apiPackagePath);
|
||||||
|
const apiRootDir = apiPackagePath ? path.dirname(apiPackagePath) : null;
|
||||||
|
const projectRootPackagePath = apiRootDir ? findNearestPackageJson(path.dirname(apiRootDir)) : null;
|
||||||
|
const rootPackage = readPackageJsonSafe(projectRootPackagePath);
|
||||||
|
const webPackage = readPackageJsonSafe(
|
||||||
|
projectRootPackagePath ? path.join(path.dirname(projectRootPackagePath), 'web', 'package.json') : null
|
||||||
|
);
|
||||||
|
|
||||||
const settingsRepo = () => AppDataSource.getRepository(AppSetting);
|
const settingsRepo = () => AppDataSource.getRepository(AppSetting);
|
||||||
const userRepo = () => AppDataSource.getRepository(User);
|
const userRepo = () => AppDataSource.getRepository(User);
|
||||||
@@ -179,9 +221,9 @@ export const getSystemInfo = async (_req: AuthenticatedRequest, res: Response) =
|
|||||||
return res.json({
|
return res.json({
|
||||||
item: {
|
item: {
|
||||||
appName: settings?.appName ?? 'Expense Control',
|
appName: settings?.appName ?? 'Expense Control',
|
||||||
suiteVersion: rootPackage.version ?? '0.0.0',
|
suiteVersion: rootPackage?.version ?? apiPackage?.version ?? '0.0.0',
|
||||||
apiVersion: apiPackage.version ?? '0.0.0',
|
apiVersion: apiPackage?.version ?? '0.0.0',
|
||||||
webVersion: webPackage.version ?? '0.0.0',
|
webVersion: webPackage?.version ?? '0.0.0',
|
||||||
nodeVersion: process.version,
|
nodeVersion: process.version,
|
||||||
environment: process.env.NODE_ENV ?? 'development',
|
environment: process.env.NODE_ENV ?? 'development',
|
||||||
database: env.DB_TYPE,
|
database: env.DB_TYPE,
|
||||||
|
|||||||
Reference in New Issue
Block a user