Ver código fonte

fix: MSSQL - assetFolder getHierarchy query (#1131)

apif 5 anos atrás
pai
commit
8badd8fd55
1 arquivos alterados com 15 adições e 5 exclusões
  1. 15 5
      server/models/assetFolders.js

+ 15 - 5
server/models/assetFolders.js

@@ -40,11 +40,21 @@ module.exports = class AssetFolder extends Model {
    * @param {Number} folderId Id of the folder
    */
   static async getHierarchy (folderId) {
-    const hier = await WIKI.models.knex.withRecursive('ancestors', qb => {
-      qb.select('id', 'name', 'slug', 'parentId').from('assetFolders').where('id', folderId).union(sqb => {
-        sqb.select('a.id', 'a.name', 'a.slug', 'a.parentId').from('assetFolders AS a').join('ancestors', 'ancestors.parentId', 'a.id')
-      })
-    }).select('*').from('ancestors')
+    let hier
+    if (WIKI.config.db.type === 'mssql') {
+      hier = await WIKI.models.knex.with('ancestors', qb => {
+        qb.select('id', 'name', 'slug', 'parentId').from('assetFolders').where('id', folderId).unionAll(sqb => {
+          sqb.select('a.id', 'a.name', 'a.slug', 'a.parentId').from('assetFolders AS a').join('ancestors', 'ancestors.parentId', 'a.id')
+        })
+      }).select('*').from('ancestors')
+    }
+    else {
+      hier = await WIKI.models.knex.withRecursive('ancestors', qb => {
+        qb.select('id', 'name', 'slug', 'parentId').from('assetFolders').where('id', folderId).union(sqb => {
+          sqb.select('a.id', 'a.name', 'a.slug', 'a.parentId').from('assetFolders AS a').join('ancestors', 'ancestors.parentId', 'a.id')
+        })
+      }).select('*').from('ancestors')
+    }
     // The ancestors are from children to grandparents, must reverse for correct path order.
     return _.reverse(hier)
   }