From 3b1dc9c328c33e438b573950f3096d63c160b58e Mon Sep 17 00:00:00 2001 From: FFuchsi <56107867+FFuchsi@users.noreply.github.com> Date: Tue, 26 Sep 2023 09:35:25 +0200 Subject: [PATCH] Added OrderByCase Expression (#14) --- expression_ext.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/expression_ext.go b/expression_ext.go index c11d892e..d74aa004 100644 --- a/expression_ext.go +++ b/expression_ext.go @@ -559,6 +559,20 @@ func (e *expr) NotIn(values ...interface{}) *expr { return e.in(" NOT", values...) } +func (e *expr) OrderByCase(conditions ...interface{}) *expr { + e.expr = "(CASE " + e.expr + + for i, condition := range conditions { + e.expr += " WHEN ? THEN ?" + e.args = append(e.args, condition, i+1) + } + + e.expr += " ELSE ? END)" + e.args = append(e.args, len(conditions)+1) + + return e +} + func (e *expr) OrderAsc() string { return e.expr + " ASC " }