Migrate GORM to generics API, simplify user-domain relationship, refactor models

This commit is contained in:
Christoph Haas 2026-03-28 17:21:00 +01:00
parent 19ce2224b8
commit 560b40503a
9 changed files with 192 additions and 117 deletions

View file

@ -12,7 +12,8 @@ package db
// Returns a slice of DomainStats (includes counts) or an error.
func (d *DB) GetAllDomains() ([]DomainStats, error) {
var domains []VirtualDomain
if err := d.Order("name ASC").Find(&domains).Error; err != nil {
err := d.Order("name ASC").Find(&domains).Error
if err != nil {
return nil, err
}
@ -41,7 +42,8 @@ func (d *DB) GetAllDomains() ([]DomainStats, error) {
// Returns the VirtualDomain or an error (including "record not found").
func (d *DB) GetDomainByID(id uint) (*VirtualDomain, error) {
var domain VirtualDomain
if err := d.Where("id = ?", id).First(&domain).Error; err != nil {
err := d.Where("id = ?", id).First(&domain).Error
if err != nil {
return nil, err
}
return &domain, nil
@ -52,7 +54,8 @@ func (d *DB) GetDomainByID(id uint) (*VirtualDomain, error) {
// Returns the VirtualDomain or an error (including "record not found").
func (d *DB) GetDomainByName(name string) (*VirtualDomain, error) {
var domain VirtualDomain
if err := d.Where("name = ?", name).First(&domain).Error; err != nil {
err := d.Where("name = ?", name).First(&domain).Error
if err != nil {
return nil, err
}
return &domain, nil
@ -63,7 +66,8 @@ func (d *DB) GetDomainByName(name string) (*VirtualDomain, error) {
// Returns the created VirtualDomain or an error.
func (d *DB) CreateDomain(name string) (*VirtualDomain, error) {
domain := VirtualDomain{Name: name}
if err := d.Create(&domain).Error; err != nil {
err := d.Create(&domain).Error
if err != nil {
return nil, err
}
return &domain, nil
@ -77,13 +81,16 @@ func (d *DB) DeleteDomain(id uint) error {
tx := d.Begin()
defer func() { tx.Rollback() }()
if err := tx.Where("domain_id = ?", id).Delete(&VirtualUser{}).Error; err != nil {
err := tx.Where("domain_id = ?", id).Delete(&VirtualUser{}).Error
if err != nil {
return err
}
if err := tx.Where("domain_id = ?", id).Delete(&VirtualAlias{}).Error; err != nil {
err = tx.Where("domain_id = ?", id).Delete(&VirtualAlias{}).Error
if err != nil {
return err
}
if err := tx.Delete(&VirtualDomain{}, id).Error; err != nil {
err = tx.Delete(&VirtualDomain{}, id).Error
if err != nil {
return err
}