calls to log.Fatal only in main() or init() functions
36 }
37 err = DB.SetupJoinTable(&Product{}, "Users", &ProductUser{})
38 if err != nil {
39 log.Fatal(err) 40 }
41 return DB
42}
calls to log.Fatal only in main() or init() functions
32
33 err = DB.SetupJoinTable(&User{}, "FollowedProducts", &ProductUser{})
34 if err != nil {
35 log.Fatal(err) 36 }
37 err = DB.SetupJoinTable(&Product{}, "Users", &ProductUser{})
38 if err != nil {
calls to log.Fatal only in main() or init() functions
27 }
28 err = DB.AutoMigrate(&User{}, &Product{}, &Post{}, &Comment{}, &ProductUser{}, &Message{})
29 if err != nil {
30 log.Fatal(err) 31 }
32
33 err = DB.SetupJoinTable(&User{}, "FollowedProducts", &ProductUser{})
calls to log.Fatal only in main() or init() functions
23 DB, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
24
25 if err != nil {
26 log.Fatal(err) 27 }
28 err = DB.AutoMigrate(&User{}, &Product{}, &Post{}, &Comment{}, &ProductUser{}, &Message{})
29 if err != nil {
calls to log.Fatal only in main() or init() functions
54 var Pu ProductUsersInfo
55 err := rows.Scan(&Pu.ID, &Pu.Name, &Pu.Role, &Pu.Pfp)
56 if err != nil {
57 log.Fatal(err) 58 }
59 Users = append(Users, Pu)
60 }
calls to log.Fatal only in main() or init() functions
47 defer func(rows *sql.Rows) {
48 err := rows.Close()
49 if err != nil {
50 log.Fatal(err) 51 }
52 }(rows)
53 for rows.Next() {
calls to log.Fatal only in main() or init() functions
42 var Users []ProductUsersInfo
43 rows, err := db.DB.Table("users, product_users").Preload("FollowedProducts").Select("users.id, users.name, product_users.role, users.pfp").Where("product_users.product_id = ? and product_users.user_id = users.id", product.ID).Rows()
44 if err != nil {
45 log.Fatal(err) 46 }
47 defer func(rows *sql.Rows) {
48 err := rows.Close()
Description
Packages exposing functions that can stop program execution by exiting are hard to reuse. Program exits in functions other than main() or init() are not encouraged.
Bad practice
func nonMainFunc() {
safelyExit := true // somehow arrive at this value
if safelyExit {
os.Exit(0)
}
}
func main() {
nonMainFunc()
}
Recommended
func nonMainFunc() bool {
safelyExit := true // somehow arrive at this value
}
func main() {
safelyExit := nonMainFunc()
if safelyExit {
os.Exit(0)
}
}