Skip to content

Commit 659e85b

Browse files
committed
feat(model_query_builder): add orderByRandom
1 parent 008ec0e commit 659e85b

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

src/orm/query_builder/index.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -643,6 +643,27 @@ export class ModelQueryBuilder
643643
return this.addWhereHas(relationName, 'not', operator, value)
644644
}
645645

646+
/**
647+
* Order results by random value.
648+
*/
649+
orderByRandom(seed = '') {
650+
switch (this.client.dialect.name) {
651+
case 'sqlite3':
652+
case 'better-sqlite3':
653+
case 'postgres':
654+
case 'redshift':
655+
return this.orderByRaw('RANDOM()')
656+
case 'mysql':
657+
return this.orderByRaw(`RAND(${seed})`)
658+
case 'mssql':
659+
return this.orderByRaw('NEWID()')
660+
case 'oracledb':
661+
return this.orderByRaw('dbms_random.value')
662+
default:
663+
throw new Error(`Cannot order by random for the given dialect ${this.client.dialect.name}`)
664+
}
665+
}
666+
646667
/**
647668
* Define a relationship to be preloaded
648669
*/

0 commit comments

Comments
 (0)