• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

yyle88 / gormcngen / 12226047375

08 Dec 2024 11:06PM UTC coverage: 54.699% (-2.5%) from 57.2%
12226047375

push

github

yangyile
伴随底层库的升级而增加字段验证特性

7 of 41 new or added lines in 3 files covered. (17.07%)

291 of 532 relevant lines covered (54.7%)

9.88 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/internal/demos/demo2/main.go
1
package main
2

3
import (
4
        "github.com/yyle88/done"
5
        "github.com/yyle88/gormcngen/internal/demos/demo2/demo2models"
6
        "github.com/yyle88/gormcnm"
7
        "github.com/yyle88/must"
8
        "github.com/yyle88/neatjson/neatjsons"
9
        "github.com/yyle88/zaplog"
10
        "gorm.io/driver/sqlite"
11
        "gorm.io/gorm"
12
        "gorm.io/gorm/logger"
13
)
14

15
func main() {
×
16
        //new db connection
×
17
        db := done.VCE(gorm.Open(sqlite.Open("file::memory:?cache=private"), &gorm.Config{
×
18
                Logger: logger.Default.LogMode(logger.Info),
×
19
        })).Nice()
×
20

×
21
        //create example data
×
22
        must.Done(db.AutoMigrate(&demo2models.User{}))
×
23
        must.Done(db.AutoMigrate(&demo2models.Order{}))
×
24
        must.Done(db.Save(&demo2models.User{ID: 0, Name: "abc"}).Error)
×
25
        must.Done(db.Save(&demo2models.User{ID: 0, Name: "uvw"}).Error)
×
26
        must.Done(db.Save(&demo2models.User{ID: 0, Name: "xyz"}).Error)
×
27

×
28
        {
×
29
                var users []*demo2models.User
×
30
                must.Done(db.Find(&users).Error)
×
31
                zaplog.SUG.Debug(neatjsons.S(users))
×
32
        }
×
33

34
        must.Done(db.Save([]*demo2models.Order{
×
35
                {ID: 0, UserID: 1, ProductName: "A", Amount: 10},
×
36
                {ID: 0, UserID: 1, ProductName: "B", Amount: 20},
×
37
                {ID: 0, UserID: 1, ProductName: "C", Amount: 30},
×
38
                {ID: 0, UserID: 2, ProductName: "U", Amount: 40},
×
39
                {ID: 0, UserID: 2, ProductName: "V", Amount: 50},
×
40
                {ID: 0, UserID: 2, ProductName: "W", Amount: 60},
×
41
                {ID: 0, UserID: 3, ProductName: "X", Amount: 70},
×
42
                {ID: 0, UserID: 3, ProductName: "Y", Amount: 80},
×
43
                {ID: 0, UserID: 3, ProductName: "Z", Amount: 90},
×
44
        }).Error)
×
45

×
46
        {
×
47
                var orders []*demo2models.Order
×
48
                must.Done(db.Find(&orders).Error)
×
49
                zaplog.SUG.Debug(neatjsons.S(orders))
×
50
        }
×
51

52
        type UserOrder struct {
×
53
                UserID      string  `gorm:"column:user_id;"`
×
54
                UserName    string  `gorm:"column:user_name;"`
×
55
                OrderID     uint    `gorm:"column:order_id;"`
×
56
                ProductName string  `gorm:"column:product_name;"`
×
57
                OrderAmount float64 `gorm:"column:order_amount;"`
×
58
        }
×
59

×
60
        {
×
61
                var results []*UserOrder
×
62
                must.Done(db.Table("users").
×
63
                        Select("users.id as user_id, users.name as user_name, orders.id as order_id, orders.product_name, orders.amount as order_amount").
×
64
                        Joins("left join orders on orders.user_id = users.id").
×
65
                        Order("users.id asc, orders.id desc").
×
66
                        Scan(&results).Error)
×
67
                zaplog.SUG.Debug(neatjsons.S(results))
×
68
        }
×
69
        {
×
70
                user := &demo2models.User{}
×
71
                userColumns := user.Columns()
×
72
                order := &demo2models.Order{}
×
73
                orderColumns := order.Columns()
×
74

×
NEW
75
                userOrder := &UserOrder{}
×
NEW
76

×
77
                var results []*UserOrder
×
78
                must.Done(db.Table(user.TableName()).
×
79
                        Select(userColumns.ColumnOperationClass.MergeStmts(
×
NEW
80
                                userColumns.ID.WithTable(user).
×
NEW
81
                                        AsAlias("user_id"), //直接使用别名
×
NEW
82
                                userColumns.Name.WithTable(user).
×
NEW
83
                                        AsName("user_name"), //指定目标列名
×
NEW
84
                                orderColumns.ProductName.WithTable(order).Name(), //这里不建议不指定别名
×
NEW
85
                                orderColumns.ID.WithTable(order).
×
NEW
86
                                        AsName(gormcnm.Cnm(userOrder.OrderID, "order_id")), //指定目标列名,这是高级的用法能够避免类型不匹配
×
NEW
87
                                orderColumns.Amount.WithTable(order).
×
NEW
88
                                        AsName(gormcnm.New[float64]("order_amount")), //指定目标列名,同时限制类型
×
89
                        )).
×
NEW
90
                        Joins(userColumns.LEFTJOIN(order.TableName()).
×
NEW
91
                                On(orderColumns.UserID.WithTable(order).
×
NEW
92
                                        Eq(userColumns.ID.WithTable(user)))).
×
NEW
93
                        Order(userColumns.ID.WithTable(user).Ob("asc").
×
NEW
94
                                Ob(orderColumns.ID.WithTable(order).Ob("desc")).Ox()).
×
95
                        Scan(&results).Error)
×
96
                zaplog.SUG.Debug(neatjsons.S(results))
×
97
        }
×
98
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc