1
0
mirror of https://github.com/mgerb/go-discord-bot synced 2026-01-09 08:32:48 +00:00
Files
go-discord-bot/server/webserver/model/user.go

55 lines
1.5 KiB
Go

package model
import (
"time"
"github.com/jinzhu/copier"
"github.com/jinzhu/gorm"
)
// User -
type User struct {
ID string `gorm:"primary_key" json:"id"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DeletedAt *time.Time `json:"deleted_at"`
Email string `json:"email"`
Username string `json:"username"`
Avatar string `json:"avatar"`
Discriminator string `json:"discriminator"`
Token string `gorm:"-" json:"token"`
Verified bool `json:"verified"`
MFAEnabled bool `json:"mfa_enabled"`
Bot bool `json:"bot"`
Permissions *int `gorm:"default:1;not null" json:"permissions"`
VoiceJoinSound *string `json:"voice_join_sound"` // sound clip that plays when user joins channel
}
// UserSave -
func UserSave(conn *gorm.DB, u *User) error {
var userCopy User
copier.Copy(&userCopy, u)
// insert or update user
// need to make copy of assign object because it must mess
// with the actual object in FirstOrCreate method
return conn.Where(&User{ID: u.ID}).Assign(userCopy).FirstOrCreate(u).Error
}
// UserGet - get user by id
func UserGet(conn *gorm.DB, id string) (*User, error) {
user := &User{ID: id}
err := conn.First(user).Error
return user, err
}
func UserGetAll(conn *gorm.DB) (*[]User, error) {
users := &[]User{}
err := conn.Find(users).Error
return users, err
}
func UserUpdate(conn *gorm.DB, user *User) (*User, error) {
err := conn.Save(user).Error
return user, err
}