gorm_mssql.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. * @Author: 逆光飞翔 191180776@qq.com
  3. * @Date: 2022-12-08 17:25:49
  4. * @LastEditors: 逆光飞翔 191180776@qq.com
  5. * @LastEditTime: 2022-12-08 18:00:00
  6. * @FilePath: \server\initialize\gorm_mssql.go
  7. * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  8. */
  9. package initialize
  10. import (
  11. "gorm.io/driver/sqlserver"
  12. "gorm.io/gorm"
  13. "server/config"
  14. "server/global"
  15. "server/initialize/internal"
  16. )
  17. // GormMssql 初始化Mssql数据库
  18. // Author [LouisZhang](191180776@qq.com)
  19. func GormMssql() *gorm.DB {
  20. m := global.GVA_CONFIG.Mssql
  21. if m.Dbname == "" {
  22. return nil
  23. }
  24. mssqlConfig := sqlserver.Config{
  25. DSN: m.Dsn(), // DSN data source name
  26. DefaultStringSize: 191, // string 类型字段的默认长度
  27. }
  28. if db, err := gorm.Open(sqlserver.New(mssqlConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil {
  29. return nil
  30. } else {
  31. db.InstanceSet("gorm:table_options", "ENGINE="+m.Engine)
  32. sqlDB, _ := db.DB()
  33. sqlDB.SetMaxIdleConns(m.MaxIdleConns)
  34. sqlDB.SetMaxOpenConns(m.MaxOpenConns)
  35. return db
  36. }
  37. }
  38. // GormMssqlByConfig 初始化Mysql数据库用过传入配置
  39. func GormMssqlByConfig(m config.Mssql) *gorm.DB {
  40. if m.Dbname == "" {
  41. return nil
  42. }
  43. mssqlConfig := sqlserver.Config{
  44. DSN: m.Dsn(), // DSN data source name
  45. DefaultStringSize: 191, // string 类型字段的默认长度
  46. }
  47. if db, err := gorm.Open(sqlserver.New(mssqlConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil {
  48. panic(err)
  49. } else {
  50. db.InstanceSet("gorm:table_options", "ENGINE=InnoDB")
  51. sqlDB, _ := db.DB()
  52. sqlDB.SetMaxIdleConns(m.MaxIdleConns)
  53. sqlDB.SetMaxOpenConns(m.MaxOpenConns)
  54. return db
  55. }
  56. }