mirror of
https://github.com/mgerb/go-discord-bot
synced 2026-01-09 08:32:48 +00:00
55 lines
1.5 KiB
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
|
|
}
|