imc-vibe/backend/internal/db/aliases.go
2026-03-21 22:41:23 +01:00

70 lines
1.5 KiB
Go

package db
func (d *DB) GetAllAliases() ([]AliasWithDomain, error) {
var aliases []Alias
if err := d.Preload("Domain").Find(&aliases).Error; err != nil {
return nil, err
}
result := make([]AliasWithDomain, len(aliases))
for i, a := range aliases {
result[i] = AliasWithDomain{
Alias: a,
DomainName: "",
}
if a.Domain != nil {
result[i].DomainName = a.Domain.Name
}
}
if result == nil {
result = []AliasWithDomain{}
}
return result, nil
}
func (d *DB) GetAliasesByDomain(domainID uint) ([]Alias, error) {
var aliases []Alias
if err := d.Where("domain_id = ?", domainID).Find(&aliases).Error; err != nil {
return nil, err
}
if aliases == nil {
aliases = []Alias{}
}
return aliases, nil
}
func (d *DB) GetAliasByID(id uint) (*Alias, error) {
var alias Alias
if err := d.Preload("Domain").First(&alias, id).Error; err != nil {
return nil, err
}
return &alias, nil
}
func (d *DB) CreateAlias(source, destination string) (*Alias, error) {
alias := Alias{
Source: source,
Destination: destination,
}
if err := d.Create(&alias).Error; err != nil {
return nil, err
}
return &alias, nil
}
func (d *DB) CreateAliasInDomain(source, destination string, domainID uint) (*Alias, error) {
alias := Alias{
DomainID: domainID,
Source: source,
Destination: destination,
}
if err := d.Create(&alias).Error; err != nil {
return nil, err
}
return &alias, nil
}
func (d *DB) DeleteAlias(id uint) error {
return d.Delete(&Alias{}, id).Error
}