Browse Source

添加order by

yjp 1 year ago
parent
commit
b4b87b2bd5

+ 26 - 0
framework/core/infrastructure/database/clause/order.go

@@ -0,0 +1,26 @@
+package clause
+
+type OrderBy struct {
+	columnName string
+	aes        bool
+}
+
+func NewOrderBy(columnName string, aes bool) *OrderBy {
+	return &OrderBy{
+		columnName: columnName,
+		aes:        aes,
+	}
+}
+
+func (clause *OrderBy) Clause() (string, error) {
+	order := " AES"
+	if !clause.aes {
+		order = " DESC"
+	}
+
+	return "ORDER BY " + clause.columnName + order + "\n", nil
+}
+
+func (clause *OrderBy) Args() []any {
+	return make([]any, 0)
+}

+ 2 - 0
test/database_clause_test.go

@@ -17,6 +17,7 @@ FROM
   JOIN test.classes ON classes.id = test.students.class_id
 WHERE
   ("name" = ? AND "hobby" IN ?) AND ("age" = ? OR "gender" = ?)
+ORDER BY name DESC
 LIMIT ? OFFSET ?`
 
 	selectClause := clause.NewSelect(
@@ -36,6 +37,7 @@ LIMIT ? OFFSET ?`
 					Equal("gender", "male").
 					Or(),
 			}),
+			clause.NewOrderBy("name", false),
 			clause.NewLimit(1, 10),
 		}...)