start.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package cmd
  2. import (
  3. "datebase_test/internal/pkg/chain"
  4. "time"
  5. //chain2 "datebase_test/internal/pkg/chain"
  6. "datebase_test/internal/pkg/configs"
  7. "fmt"
  8. "github.com/spf13/viper"
  9. "gorm.io/driver/mysql"
  10. "gorm.io/gorm"
  11. pb "layer2_self/proto"
  12. )
  13. func readConfig() (*configs.Config, error) {
  14. viper.SetConfigName("cfg")
  15. viper.SetConfigType("toml")
  16. viper.AddConfigPath("./configs")
  17. cfg := configs.NewConfig()
  18. if err := viper.ReadInConfig(); err != nil {
  19. return nil, err
  20. }
  21. if err := viper.Unmarshal(&cfg); err != nil {
  22. return nil, err
  23. }
  24. return cfg, nil
  25. }
  26. func newMysqlDB(dsn string) (*gorm.DB, error) {
  27. return gorm.Open(mysql.Open(dsn), &gorm.Config{})
  28. }
  29. func Run() {
  30. cfg, err := readConfig()
  31. if err != nil {
  32. fmt.Println("Error: Read Config Error: ", err)
  33. return
  34. }
  35. dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=True&loc=Local",
  36. cfg.Mysql.Username,
  37. cfg.Mysql.Password,
  38. cfg.Mysql.Host,
  39. cfg.Mysql.Port,
  40. cfg.Mysql.Database,
  41. cfg.Mysql.Charset)
  42. db, err := newMysqlDB(dsn)
  43. if err != nil {
  44. fmt.Println("Error: NewMysqlDB :", err)
  45. return
  46. }
  47. //一个坑,不设置这个参数,gorm会把表名转义后加个s,导致找不到数据库的表
  48. //user := users.User{UID: "123456", PasswordDigest: "123456", UserName: "silly"}
  49. chain := pb.Chain{ChainId: "111", ChainName: "222", Status: pb.StatusType_ENABLED, CreatedAt: "", UpdatedAt: "555"}
  50. //tmap := time.Now().Unix()
  51. //fmt.Println(time.Now(), time.Now().Unix())
  52. //fmt.Println(time.Now().Unix())
  53. //b := time.Unix(time.Now().Unix(), 0)
  54. //t := t.Time{Time: time.Now(), Mtime: b}
  55. //result := db.Create(&t) // 通过数据的指针来创建
  56. //fmt.Printf("id:%d, err:%v, rows:%d", 1, result.Error, result.RowsAffected)
  57. //var b t.Time
  58. //sql := "select time from users where id=? "
  59. //db.Select(a, sql, 1)
  60. //db.Take(&b)
  61. //fmt.Printf("%v", b)
  62. //fmt.Println(b.Time.Unix())
  63. var c []chain.Chain
  64. db.Where("chain_id = ?", "111").Find(&c)
  65. fmt.Println(c[0].Chain_name)
  66. }