Skip to content

metaSort

WARNING

This will no longer receive updates in favor of metaQuery


Demo

Should perform simple sort

js
const dictionary = {
  name: 'users.name'
}

const result = knex('users')
  .metaSort({
    sort: 'asc',
    sortBy: 'name',
    dictionary,
    isCount: false
  })
  .toString()
sql
const expected = 'select * from `users` order by `users`.`name` asc'

Ignores sort if dictionary is empty

js
const dictionary = {
}

const result = knex('users')
  .metaSort({
    sort: 'asc',
    sortBy: 'name',
    dictionary,
    isCount: false
  })
  .toString()
sql
const expected = 'select * from `users`'

Ignores sort if "sort" is empty

js
const dictionary = {
  name: 'users.name'
}

const result = knex('users')
  .metaSort({
    sortBy: 'name',
    dictionary,
    isCount: false
  })
  .toString()
sql
const expected = 'select * from `users`'

Ignores sort if "sortBy" is empty

js
const dictionary = {
  name: 'users.name'
}

const result = knex('users')
  .metaSort({
    sort: 'asc',
    dictionary,
    isCount: false
  })
  .toString()
sql
const expected = 'select * from `users`'

Ignores sort if isCount is true

js
const dictionary = {
  name: 'users.name'
}

const result = knex('users')
  .metaSort({
    sort: 'asc',
    sortBy: 'name',
    dictionary,
    isCount: true
  })
  .toString()
sql
const expected = 'select * from `users`'

Ignores sort if isCount is true

js
const dictionary = {
  name: 'users.name'
}

const result = knex('users')
  .metaSort({
    sort: 'asc',
    sortBy: 'name',
    dictionary,
    isCount: true
  })
  .toString()
sql
const expected = 'select * from `users`'

Ignores sort array if isCount is true

js
const dictionary = {
  name: 'users.name',
  place: 'users.place'
}

const result = knex('users')
  .metaSort({
    sort: ['asc', 'desc'],
    sortBy: ['name', 'place'],
    dictionary,
    isCount: true
  })
  .toString()
sql
const expected = 'select * from `users`'

Ignores sort if "sort" is not valid keyword

js
const dictionary = {
  name: 'users.name'
}

const result = knex('users')
  .metaSort({
    sort: 'ascasd',
    sortBy: 'name',
    dictionary,
    isCount: false
  })
  .toString()
sql
const expected = 'select * from `users`'

Ignores sort if "sort" is not valid keyword

js
const dictionary = {
  name: 'users.name'
}

const result = knex('users')
  .metaSort({
    sort: ['ascasd'],
    sortBy: ['name'],
    dictionary,
    isCount: false
  })
  .toString()
sql
const expected = 'select * from `users`'

Should perform array sort

js
const dictionary = {
  name: 'users.name',
  place: 'users.place'
}

const result = knex('users')
  .metaSort({
    sort: ['asc', 'desc'],
    sortBy: ['name', 'place'],
    dictionary,
    isCount: false
  })
  .toString()
sql
const expected = 'select * from `users` order by `users`.`name` asc, `users`.`place` desc'

Should ignore if "sort" and "sortBy" data size is not the same

js
const dictionary = {
  name: 'users.name',
  place: 'users.place'
}

const result = knex('users')
  .metaSort({
    sort: ['asc'],
    sortBy: ['name', 'place'],
    dictionary,
    isCount: false
  })
  .toString()
sql
const expected = 'select * from `users`'

Should ignore if "sort" and "sortBy" data size is not the same

js
const dictionary = {
  name: ['users.name', 'users.created_at']
}

const result = knex('users')
  .metaSort({
    sort: 'desc',
    sortBy: 'name',
    dictionary,
    isCount: false
  })
  .toString()
sql
const expected = 'select * from `users` order by `users`.`name` desc, `users`.`created_at` desc'