完成用户名更新,粉丝数获取的基础功能
This commit is contained in:
77
pkg/dao/dao.go
Normal file
77
pkg/dao/dao.go
Normal file
@@ -0,0 +1,77 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/eigeen/furryboard/spider-scheduler/pkg/conf"
|
||||
"github.com/eigeen/furryboard/spider-scheduler/pkg/dao/model"
|
||||
"github.com/eigeen/furryboard/spider-scheduler/pkg/log"
|
||||
"github.com/sirupsen/logrus"
|
||||
"gorm.io/driver/postgres"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/logger"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
once sync.Once
|
||||
db *gorm.DB
|
||||
)
|
||||
|
||||
func DB() *gorm.DB {
|
||||
once.Do(initDB)
|
||||
return db
|
||||
|
||||
}
|
||||
|
||||
type LogrusWriter struct {
|
||||
log *logrus.Logger
|
||||
}
|
||||
|
||||
func (w *LogrusWriter) Printf(format string, v ...interface{}) {
|
||||
logStr := fmt.Sprintf(format, v...)
|
||||
w.log.WithField("method", "GORM").Warn(logStr)
|
||||
}
|
||||
|
||||
func NewLogger() *LogrusWriter {
|
||||
return &LogrusWriter{log: log.Logger()}
|
||||
}
|
||||
|
||||
func initDB() {
|
||||
var err error
|
||||
dsn := fmt.Sprintf(
|
||||
"host=%s user=%s password=%s dbname=%s port=%d sslmode=disable TimeZone=Asia/Shanghai",
|
||||
conf.Conf.Database.Host,
|
||||
conf.Conf.Database.User,
|
||||
conf.Conf.Database.Password,
|
||||
conf.Conf.Database.DB,
|
||||
conf.Conf.Database.Port,
|
||||
)
|
||||
|
||||
// >= 1s SQL慢查询
|
||||
slowLogger := logger.New(NewLogger(), logger.Config{
|
||||
SlowThreshold: time.Second * 1,
|
||||
LogLevel: logger.Warn,
|
||||
})
|
||||
db, err = gorm.Open(postgres.Open(dsn), &gorm.Config{
|
||||
Logger: slowLogger,
|
||||
})
|
||||
if err != nil {
|
||||
log.Logger().Fatal("创建数据库连接失败:", err)
|
||||
}
|
||||
|
||||
autoMigrate()
|
||||
}
|
||||
|
||||
func autoMigrate() {
|
||||
var err error
|
||||
err = db.AutoMigrate(&model.Changelog{})
|
||||
err = db.AutoMigrate(&model.Fans{})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
log.Logger().Fatal("关联数据表失败:", err)
|
||||
}
|
||||
}
|
||||
10
pkg/dao/model/changelog.go
Normal file
10
pkg/dao/model/changelog.go
Normal file
@@ -0,0 +1,10 @@
|
||||
package model
|
||||
|
||||
import "gorm.io/gorm"
|
||||
|
||||
type Changelog struct {
|
||||
gorm.Model
|
||||
Operation string `gorm:"index;not null;default:''"`
|
||||
Target string `gorm:"index;not null;default:''"`
|
||||
Result string `gorm:"not null;default:''"`
|
||||
}
|
||||
13
pkg/dao/model/fans.go
Normal file
13
pkg/dao/model/fans.go
Normal file
@@ -0,0 +1,13 @@
|
||||
package model
|
||||
|
||||
import "gorm.io/gorm"
|
||||
|
||||
type Fans struct {
|
||||
gorm.Model
|
||||
UID uint `gorm:"index;not null"`
|
||||
Fans uint `gorm:"index;not null;default:0"`
|
||||
}
|
||||
|
||||
func (Fans) TableName() string {
|
||||
return "fans"
|
||||
}
|
||||
12
pkg/dao/model/furry.go
Normal file
12
pkg/dao/model/furry.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package model
|
||||
|
||||
type Furry struct {
|
||||
ID uint `gorm:"primaryKey"`
|
||||
UID uint `gorm:"uniqueIndex;not null"`
|
||||
Name string `gorm:"index;not null;default:''"`
|
||||
Status int `gorm:"index;not null;default:0"`
|
||||
}
|
||||
|
||||
func (Furry) TableName() string {
|
||||
return "furries"
|
||||
}
|
||||
Reference in New Issue
Block a user