imc-vibe/backend/internal/db/users.go
Christoph Haas d5880d5096 Rename ISPmail models to use Virtual* prefix
- Domain -> VirtualDomain
- User -> VirtualUser
- Alias -> VirtualAlias

This clarifies which tables are ISPmail tables vs IMC tables.
2026-03-26 23:34:05 +01:00

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
}