samlax12 commited on
Commit
7f95874
·
verified ·
1 Parent(s): 006ee19

Upload 18 files

Browse files
controllers/promptGroupController.js CHANGED
@@ -1,5 +1,6 @@
1
  const asyncHandler = require('express-async-handler');
2
  const PromptGroup = require('../models/PromptGroup');
 
3
 
4
  // @desc 获取所有提示词组
5
  // @route GET /api/prompt-groups
@@ -180,15 +181,40 @@ const deletePrompt = asyncHandler(async (req, res) => {
180
  // @route POST /api/prompt-groups/:id/dsl-files
181
  // @access Private
182
  const addDslFileToGroup = asyncHandler(async (req, res) => {
183
- const { name, fileData, mimeType } = req.body;
 
 
 
 
 
 
 
 
 
 
 
184
 
185
- const promptGroup = await PromptGroup.findById(req.params.id);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
186
 
187
- if (promptGroup) {
188
  const newDslFile = {
189
- name,
190
  fileData,
191
- mimeType: mimeType || 'application/octet-stream',
192
  uploadedAt: new Date(),
193
  };
194
 
@@ -196,10 +222,67 @@ const addDslFileToGroup = asyncHandler(async (req, res) => {
196
  promptGroup.updatedAt = new Date();
197
 
198
  const updatedPromptGroup = await promptGroup.save();
 
 
199
  res.status(201).json(updatedPromptGroup.dslFiles[updatedPromptGroup.dslFiles.length - 1]);
200
- } else {
201
- res.status(404);
202
- throw new Error('提示词组未找到');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
203
  }
204
  });
205
 
@@ -242,5 +325,6 @@ module.exports = {
242
  updatePrompt,
243
  deletePrompt,
244
  addDslFileToGroup,
 
245
  deleteDslFile,
246
  };
 
1
  const asyncHandler = require('express-async-handler');
2
  const PromptGroup = require('../models/PromptGroup');
3
+ const logger = require('../utils/logger');
4
 
5
  // @desc 获取所有提示词组
6
  // @route GET /api/prompt-groups
 
181
  // @route POST /api/prompt-groups/:id/dsl-files
182
  // @access Private
183
  const addDslFileToGroup = asyncHandler(async (req, res) => {
184
+ try {
185
+ const { name, fileData, mimeType } = req.body;
186
+
187
+ logger.info(`正在添加DSL文件: ${name}`);
188
+
189
+ // 验证请求数据
190
+ if (!name || !fileData) {
191
+ res.status(400);
192
+ throw new Error('文件名和文件数据是必需的');
193
+ }
194
+
195
+ const promptGroup = await PromptGroup.findById(req.params.id);
196
 
197
+ if (!promptGroup) {
198
+ res.status(404);
199
+ throw new Error('提示词组未找到');
200
+ }
201
+
202
+ // 验证文件数据格式
203
+ if (typeof fileData !== 'string') {
204
+ res.status(400);
205
+ throw new Error('文件数据必须是字符串');
206
+ }
207
+
208
+ // 确保文件名以 .yml 结尾
209
+ let fileName = name;
210
+ if (!fileName.toLowerCase().endsWith('.yml')) {
211
+ fileName = fileName.replace(/\.[^/.]+$/, '') + '.yml';
212
+ }
213
 
 
214
  const newDslFile = {
215
+ name: fileName,
216
  fileData,
217
+ mimeType: mimeType || 'application/x-yaml',
218
  uploadedAt: new Date(),
219
  };
220
 
 
222
  promptGroup.updatedAt = new Date();
223
 
224
  const updatedPromptGroup = await promptGroup.save();
225
+ logger.info(`DSL文件添加成功: ${fileName}`);
226
+
227
  res.status(201).json(updatedPromptGroup.dslFiles[updatedPromptGroup.dslFiles.length - 1]);
228
+ } catch (error) {
229
+ logger.error(`添加DSL文件时出错: ${error.message}`);
230
+ if (!res.statusCode || res.statusCode === 200) {
231
+ res.status(500);
232
+ }
233
+ throw error;
234
+ }
235
+ });
236
+
237
+ // @desc 更新DSL文件
238
+ // @route PUT /api/prompt-groups/:id/dsl-files/:fileId
239
+ // @access Private
240
+ const updateDslFile = asyncHandler(async (req, res) => {
241
+ try {
242
+ const { name, fileData, mimeType } = req.body;
243
+
244
+ logger.info(`正在更新DSL文件: ${req.params.fileId}`);
245
+
246
+ const promptGroup = await PromptGroup.findById(req.params.id);
247
+
248
+ if (!promptGroup) {
249
+ res.status(404);
250
+ throw new Error('提示词组未找到');
251
+ }
252
+
253
+ const fileIndex = promptGroup.dslFiles.findIndex(
254
+ (f) => f._id.toString() === req.params.fileId
255
+ );
256
+
257
+ if (fileIndex === -1) {
258
+ res.status(404);
259
+ throw new Error('DSL文件未找到');
260
+ }
261
+
262
+ // 确保文件名以 .yml 结尾
263
+ let fileName = name || promptGroup.dslFiles[fileIndex].name;
264
+ if (!fileName.toLowerCase().endsWith('.yml')) {
265
+ fileName = fileName.replace(/\.[^/.]+$/, '') + '.yml';
266
+ }
267
+
268
+ // 更新文件属性
269
+ if (name) promptGroup.dslFiles[fileIndex].name = fileName;
270
+ if (fileData) promptGroup.dslFiles[fileIndex].fileData = fileData;
271
+ if (mimeType) promptGroup.dslFiles[fileIndex].mimeType = mimeType;
272
+
273
+ // 更新时间
274
+ promptGroup.updatedAt = new Date();
275
+
276
+ const updatedPromptGroup = await promptGroup.save();
277
+ logger.info(`DSL文件更新成功: ${fileName}`);
278
+
279
+ res.json(updatedPromptGroup.dslFiles[fileIndex]);
280
+ } catch (error) {
281
+ logger.error(`更新DSL文件时出错: ${error.message}`);
282
+ if (!res.statusCode || res.statusCode === 200) {
283
+ res.status(500);
284
+ }
285
+ throw error;
286
  }
287
  });
288
 
 
325
  updatePrompt,
326
  deletePrompt,
327
  addDslFileToGroup,
328
+ updateDslFile,
329
  deleteDslFile,
330
  };
routes/promptGroupRoutes.js CHANGED
@@ -10,6 +10,7 @@ const {
10
  updatePrompt,
11
  deletePrompt,
12
  addDslFileToGroup,
 
13
  deleteDslFile,
14
  } = require('../controllers/promptGroupController');
15
  const { protect } = require('../middleware/auth');
@@ -37,6 +38,7 @@ router.route('/:id/dsl-files')
37
  .post(protect, addDslFileToGroup);
38
 
39
  router.route('/:id/dsl-files/:fileId')
 
40
  .delete(protect, deleteDslFile);
41
 
42
  module.exports = router;
 
10
  updatePrompt,
11
  deletePrompt,
12
  addDslFileToGroup,
13
+ updateDslFile,
14
  deleteDslFile,
15
  } = require('../controllers/promptGroupController');
16
  const { protect } = require('../middleware/auth');
 
38
  .post(protect, addDslFileToGroup);
39
 
40
  router.route('/:id/dsl-files/:fileId')
41
+ .put(protect, updateDslFile)
42
  .delete(protect, deleteDslFile);
43
 
44
  module.exports = router;