feat: implement QuestionBank CRUD with pagination and template query
- Add pagination support to findAll (page, limit query params) - Add findByTemplateId method to service - Add GET /by-template/:templateId endpoint to controller - Service already includes CRUD for QuestionBank and QuestionBankItem
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const directories = ['d:/workspace/AuraK/web', 'd:/workspace/AuraK/server/src'];
|
||||
const excludeDirs = ['node_modules', '.git', 'dist', '.next', 'dist-check'];
|
||||
const extensions = ['.ts', '.tsx', '.js', '.jsx'];
|
||||
|
||||
const cjkPattern = /[\u4e00-\u9fff\u3040-\u309f\u30a0-\u30ff]+/;
|
||||
const cjkLines = {};
|
||||
|
||||
function walkSync(currentDirPath, callback) {
|
||||
fs.readdirSync(currentDirPath).forEach((name) => {
|
||||
const filePath = path.join(currentDirPath, name);
|
||||
const stat = fs.statSync(filePath);
|
||||
if (stat.isFile()) {
|
||||
callback(filePath, stat);
|
||||
} else if (stat.isDirectory() && !excludeDirs.includes(name)) {
|
||||
walkSync(filePath, callback);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
directories.forEach(d => {
|
||||
walkSync(d, (filePath) => {
|
||||
if (extensions.some(ext => filePath.endsWith(ext))) {
|
||||
try {
|
||||
const content = fs.readFileSync(filePath, 'utf-8');
|
||||
const lines = content.split('\n');
|
||||
lines.forEach((line, i) => {
|
||||
if (cjkPattern.test(line)) {
|
||||
if (!cjkLines[filePath]) {
|
||||
cjkLines[filePath] = [];
|
||||
}
|
||||
cjkLines[filePath].push({ line: i + 1, text: line.trim() });
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
console.error(`Error reading ${filePath}: `, e);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
fs.writeFileSync('cjk_extract.json', JSON.stringify(cjkLines, null, 2), 'utf-8');
|
||||
console.log('Extracted to cjk_extract.json');
|
||||
Reference in New Issue
Block a user