package db import ( "log" "os" "sync" "time" "gorm.io/driver/sqlite" "gorm.io/gorm" "gorm.io/gorm/logger" ) var ( udb *gorm.DB conMu sync.Mutex ) func Connect() *gorm.DB { conMu.Lock() defer conMu.Unlock() if udb != nil { return udb } logFile, err := os.OpenFile("db.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { panic(err) } newLogger := logger.New( log.New(logFile, "\r\n", log.LstdFlags), logger.Config{ SlowThreshold: time.Second, LogLevel: logger.Error, IgnoreRecordNotFoundError: true, ParameterizedQueries: true, Colorful: false, }, ) gormDB, err := gorm.Open(sqlite.Open("tipitypy.db"), &gorm.Config{ Logger: newLogger, }) if err != nil { log.Panic(err) } newUDB := gormDB if err := gormDB.AutoMigrate(&Word{}); err != nil { log.Panic(err) } if err := gormDB.AutoMigrate(&Stat{}); err != nil { log.Panic(err) } return newUDB }