init.go 781 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package db
  2. import (
  3. "fmt"
  4. _ "github.com/go-sql-driver/mysql"
  5. _ "modernc.org/sqlite"
  6. "pmail/config"
  7. "pmail/utils/context"
  8. "pmail/utils/errors"
  9. "xorm.io/xorm"
  10. )
  11. var Instance *xorm.Engine
  12. func Init() error {
  13. dsn := config.Instance.DbDSN
  14. var err error
  15. switch config.Instance.DbType {
  16. case "mysql":
  17. Instance, err = xorm.NewEngine("mysql", dsn)
  18. case "sqlite":
  19. Instance, err = xorm.NewEngine("sqlite", dsn)
  20. default:
  21. return errors.New("Database Type Error!")
  22. }
  23. if err != nil {
  24. return errors.Wrap(err)
  25. }
  26. Instance.SetMaxOpenConns(100)
  27. Instance.SetMaxIdleConns(10)
  28. return nil
  29. }
  30. func WithContext(ctx *context.Context, sql string) string {
  31. if ctx != nil {
  32. logId := ctx.GetValue(context.LogID)
  33. return fmt.Sprintf("/* %s */ %s", logId, sql)
  34. }
  35. return sql
  36. }