first
This commit is contained in:
commit
f4be03ceba
1826 changed files with 830924 additions and 0 deletions
68
backend/internal/db/domains.go
Normal file
68
backend/internal/db/domains.go
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
package db
|
||||
|
||||
func (d *DB) GetAllDomains() ([]DomainStats, error) {
|
||||
var domains []Domain
|
||||
if err := d.Find(&domains).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
stats := make([]DomainStats, len(domains))
|
||||
for i, dom := range domains {
|
||||
var userCount, aliasCount int64
|
||||
d.Model(&User{}).Where("domain_id = ?", dom.ID).Count(&userCount)
|
||||
d.Model(&Alias{}).Where("domain_id = ?", dom.ID).Count(&aliasCount)
|
||||
|
||||
stats[i] = DomainStats{
|
||||
ID: dom.ID,
|
||||
Name: dom.Name,
|
||||
UserCount: userCount,
|
||||
AliasCount: aliasCount,
|
||||
}
|
||||
}
|
||||
|
||||
if stats == nil {
|
||||
stats = []DomainStats{}
|
||||
}
|
||||
return stats, nil
|
||||
}
|
||||
|
||||
func (d *DB) GetDomainByID(id uint) (*Domain, error) {
|
||||
var domain Domain
|
||||
if err := d.Where("id = ?", id).First(&domain).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &domain, nil
|
||||
}
|
||||
|
||||
func (d *DB) GetDomainByName(name string) (*Domain, error) {
|
||||
var domain Domain
|
||||
if err := d.Where("name = ?", name).First(&domain).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &domain, nil
|
||||
}
|
||||
|
||||
func (d *DB) CreateDomain(name string) (*Domain, error) {
|
||||
domain := Domain{Name: name}
|
||||
if err := d.Create(&domain).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &domain, nil
|
||||
}
|
||||
|
||||
func (d *DB) DeleteDomain(id uint) error {
|
||||
tx := d.Begin()
|
||||
defer func() { tx.Rollback() }()
|
||||
|
||||
if err := tx.Where("domain_id = ?", id).Delete(&User{}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tx.Where("domain_id = ?", id).Delete(&Alias{}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tx.Delete(&Domain{}, id).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return tx.Commit().Error
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue