Skip to content
This repository was archived by the owner on Jun 14, 2021. It is now read-only.

Commit

Permalink
- Adding SumDecimal feature ✨
Browse files Browse the repository at this point in the history
- Adding SumsDecimal feature ✨
  • Loading branch information
fairyhunter13 committed Jan 28, 2021
1 parent 8b08369 commit 28df2fd
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 5 deletions.
15 changes: 15 additions & 0 deletions engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"strings"
"time"

"github.com/fairyhunter13/decimal"
"github.com/fairyhunter13/xorm/caches"
"github.com/fairyhunter13/xorm/contexts"
"github.com/fairyhunter13/xorm/core"
Expand Down Expand Up @@ -1212,6 +1213,13 @@ func (engine *Engine) SumInt(bean interface{}, colName string) (int64, error) {
return session.SumInt(bean, colName)
}

// SumDecimal sums the records by some column. bean's non-empty fields are conditions.
func (engine *Engine) SumDecimal(bean interface{}, colName string) (decimal.Decimal, error) {
session := engine.NewSession()
defer session.Close()
return session.SumDecimal(bean, colName)
}

// Sums sum the records by some columns. bean's non-empty fields are conditions.
func (engine *Engine) Sums(bean interface{}, colNames ...string) ([]float64, error) {
session := engine.NewSession()
Expand All @@ -1226,6 +1234,13 @@ func (engine *Engine) SumsInt(bean interface{}, colNames ...string) ([]int64, er
return session.SumsInt(bean, colNames...)
}

// SumsDecimal sums the records by some columns. bean's non-empty fields are conditions.
func (engine *Engine) SumsDecimal(bean interface{}, colNames ...string) ([]decimal.Decimal, error) {
session := engine.NewSession()
defer session.Close()
return session.SumsDecimal(bean, colNames...)
}

// ImportFile SQL DDL file
func (engine *Engine) ImportFile(ddlPath string) ([]sql.Result, error) {
session := engine.NewSession()
Expand Down
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ require (
github.com/cespare/xxhash v1.1.0
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/denisenkom/go-mssqldb v0.0.0-20200620013148-b91950f658ec
github.com/fairyhunter13/decimal v1.2.0-imp-5
github.com/fairyhunter13/decimal v1.2.0-imp-6
github.com/fairyhunter13/newtype v1.0.10
github.com/fairyhunter13/reflecthelper/v3 v3.5.0
github.com/fairyhunter13/reflecthelper/v3 v3.5.1
github.com/go-sql-driver/mysql v1.5.0
github.com/lib/pq v1.7.0
github.com/mattn/go-sqlite3 v1.14.0
Expand Down
7 changes: 4 additions & 3 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/denisenkom/go-mssqldb v0.0.0-20200620013148-b91950f658ec h1:NfhRXXFDPxcF5Cwo06DzeIaE7uuJtAUhsDwH3LNsjos=
github.com/denisenkom/go-mssqldb v0.0.0-20200620013148-b91950f658ec/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
github.com/fairyhunter13/decimal v1.2.0-imp-5 h1:/dyrhMIGUp6qjb2vKjlD0vQGnMHVd2EsOdpTVmAZhOg=
github.com/fairyhunter13/decimal v1.2.0-imp-5/go.mod h1:pqb4RNxJI5R5ilHfmg9FTkpRMxi95Sa1K6tACdWfv9M=
github.com/fairyhunter13/decimal v1.2.0-imp-6 h1:6W9X0bC3A9Z8iaW8Wqew18dySWnQ6xbHni62bR/7CV0=
github.com/fairyhunter13/decimal v1.2.0-imp-6/go.mod h1:pqb4RNxJI5R5ilHfmg9FTkpRMxi95Sa1K6tACdWfv9M=
github.com/fairyhunter13/newtype v1.0.10 h1:Rq965Tg0UZwHbmbRnP81LMvwasOc1EKp7lHIyjrUoBs=
github.com/fairyhunter13/newtype v1.0.10/go.mod h1:ta3gbBY75TORM7VVmLaI6nb5i73SDMgAps7QDw9JKFM=
github.com/fairyhunter13/reflecthelper/v3 v3.5.0 h1:PM28lsmI70qoc2qlo8YpwBwU4i2DU3GxlS5hcvdBFX0=
github.com/fairyhunter13/reflecthelper/v3 v3.5.0/go.mod h1:lbcpGAaw2Qrb1uYLlR5L5hFHH9wUoyF2LUIASJCaEcw=
github.com/fairyhunter13/reflecthelper/v3 v3.5.1 h1:M5hyHHguUyTdQkyPcT7C1vYgdNKQHvwSnoZpdL2J0Ro=
github.com/fairyhunter13/reflecthelper/v3 v3.5.1/go.mod h1:lbcpGAaw2Qrb1uYLlR5L5hFHH9wUoyF2LUIASJCaEcw=
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
Expand Down
13 changes: 13 additions & 0 deletions session_stats.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import (
"database/sql"
"errors"
"reflect"

"github.com/fairyhunter13/decimal"
)

// Count counts the records. bean's non-empty fields
Expand Down Expand Up @@ -68,6 +70,11 @@ func (session *Session) SumInt(bean interface{}, columnName string) (res int64,
return res, session.sum(&res, bean, columnName)
}

// SumDecimal call sum some column. bean's non-empty fields are conditions.
func (session *Session) SumDecimal(bean interface{}, columnName string) (res decimal.Decimal, err error) {
return res, session.sum(&res, bean, columnName)
}

// Sums call sum some columns. bean's non-empty fields are conditions.
func (session *Session) Sums(bean interface{}, columnNames ...string) ([]float64, error) {
var res = make([]float64, len(columnNames), len(columnNames))
Expand All @@ -79,3 +86,9 @@ func (session *Session) SumsInt(bean interface{}, columnNames ...string) ([]int6
var res = make([]int64, len(columnNames), len(columnNames))
return res, session.sum(&res, bean, columnNames...)
}

// SumsDecimal call sum some columns. bean's non-empty fields are conditions.
func (session *Session) SumsDecimal(bean interface{}, columnNames ...string) ([]decimal.Decimal, error) {
var res = make([]decimal.Decimal, len(columnNames), len(columnNames))
return res, session.sum(&res, bean, columnNames...)
}

0 comments on commit 28df2fd

Please sign in to comment.