78 lines
2.9 KiB
JavaScript
78 lines
2.9 KiB
JavaScript
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.checkI18n = checkI18n;
|
||
exports.checkAndUpdateI18n = checkAndUpdateI18n;
|
||
const tslib_1 = require("tslib");
|
||
const node_path_1 = require("node:path");
|
||
const requirePrj_1 = tslib_1.__importDefault(require("../utils/requirePrj"));
|
||
const dependencyBuilder_1 = require("oak-domain/lib/compiler/dependencyBuilder");
|
||
const node_assert_1 = tslib_1.__importDefault(require("node:assert"));
|
||
const lodash_1 = require("lodash");
|
||
const uuid_1 = require("oak-domain/lib/utils/uuid");
|
||
async function checkAndUpdateI18nInner(context, onlyCheck) {
|
||
const pwd = process.cwd();
|
||
const i18nData = (0, requirePrj_1.default)(pwd, (0, node_path_1.join)('lib', 'data', 'i18n'), (0, dependencyBuilder_1.analyzeDepedency)(pwd).ascOrder);
|
||
const originI18nData = await context.select('i18n', {
|
||
data: {
|
||
id: 1,
|
||
namespace: 1,
|
||
language: 1,
|
||
module: 1,
|
||
position: 1,
|
||
data: 1,
|
||
},
|
||
}, { dontCollect: true });
|
||
const originDataDict = {};
|
||
originI18nData.forEach((data) => originDataDict[data.id] = data);
|
||
const result = i18nData.map(async (i18n) => {
|
||
const { id, namespace, language, module, position, data } = i18n;
|
||
const origin = originDataDict[id];
|
||
if (origin) {
|
||
(0, node_assert_1.default)(namespace === origin.namespace && language === origin.language && module === origin.module && position === origin.position);
|
||
if (!(0, lodash_1.isEqual)(data, origin.data)) {
|
||
console.log(`[${namespace}]数据${onlyCheck ? '需要更新' : '将被更新'}`);
|
||
if (!onlyCheck) {
|
||
return context.operate('i18n', {
|
||
id: await (0, uuid_1.generateNewIdAsync)(),
|
||
action: 'update',
|
||
data: {
|
||
data,
|
||
},
|
||
filter: {
|
||
id,
|
||
},
|
||
}, {});
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
console.log(`[${namespace}]数据${onlyCheck ? '需要新建' : '将被新建'}`);
|
||
if (!onlyCheck) {
|
||
return context.operate('i18n', {
|
||
id: await (0, uuid_1.generateNewIdAsync)(),
|
||
action: 'create',
|
||
data: i18n,
|
||
}, {});
|
||
}
|
||
}
|
||
return Promise.resolve();
|
||
});
|
||
return await Promise.all(result);
|
||
}
|
||
/**
|
||
* 检查项目目录下的i18n数据和数据库中的差异
|
||
* @param context
|
||
* @returns
|
||
*/
|
||
function checkI18n(context) {
|
||
return checkAndUpdateI18nInner(context, true);
|
||
}
|
||
/**
|
||
* 检查项目目录下的i18n数据和数据库中的差异,并更新
|
||
* @param context
|
||
* @returns
|
||
*/
|
||
function checkAndUpdateI18n(context) {
|
||
return checkAndUpdateI18nInner(context);
|
||
}
|