Skip to content

Commit

Permalink
Generation code path adjustment.
Browse files Browse the repository at this point in the history
  • Loading branch information
8treenet committed Nov 6, 2021
1 parent 0fa7e65 commit 04edf88
Show file tree
Hide file tree
Showing 10 changed files with 119 additions and 15 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@
- 一级缓存 & 二级缓存 & 防击穿

## 安装
###### 方式一
###### go.1.16+
```sh
$ go get github.com/8treenet/freedom/freedom
$ go install github.com/8treenet/freedom/freedom@latest
$ freedom version
```
###### 方式二
###### go.1.13+
```sh
$ git clone https://github.com/8treenet/freedom.git $GOPATH/src/github.com/8treenet/freedom
$ cd $GOPATH/src/github.com/8treenet/freedom/freedom
Expand Down
12 changes: 10 additions & 2 deletions README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,17 @@
- Message Events & Event Retries & Domain Events
- Primary Cache & Secondary Cache & Prevent Breakdown

## Install
###### go.1.16+
```sh
$ go get github.com/8treenet/freedom/freedom
$ go install github.com/8treenet/freedom/freedom@latest
$ freedom version
```
###### go.1.13+
```sh
$ git clone https://github.com/8treenet/freedom.git $GOPATH/src/github.com/8treenet/freedom
$ cd $GOPATH/src/github.com/8treenet/freedom/freedom
$ go install
$ freedom version
```

## Create Project
Expand Down
33 changes: 31 additions & 2 deletions example/fshop/adapter/repository/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@ package repository
import (
"errors"
"fmt"
"strings"
"time"

"github.com/8treenet/freedom"
"github.com/8treenet/freedom/example/fshop/domain/po"
"gorm.io/gorm"
"strings"
"time"
"gorm.io/gorm/clause"
)

// GORMRepository .
Expand Down Expand Up @@ -117,6 +119,33 @@ func (p *Pager) Execute(db *gorm.DB, object interface{}) (e error) {
return
}

// Limiter .
type Limiter struct {
size int
column string
desc bool
}

// NewDescLimiter .
func NewDescLimiter(column string, size int) *Limiter {
return &Limiter{column: column, size: size, desc: true}
}

// NewAscLimiter .
func NewAscLimiter(column string, size int) *Limiter {
return &Limiter{column: column, size: size, desc: false}
}

// Execute .
func (limiter *Limiter) Execute(db *gorm.DB, object interface{}) (e error) {
db = db.Order(clause.OrderByColumn{Column: clause.Column{Name: limiter.column}, Desc: limiter.desc}).Limit(limiter.size)
resultDB := db.Find(object)
if resultDB.Error != nil {
return resultDB.Error
}
return
}

func ormErrorLog(repo GORMRepository, model, method string, e error, expression ...interface{}) {
if e == nil || e == gorm.ErrRecordNotFound {
return
Expand Down
2 changes: 1 addition & 1 deletion example/fshop/server/conf/db.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
addr = "root:123123@tcp(127.0.0.1:3306)/fshop?charset=utf8&parseTime=True&loc=Local"
addr = "root:root7944@tcp(127.0.0.1:3306)/fshop?charset=utf8&parseTime=True&loc=Local"
max_open_conns = 16
max_idle_conns = 8
conn_max_life_time = 300
40 changes: 38 additions & 2 deletions example/infra-example/adapter/repository/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/8treenet/freedom"
"github.com/8treenet/freedom/example/infra-example/domain/po"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)

// GORMRepository .
Expand Down Expand Up @@ -118,6 +119,33 @@ func (p *Pager) Execute(db *gorm.DB, object interface{}) (e error) {
return
}

// Limiter .
type Limiter struct {
size int
column string
desc bool
}

// NewDescLimiter .
func NewDescLimiter(column string, size int) *Limiter {
return &Limiter{column: column, size: size, desc: true}
}

// NewAscLimiter .
func NewAscLimiter(column string, size int) *Limiter {
return &Limiter{column: column, size: size, desc: false}
}

// Execute .
func (limiter *Limiter) Execute(db *gorm.DB, object interface{}) (e error) {
db = db.Order(clause.OrderByColumn{Column: clause.Column{Name: limiter.column}, Desc: limiter.desc}).Limit(limiter.size)
resultDB := db.Find(object)
if resultDB.Error != nil {
return resultDB.Error
}
return
}

func ormErrorLog(repo GORMRepository, model, method string, e error, expression ...interface{}) {
if e == nil || e == gorm.ErrRecordNotFound {
return
Expand Down Expand Up @@ -265,14 +293,18 @@ func saveOrder(repo GORMRepository, object saveObject) (rowsAffected int64, e er
if len(object.Location()) == 0 {
return 0, errors.New("location cannot be empty")
}
updateValues := object.GetChanges()
if len(updateValues) == 0 {
return 0, nil
}

now := time.Now()
defer func() {
freedom.Prometheus().OrmWithLabelValues("Order", "saveOrder", e, now)
ormErrorLog(repo, "Order", "saveOrder", e, object)
}()

db := repo.db().Table(object.TableName()).Where(object.Location()).Updates(object.GetChanges())
db := repo.db().Table(object.TableName()).Where(object.Location()).Updates(updateValues)
e = db.Error
rowsAffected = db.RowsAffected
return
Expand Down Expand Up @@ -418,14 +450,18 @@ func saveGoods(repo GORMRepository, object saveObject) (rowsAffected int64, e er
if len(object.Location()) == 0 {
return 0, errors.New("location cannot be empty")
}
updateValues := object.GetChanges()
if len(updateValues) == 0 {
return 0, nil
}

now := time.Now()
defer func() {
freedom.Prometheus().OrmWithLabelValues("Goods", "saveGoods", e, now)
ormErrorLog(repo, "Goods", "saveGoods", e, object)
}()

db := repo.db().Table(object.TableName()).Where(object.Location()).Updates(object.GetChanges())
db := repo.db().Table(object.TableName()).Where(object.Location()).Updates(updateValues)
e = db.Error
rowsAffected = db.RowsAffected
return
Expand Down
5 changes: 5 additions & 0 deletions example/infra-example/domain/entity/goods.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,8 @@ type Goods struct {
func (g *Goods) Identity() string {
return strconv.Itoa(g.ID)
}

// Location .
func (g *Goods) Location() map[string]interface{} {
return map[string]interface{}{"id": g.ID, "version": g.Version}
}
5 changes: 2 additions & 3 deletions example/infra-example/domain/po/goods.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@
package po

import (
"time"

"gorm.io/gorm"
"time"
)

// Goods .
Expand All @@ -26,7 +25,7 @@ func (obj *Goods) TableName() string {

// Location .
func (obj *Goods) Location() map[string]interface{} {
return map[string]interface{}{"id": obj.ID, "version": obj.Version}
return map[string]interface{}{"id": obj.ID}
}

// GetChanges .
Expand Down
2 changes: 1 addition & 1 deletion example/infra-example/server/conf/db.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
addr = "root:123123@tcp(127.0.0.1:3306)/freedom?charset=utf8&parseTime=True&loc=Local"
addr = "root:root7944@tcp(127.0.0.1:3306)/freedom?charset=utf8&parseTime=True&loc=Local"
max_open_conns = 16
max_idle_conns = 8
conn_max_life_time = 300
Expand Down
27 changes: 27 additions & 0 deletions freedom/template/crud/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ func FunTemplatePackage() string {
"errors"
"github.com/8treenet/freedom"
"gorm.io/gorm"
"gorm.io/gorm/clause"
"time"
"{{.PackagePath}}"
"fmt"
Expand Down Expand Up @@ -170,7 +171,33 @@ func FunTemplatePackage() string {
return
}
// Limiter .
type Limiter struct {
size int
column string
desc bool
}
// NewDescLimiter .
func NewDescLimiter(column string, size int) *Limiter {
return &Limiter{column: column, size: size, desc: true}
}
// NewAscLimiter .
func NewAscLimiter(column string, size int) *Limiter {
return &Limiter{column: column, size: size, desc: false}
}
// Execute .
func (limiter *Limiter) Execute(db *gorm.DB, object interface{}) (e error) {
db = db.Order(clause.OrderByColumn{Column: clause.Column{Name: limiter.column}, Desc: limiter.desc}).Limit(limiter.size)
resultDB := db.Find(object)
if resultDB.Error != nil {
return resultDB.Error
}
return
}
func ormErrorLog(repo GORMRepository, model, method string, e error, expression ...interface{}) {
if e == nil || e == gorm.ErrRecordNotFound {
return
Expand Down
2 changes: 1 addition & 1 deletion middleware/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ func (l *Logger) Debugf(format string, v ...interface{}) {
freedom.Logger().Debugf(format, v...)
}

// SetCallerWithLevel
// SetCallerLevel .
func (l *Logger) SetCallerLevel(level golog.Level) {
index := 1
switch level {
Expand Down

0 comments on commit 04edf88

Please sign in to comment.