- users.go -> virtual_users.go - domains.go -> virtual_domains.go - aliases.go -> virtual_aliases.go
76 lines
1.8 KiB
Go
76 lines
1.8 KiB
Go
package db
|
|
|
|
func (d *DB) GetAllMailUsers() ([]VirtualUser, error) {
|
|
var users []VirtualUser
|
|
if err := d.Preload("Domain").Find(&users).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
if users == nil {
|
|
users = []VirtualUser{}
|
|
}
|
|
return users, nil
|
|
}
|
|
|
|
func (d *DB) GetUsersByDomain(domainID uint) ([]VirtualUser, error) {
|
|
var users []VirtualUser
|
|
if err := d.Where("domain_id = ?", domainID).Find(&users).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
if users == nil {
|
|
users = []VirtualUser{}
|
|
}
|
|
return users, nil
|
|
}
|
|
|
|
func (d *DB) GetUserByID(id uint) (*VirtualUser, error) {
|
|
var user VirtualUser
|
|
if err := d.Preload("Domain").First(&user, id).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return &user, nil
|
|
}
|
|
|
|
func (d *DB) GetUserByEmail(email string) (*VirtualUser, error) {
|
|
var user VirtualUser
|
|
if err := d.Where("email = ?", email).First(&user).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return &user, nil
|
|
}
|
|
|
|
func (d *DB) CreateUser(email, passwordHash string, quota int64) (*VirtualUser, error) {
|
|
user := VirtualUser{
|
|
Email: email,
|
|
Password: passwordHash,
|
|
Quota: quota,
|
|
}
|
|
if err := d.Create(&user).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return &user, nil
|
|
}
|
|
|
|
func (d *DB) CreateUserInDomain(email, passwordHash string, quota int64, domainID uint) (*VirtualUser, error) {
|
|
user := VirtualUser{
|
|
DomainID: domainID,
|
|
Email: email,
|
|
Password: passwordHash,
|
|
Quota: quota,
|
|
}
|
|
if err := d.Create(&user).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return &user, nil
|
|
}
|
|
|
|
func (d *DB) UpdateUserPassword(id uint, passwordHash string) error {
|
|
return d.Model(&VirtualUser{}).Where("id = ?", id).Update("password", passwordHash).Error
|
|
}
|
|
|
|
func (d *DB) UpdateUserQuota(id uint, quota int64) error {
|
|
return d.Model(&VirtualUser{}).Where("id = ?", id).Update("quota", quota).Error
|
|
}
|
|
|
|
func (d *DB) DeleteUser(id uint) error {
|
|
return d.Delete(&VirtualUser{}, id).Error
|
|
}
|