Skip to content

Commit b95966b

Browse files
Added method in_random_order() which returns queryset in random order.
usage example. Using Query Builder builder.in_random_order().limit(2).get() Using Model User.in_random_order().limit(2).get()
1 parent aed42db commit b95966b

File tree

6 files changed

+17
-0
lines changed

6 files changed

+17
-0
lines changed

src/masoniteorm/models/Model.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ class Model(TimeStampsMixin, ObservesEvents, metaclass=ModelMeta):
147147
"has",
148148
"having",
149149
"increment",
150+
"in_random_order",
150151
"join_on",
151152
"join",
152153
"joins",

src/masoniteorm/query/QueryBuilder.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1775,6 +1775,10 @@ def truncate(self, foreign_keys=False):
17751775

17761776
return self.new_connection().query(sql, ())
17771777

1778+
def in_random_order(self):
1779+
"""Puts Query results in random order"""
1780+
return self.order_by_raw(self.grammar().compile_random())
1781+
17781782
def new_from_builder(self, from_builder=None):
17791783
"""Creates a new QueryBuilder class.
17801784

src/masoniteorm/query/grammars/MSSQLGrammar.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,3 +184,6 @@ def wrap_table(self, table_name):
184184

185185
def truncate_table(self, table, foreign_keys=False):
186186
return f"TRUNCATE TABLE {self.wrap_table(table)}"
187+
188+
def compile_random(self, seed):
189+
return "NEWID()"

src/masoniteorm/query/grammars/MySQLGrammar.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,3 +231,6 @@ def truncate_table(self, table, foreign_keys=False):
231231
f"TRUNCATE TABLE {self.wrap_table(table)}",
232232
self.enable_foreign_key_constraints(),
233233
]
234+
235+
def compile_random(self):
236+
return f"RAND()"

src/masoniteorm/query/grammars/PostgresGrammar.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,3 +207,6 @@ def truncate_table(self, table, foreign_keys=False):
207207
string
208208
"""
209209
return f"TRUNCATE TABLE {self.wrap_table(table)}"
210+
211+
def compile_random(self):
212+
return "random()"

src/masoniteorm/query/grammars/SQLiteGrammar.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,3 +209,6 @@ def truncate_table(self, table, foreign_keys=False):
209209
f"DELETE FROM {self.wrap_table(table)}",
210210
self.enable_foreign_key_constraints(),
211211
]
212+
213+
def compile_random(self):
214+
return "random()"

0 commit comments

Comments
 (0)