From 2c94bb4e0a8a9c0b0b3e44ba89ca0d4b72542176 Mon Sep 17 00:00:00 2001 From: FlorianVAG Date: Wed, 22 Jun 2022 09:56:11 +0200 Subject: [PATCH] refactor: reduced code duplication --- expression_ext.go | 54 +++++++++++++---------------------------------- 1 file changed, 15 insertions(+), 39 deletions(-) diff --git a/expression_ext.go b/expression_ext.go index 30556134..1763f3a8 100644 --- a/expression_ext.go +++ b/expression_ext.go @@ -205,13 +205,7 @@ func Concat(stmts ...interface{}) *expr { e.expr += ", " } - if exp, ok := stmt.(*expr); ok { - e.expr += exp.expr - e.args = append(e.args, exp.args...) - } else { - e.expr += "?" - e.args = append(e.args, stmt) - } + addStatementToExpression(e, stmt) } e.expr += ")" @@ -384,30 +378,24 @@ func (db *DB) TimestampDiffExpr(unit TimeUnit, timestamp1 interface{}, timestamp } e.expr += unit.String(dialect) + "," - - if exp, ok := timestamp1.(*expr); ok { - e.expr += exp.expr - e.args = append(e.args, exp.args...) - } else { - e.expr += "?" - e.args = append(e.args, timestamp1) - } - + addStatementToExpression(e, timestamp1) e.expr += "," - - if exp, ok := timestamp2.(*expr); ok { - e.expr += exp.expr - e.args = append(e.args, exp.args...) - } else { - e.expr += "?" - e.args = append(e.args, timestamp2) - } - + addStatementToExpression(e, timestamp2) e.expr += ")" return e } +func addStatementToExpression(e *expr, stm interface{}) { + if exp, ok := stm.(*expr); ok { + e.expr += exp.expr + e.args = append(e.args, exp.args...) + } else { + e.expr += "?" + e.args = append(e.args, stm) + } +} + func (db *DB) TimestampDiff(unit TimeUnit, timestamp1 interface{}, timestamp2 interface{}) string { return db.TimestampDiffExpr(unit, timestamp1, timestamp2).expr } @@ -420,13 +408,7 @@ func (db *DB) CoalesceExpr(stmts ...interface{}) *expr { e.expr += ", " } - if exp, ok := stmt.(*expr); ok { - e.expr += exp.expr - e.args = append(e.args, exp.args...) - } else { - e.expr += "?" - e.args = append(e.args, stmt) - } + addStatementToExpression(e, stmt) } e.expr += ")" @@ -443,13 +425,7 @@ func Order(stmts ...interface{}) *expr { if i != 0 { e.expr += ", " } - if exp, ok := stmt.(*expr); ok { - e.expr += exp.expr - e.args = append(e.args, exp.args...) - } else { - e.expr += "?" - e.args = append(e.args, stmt) - } + addStatementToExpression(e, stmt) } return e }