Files
tinyurl/pkg/db/db.go
2022-04-28 20:40:16 +08:00

47 lines
925 B
Go

package db
import (
"os"
"time"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
var (
DB *gorm.DB
)
type TinyUrl struct {
gorm.Model
LongUrl string `gorm:"size:7713"`
ShortUrl string `gorm:"size:20"`
ExpireTime time.Time
Counter float64
AddIP string
}
type URLDetail struct {
URL string `json:"url"`
CreatedAt string `json:"created_at"`
ExpirationInMinutes time.Duration `json:"expiration_in_minutes"`
}
func InitDb() {
// 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情
var dsn string
if len(os.Getenv("DSN")) > 1 {
dsn = os.Getenv("DSN")
} else {
dsn = "tinyurl:tinyurl@tcp(42.192.36.14:3306)/tinyurl?charset=utf8mb4&parseTime=True&loc=Local"
}
var err error
DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic(err)
}
if err := DB.AutoMigrate(&TinyUrl{}); err != nil {
panic(err)
}
}