Commit a0d5597b authored by 4c00's avatar 4c00
Browse files

modified: foo.crud.go

	modified:   foo.go
	modified:   init.go
parent 2561ee4a
package model package model
import (
"errors"
)
// TODO: add crud interface here // TODO: add crud interface here
func RegisterUser(name, email, pwd string) error {
newUser := User{}
newUser.Name = name
newUser.Pwd = pwd
newUser.Email = email
newUser.Id = 0
newUser.Number = 0
err := DB.Create(&newUser)
if err != nil {
var errReturn = errors.New("fail to register the user")
return errReturn
}
return nil
}
func CheckAuth(email, pwd string) bool {
targetUser := User{Email: email}
err := DB.Find(&targetUser)
if err != nil {
return false
}
if targetUser.Pwd != pwd {
return false
}
return true
}
func GetUser(name string) (interface{}, error) {
var targetUser []User
err := DB.Where(map[string]interface{}{"name": name}).Find(&targetUser)
if err != nil {
var errReturn = errors.New("fail to find the user")
return nil, errReturn
}
return targetUser, nil
}
func GetRecord(name string) (interface{}, error) {
master := User{Name: name}
err := DB.Find(&master)
if err != nil {
var errReturn = errors.New("fail to find the user")
return 0, errReturn
}
targetRecord := Record{Name: name, Id: 0}
err1 := DB.Find(&targetRecord)
if err1 != nil {
var err1Return = errors.New("fail to find the record")
return nil, err1Return
}
result := make([]Record, 0)
result = append(result, targetRecord)
for i := 1; i < master.Number; i++ {
targetLink := Record{Name: name, Id: i}
err2 := DB.Find(&targetLink)
if err2 != nil {
continue
}
result = append(result, targetLink)
}
return result, nil
}
func GetUrl(name string) (interface{}, error) {
master := User{Name: name}
err := DB.Find(&master)
if err != nil {
var errReturn = errors.New("fail to find the user")
return 0, errReturn
}
targetUrl := ShortLink{Name: name, Id: 0}
err1 := DB.Find(&targetUrl)
if err1 != nil {
var err1Return = errors.New("fail to find the record")
return nil, err1Return
}
result := make([]string, 0)
result = append(result, targetUrl.Short)
for i := 1; i < master.Id; i++ {
targetLink := ShortLink{Name: name, Id: i}
err2 := DB.Find(&targetLink)
if err2 != nil {
continue
}
result = append(result, targetLink.Short)
}
return result, nil
}
func CreateLink(name string, link ShortLink) (int, error) {
newLink := link
newLink.Name = name
newLink.Status = true
master := User{Name: name}
err := DB.Find(&master)
if err != nil {
var errReturn = errors.New("fail to find the user")
return 0, errReturn
}
newLink.Id = master.Id
master.Id = master.Id + 1
err1 := DB.Updates(&master)
if err1 != nil {
var err1Return = errors.New("fail to update the imformation of the user")
return 0, err1Return
}
err2 := DB.Create(&newLink)
if err2 != nil {
var err2Return = errors.New("fail to create the link")
return 0, err2Return
}
return newLink.Id, nil
}
func QueryLink(name string, id int) (ShortLink, error) {
targetLink := ShortLink{Name: name, Id: id}
err := DB.Find(&targetLink)
if err != nil {
var errReturn = errors.New("fail to find the short link")
return targetLink, errReturn
}
return targetLink, nil
}
func UpdateLink(name string, data UpdateData) error {
targetLink := ShortLink{Name: name}
err := DB.Find(&targetLink)
if err != nil {
var errReturn = errors.New("fail to find the short link")
return errReturn
}
targetLink.Origin = data.Origin
targetLink.Comment = data.Comment
targetLink.StartTime = data.StartTime
targetLink.ExpireTime = data.ExpireTime
err1 := DB.Updates(&targetLink)
if err1 != nil {
var err1Return = errors.New("fail to update the short link")
return err1Return
}
return nil
}
func DeleteLink(name string, id int) error {
targetLink := ShortLink{Name: name, Id: id}
err := DB.Find(&targetLink)
if err != nil {
var errReturn = errors.New("fail to find the short link")
return errReturn
}
master := User{Name: name}
err1 := DB.Find(&master)
if err1 != nil {
var err1Return = errors.New("fail to find the user")
return err1Return
}
err2 := DB.Delete(&targetLink)
if err2 != nil {
var err2Return = errors.New("fail to delete the short link")
return err2Return
}
master.Id = master.Id - 1
err3 := DB.Updates(&master)
if err3 != nil {
var err3Return = errors.New("fail to update the imformation of the user")
return err3Return
}
return nil
}
func PauseLink(name string, id int) error {
targetLink := ShortLink{Name: name, Id: id}
err := DB.Find(&targetLink)
if err != nil {
var errReturn = errors.New("fail to find the short link")
return errReturn
}
targetLink.Status = false
err1 := DB.Updates(&targetLink)
if err1 != nil {
var err1Return = errors.New("fail to pause the short link")
return err1Return
}
return nil
}
func ExistShort(str string) bool {
targetLink := ShortLink{Short: str}
err := DB.Find(&targetLink)
if err != nil {
return false
}
return true
}
package model package model
// TODO: add new model // TODO: add new model
type User struct {
Name string `json:"name" form:"name" query:"name"`
Pwd string `json:"pwd" form:"pwd" query:"pwd"`
Email string `json:"email" form:"email" query:"email"`
Time int64 `json:"time" form:"time" query:"time"`
Ip string `json:"ip" form:"ip" query:"ip"`
Status bool `json:"status" form:"status" query:"status"`
Id int
Number int
}
type Record struct {
Name string `json:"name" form:"name" query:"name"`
Time int64 `json:"time" form:"time" query:"time"`
Ip string `json:"ip" form:"ip" query:"ip"`
Id int
}
type ShortLink struct {
Id int `json:"id" form:"id" query:"id"`
Name string `json:"name" form:"name" query:"name"`
Origin string `json:"origin" form:"origin" query:"origin"`
Short string `json:"short" form:"short" query:"short"`
Comment string `json:"comment" form:"comment" query:"comment"`
StartTime int64 `json:"starttime" form:"starttime" query:"starttime"`
ExpireTime int64 `json:"expiretime" form:"expiretime" query:"expiretime"`
Status bool `json:"status" form:"status" query:"status"`
}
type UpdateData struct {
Origin string `json:"origin" form:"origin" query:"origin"`
Comment string `json:"comment" form:"comment" query:"comment"`
StartTime int64 `json:"starttime" form:"starttime" query:"starttime"`
ExpireTime int64 `json:"expiretime" form:"expiretime" query:"expiretime"`
}
...@@ -10,12 +10,19 @@ import ( ...@@ -10,12 +10,19 @@ import (
var DB *gorm.DB var DB *gorm.DB
func Init() { func Init() {
return
connectDatabase() connectDatabase()
err := DB.AutoMigrate() // TODO: add table structs here err := DB.AutoMigrate(&User{}) // TODO: add table structs here
if err != nil { if err != nil {
logrus.Fatal(err) logrus.Fatal(err)
} }
err1 := DB.AutoMigrate(&ShortLink{})
if err1 != nil {
logrus.Fatal(err1)
}
err2 := DB.AutoMigrate(&Record{})
if err2 != nil {
logrus.Fatal(err1)
}
} }
func connectDatabase() { func connectDatabase() {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment