Procházet zdrojové kódy

🐛 fix(routes): 修复路线搜索测试失败问题

- 修复GenericCrudService中关联字段搜索的别名生成逻辑
- 从搜索字段中移除vehicleType枚举字段,避免PostgreSQL枚举类型不支持LIKE操作符的问题
- 确保路线名称、出发地、目的地搜索功能正常工作

🤖 Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname před 4 měsíci
rodič
revize
8540c04d51

+ 1 - 1
src/server/api/admin/routes/index.ts

@@ -10,7 +10,7 @@ export const routesRoutes = createCrudRoutes({
   updateSchema: updateRouteSchema,
   getSchema: getRouteSchema,
   listSchema: routeListResponseSchema,
-  searchFields: ['name', 'startLocation.name', 'endLocation.name', 'vehicleType'],
+  searchFields: ['name', 'startLocation.name', 'endLocation.name'],
   relations: ['activity', 'startLocation', 'endLocation'],
   middleware: [authMiddleware],
   userTracking: {

+ 4 - 3
src/server/utils/generic-crud.service.ts

@@ -63,9 +63,10 @@ export abstract class GenericCrudService<T extends ObjectLiteral> {
         // 检查是否为关联字段(包含点号)
         if (field.includes('.')) {
           const parts = field.split('.');
-          const alias = parts.slice(0, -1).join('_'); // 使用下划线连接关系路径作为别名
+          // 对于单层关联(如 startLocation.name),别名就是关联名本身
+          const alias = parts[0];
           const fieldName = parts[parts.length - 1];
-          
+
           searchConditions.push(`${alias}.${fieldName} LIKE :keyword`);
         } else {
           // 普通字段搜索
@@ -147,7 +148,7 @@ export abstract class GenericCrudService<T extends ObjectLiteral> {
 
     const finalQuery = query.skip(skip).take(pageSize);
 
-    // console.log(finalQuery.getSql())
+    // console.debug('Generated SQL:', finalQuery.getSql())
 
     return finalQuery.getManyAndCount();
   }