file change db

master
wenfei 5 months ago
parent 71dfd15ed2
commit 5faadf20a8

@ -12,7 +12,7 @@ import (
)
func init() {
initDatabase()
//initDatabase()
//initHttps()
}

@ -22,6 +22,8 @@ require (
github.com/gorilla/websocket v1.4.2 // indirect
github.com/hashicorp/golang-lru v0.5.4 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/konsorten/go-windows-terminal-sequences v1.0.3 // indirect
github.com/lib/pq v1.7.0 // indirect
github.com/magiconair/properties v1.8.1 // indirect
@ -50,8 +52,10 @@ require (
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 // indirect
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 // indirect
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1 // indirect
golang.org/x/text v0.3.2 // indirect
golang.org/x/text v0.26.0 // indirect
google.golang.org/protobuf v1.23.0 // indirect
gopkg.in/ini.v1 v1.51.0 // indirect
gopkg.in/yaml.v2 v2.3.0 // indirect
gorm.io/driver/mysql v1.6.0 // indirect
gorm.io/gorm v1.30.0 // indirect
)

@ -158,6 +158,10 @@ github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2p
github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
@ -384,6 +388,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M=
golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@ -459,6 +465,10 @@ gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gorm.io/driver/mysql v1.6.0 h1:eNbLmNTpPpTOVZi8MMxCi2aaIm0ZpInbORNXDwyLGvg=
gorm.io/driver/mysql v1.6.0/go.mod h1:D/oCC2GWK3M/dqoLxnOlaNKmXz8WNTfcS9y5ovaSqKo=
gorm.io/gorm v1.30.0 h1:qbT5aPv1UH8gI99OsRlvDToLxW5zR7FzS9acZDOZcgs=
gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

@ -5,4 +5,9 @@ chmod 777 $HOME/goftpdir
go get github.com/astaxie/beego || echo github.com/astaxie/beego
go get github.com/satori/go.uuid || echo github.com/satori/go.uuid
go get github.com/beego/bee || echo github.com/beego/bee
go get github.com/go-sql-driver/mysql || echo github.com/go-sql-driver/mysql
go get github.com/go-sql-driver/mysql || echo github.com/go-sql-driver/mysql
#gorm
go get -u gorm.io/gorm
#gorm mysql driver
go get -u gorm.io/driver/mysql

@ -0,0 +1,60 @@
package gormdb
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"log"
"time"
)
func init() {
fmt.Println("gorm db init()")
initDatabase()
}
var DB *gorm.DB
func initDatabase() {
//dsn := "root:Skyinno251,@tcp(192.168.2.18:3306)/gorm?charset=utf8mb4&parseTime=True&loc=Local"
//dsn := "root:Skyinno251,@tcp(47.242.184.139:3306)/appserver?charset=utf8mb4&parseTime=True&loc=Local"
dsn := "root:Skyinno251,@tcp(localhost:3306)/goftp?charset=utf8mb4&parseTime=True&loc=Local"
//dsn := "root:Skyinno251,@tcp(192.168.3.29:3306)/appserver?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.New(mysql.Config{
DSN: dsn, // DSN data source name
DefaultStringSize: 255, // string 类型字段的默认长度
DisableDatetimePrecision: true, // 禁用 datetime 精度MySQL 5.6 之前的数据库不支持
DontSupportRenameIndex: true, // 重命名索引时采用删除并新建的方式MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引
DontSupportRenameColumn: true, // 用 `change` 重命名列MySQL 8 之前的数据库和 MariaDB 不支持重命名列
SkipInitializeWithVersion: false, // 根据当前 MySQL 版本自动配置
}), &gorm.Config{})
//db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
fmt.Println("failed to connect database")
}
// 获取通用数据库对象 sql.DB ,然后使用其提供的功能
sqlDB, errDB := db.DB()
if errDB != nil {
return
}
// SetMaxIdleConns 用于设置连接池中空闲连接的最大数量。
sqlDB.SetMaxIdleConns(5)
// SetMaxOpenConns 设置打开数据库连接的最大数量。
sqlDB.SetMaxOpenConns(20)
// SetConnMaxLifetime 设置了连接可复用的最大时间。
sqlDB.SetConnMaxLifetime(time.Minute * 5) // 连接最大生命周期
err = sqlDB.Ping() // 检查连接是否成功建立。如果失败,则返回错误。
if err != nil {
// 处理连接失败的情况。例如,打印错误信息并退出程序。
log.Println("数据库连接失败")
fmt.Println("Connection failed:", err)
return
}
DB = db
}

@ -1,44 +1,65 @@
package models
import (
"fmt"
"goftp/gormdb"
"time"
"github.com/astaxie/beego/orm"
)
type File struct {
Id string `gorm:"primaryKey;size:20"`
Downloadcount int64 `gorm:"size:20" json:"downloadcount"`
Name string `gorm:"size:50" json:"fileName"`
LastDownloadtime time.Time `json:"last_downloadtime"`
}
func init() {
orm.RegisterModelWithPrefix("cm_", new(File))
fmt.Println("File init()")
gormdb.DB.AutoMigrate(&File{})
}
type File struct {
Id string `orm:"pk" json:"id"`
Downloadcount int64 `json:"downloadcount"`
Name string `json:"fileName"`
LastDownloadtime time.Time `json:"last_downloadtime"`
// TableName 会将 User 的表名重写为 `user`
func (File) TableName() string {
return "file"
}
func FindFileById(id string) (*File, error) {
fileModel := new(File)
err := orm.NewOrm().QueryTable(new(File)).Filter("id", id).One(fileModel)
if err != nil {
return nil, err
}
return fileModel, nil
var file File
gormdb.DB.First(&file, id)
return &file, nil
}
func FindFileByFileName(name string) (*File, error) {
fileModel := new(File)
err := orm.NewOrm().QueryTable(new(File)).Filter("name", name).One(fileModel)
if err != nil {
return nil, err
}
return fileModel, nil
func FindFileByFileName(name string) *File {
var file File
gormdb.DB.Where("name = ?", name).First(&file)
return &file
//fileModel := new(File)
//err := orm.NewOrm().QueryTable(new(File)).Filter("name", name).One(fileModel)
//if err != nil {
// return nil, err
//}
//return fileModel, nil
}
func UpdateFile(file *File) (int64, error) {
return orm.NewOrm().Update(file)
func UpdateFile(file *File) error {
result := gormdb.DB.Save(&file)
if result.Error != nil {
fmt.Println("Failed to UpdateFile:", result.Error)
return result.Error
} else {
fmt.Println("UpdateFile successfully!")
}
return nil
}
func InsertFile(file *File) (int64, error) {
return orm.NewOrm().Insert(file)
func InsertFile(file *File) error {
result := gormdb.DB.Save(&file)
if result.Error != nil {
fmt.Println("Failed to create InsertFile:", result.Error)
return result.Error
} else {
fmt.Println("InsertFile created successfully!")
}
return nil
}

@ -1,24 +1,44 @@
package models
import (
"github.com/astaxie/beego/orm"
"fmt"
"goftp/gormdb"
)
type Ip struct {
Id string `gorm:"primaryKey;size:20"`
Ip string `gorm:"size:30"`
Updatetime string `gorm:"size:30"`
}
func init() {
orm.RegisterModelWithPrefix("cm_", new(Ip))
fmt.Println("Ip init()")
gormdb.DB.AutoMigrate(&Ip{})
}
type Ip struct {
Id string `orm:"pk" json:"id"`
Ip string `json:"ip"`
Updatetime string `json:"updatetime"`
// TableName 会将 User 的表名重写为 `user`
func (Ip) TableName() string {
return "ip"
}
func GetIpById(id string) string {
ipModel := new(Ip)
err := orm.NewOrm().QueryTable(new(Ip)).Filter("id", id).One(ipModel)
if err != nil {
return ""
func SaveIp(ip *Ip) {
result := gormdb.DB.Create(&ip)
if result.Error != nil {
fmt.Println("Failed to create Ip:", result.Error)
} else {
fmt.Println("Ip created successfully!")
}
return ipModel.Ip
}
func GetIpById(id string) string {
var ip Ip
gormdb.DB.First(&ip, id)
return ip.Ip
//ipModel := new(Ip)
//err := orm.NewOrm().QueryTable(new(Ip)).Filter("id", id).One(ipModel)
//if err != nil {
// return ""
//}
//return ipModel.Ip
}

@ -7,13 +7,13 @@ import (
)
func UpdateDownloadCount(fileName string) bool {
file, err := models.FindFileByFileName(fileName)
if err == nil {
file := models.FindFileByFileName(fileName)
if file != nil {
//文件存在
currentCount := file.Downloadcount
file.Downloadcount = currentCount + 1
file.LastDownloadtime = time.Now()
_, errUpdate := models.UpdateFile(file)
errUpdate := models.UpdateFile(file)
if errUpdate == nil {
return true
}
@ -24,7 +24,7 @@ func UpdateDownloadCount(fileName string) bool {
insertFile.Name = fileName
insertFile.Downloadcount = 1
insertFile.LastDownloadtime = time.Now()
_, errInsert := models.InsertFile(insertFile)
errInsert := models.InsertFile(insertFile)
if errInsert == nil {
return true
}

Loading…
Cancel
Save