3 Commits
Author SHA1 Message Date
gdulai cd1f61fb87 WIP: OrderBy implementation
Go Tests / test (pull_request) Successful in 1m4s
2026-06-05 17:19:11 +02:00
gdulai 146f07fa02 WIP: Refactor parse 2026-06-05 15:54:47 +02:00
gdulai d20184a6f0 WIP: Refactor Exec implementations to be chainable 2026-06-05 12:33:46 +02:00
2 changed files with 9 additions and 49 deletions
+9 -9
View File
@@ -86,15 +86,6 @@ func (s *Select[T]) execute(conn *simpleorm.DBConnection, tx *sql.Tx) error {
dml += " WHERE " + s.whereStmt
}
if len(s.ordering) > 0 {
orderBy, err := s.target.GetOrderByDML(s.ordering...)
if err != nil {
log.LogError("Failed to create ORDER BY part: %s", err)
} else {
dml += orderBy
}
}
var effectiveArgs []any = s.args
if s.limit != -1 {
dml += " LIMIT ?"
@@ -106,6 +97,15 @@ func (s *Select[T]) execute(conn *simpleorm.DBConnection, tx *sql.Tx) error {
effectiveArgs = append(effectiveArgs, s.offset)
}
if len(s.ordering) > 0 {
orderBy, err := s.target.GetOrderByDML(s.ordering...)
if err != nil {
log.LogError("Failed to create ORDER BY part: %s", err)
} else {
dml += orderBy
}
}
log.LogInfo("Preparing sql: %s", dml)
log.LogDebug("Preparing sql: %s, with args: %s", dml, effectiveArgs)
-40
View File
@@ -358,46 +358,6 @@ func TestSelectOrderByAsc(t *testing.T) {
}
}
func TestSelectOrderByAscWithLimitAndOffset(t *testing.T) {
// GIVEN
orm, conn := testSetup()
defer cleanUp("test.db", conn)
err := orderBySetup(conn, orm)
if err != nil {
log.LogError("TestSelectOrderByAsc setup failed: %s", err)
t.Fail()
return
}
// WHEN
selectExec, err := exec.CreateSelect[Test](orm)
if err != nil {
log.LogError("TestSelectOrderByAsc failed: %s", err)
t.Fail()
return
}
selectExec.OrderBy(schema.OrderBy{Field: "StringField", Direction: "ASC"}).Limit(3).Offset(0)
err = selectExec.Execute(conn)
if err != nil {
log.LogError("TestSelectOrderByAsc failed: %s", err)
t.Fail()
return
}
// THEN
var resultStr string
for _, obj := range selectExec.Results() {
resultStr += obj.StringField
}
if resultStr != "ABC" {
log.LogError("TestSelectOrderByAsc failed, epxected: ABC actual: %s", resultStr)
t.Fail()
}
}
func orderBySetup(conn *simpleorm.DBConnection, orm *simpleorm.ORM) error {
insertExec, err := exec.NewInsert[Test](orm,
Test{Int64Field: -1, IntField: 1, StringField: "C"},