2
0

assetFolders.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /* global WIKI */
  2. const Model = require('objection').Model
  3. /**
  4. * Users model
  5. */
  6. module.exports = class AssetFolder extends Model {
  7. static get tableName() { return 'assetFolders' }
  8. static get jsonSchema () {
  9. return {
  10. type: 'object',
  11. properties: {
  12. id: {type: 'integer'},
  13. name: {type: 'string'},
  14. slug: {type: 'string'}
  15. }
  16. }
  17. }
  18. static get relationMappings() {
  19. return {
  20. parent: {
  21. relation: Model.BelongsToOneRelation,
  22. modelClass: AssetFolder,
  23. join: {
  24. from: 'assetFolders.folderId',
  25. to: 'assetFolders.id'
  26. }
  27. }
  28. }
  29. }
  30. static async getHierarchy(folderId) {
  31. return WIKI.models.knex.withRecursive('ancestors', qb => {
  32. qb.select('id', 'name', 'slug', 'parentId').from('assetFolders').where('id', folderId).union(sqb => {
  33. sqb.select('a.id', 'a.name', 'a.slug', 'a.parentId').from('assetFolders AS a').join('ancestors', 'ancestors.parentId', 'a.id')
  34. })
  35. }).select('*').from('ancestors')
  36. }
  37. }