long options supported

This commit is contained in:
Sense T
2024-04-11 10:51:50 +08:00
parent c3b80093d2
commit 7a5fcf1972
10 changed files with 108 additions and 58 deletions

View File

@@ -10,7 +10,7 @@ import (
)
type domainsDAO struct {
database.BaseDAO[models.Domain]
database.BaseDAO[models.IDomain]
}
func CreateDomain(d *models.Domain) (*models.Domain, error) {
@@ -20,7 +20,7 @@ func CreateDomain(d *models.Domain) (*models.Domain, error) {
}
tx := database.Client.Begin()
if _, err := (domainsDAO{}).Create(tx, *d); err != nil {
if _, err := (domainsDAO{}).Create(tx, d); err != nil {
tx.Rollback()
return nil, err
}
@@ -54,21 +54,30 @@ func CreateDomain(d *models.Domain) (*models.Domain, error) {
}
}
tx.Commit()
return d, err
return d, tx.Commit().Error
}
func GetDomains(domain string) ([]models.Domain, error) {
if domain != "" {
return (domainsDAO{}).GetAll(database.Client, models.Domain{DomainName: domain})
r, err := (domainsDAO{}).GetAll(database.Client, models.Domain{DomainName: domain})
n := make([]models.Domain, 0)
for _, e := range r {
n = append(n, e.(models.Domain))
}
return n, err
} else {
return (domainsDAO{}).GetAll(database.Client, models.Domain{})
r, err := (domainsDAO{}).GetAll(database.Client, models.Domain{})
n := make([]models.Domain, 0)
for _, e := range r {
n = append(n, e.(models.Domain))
}
return n, err
}
}
func UpdateDomain(d *models.Domain) error {
tx := database.Client.Begin()
if _, err := (domainsDAO{}).Update(tx, *d); err != nil {
if _, err := (domainsDAO{}).Update(tx, d); err != nil {
tx.Rollback()
return err
}
@@ -98,9 +107,7 @@ func UpdateDomain(d *models.Domain) error {
return err
}
tx.Commit()
return nil
return tx.Commit().Error
}
func DeleteDomain(id string) error {
@@ -126,8 +133,7 @@ func DeleteDomain(id string) error {
return err
}
tx.Commit()
return nil
return tx.Commit().Error
}
// for metrics

View File

@@ -6,16 +6,15 @@ import (
)
func Migrate() error {
if err := (domainsDAO{}).Migrate(database.Client, models.Domain{}); err != nil {
if err := (domainsDAO{}).Migrate(database.Client, &models.Domain{}); err != nil {
return err
}
var recordDefiniation models.IRecord = &models.Record[models.RecordContentDefault]{}
if err := (recordsDAO{}).Migrate(database.Client, recordDefiniation); err != nil {
if err := (recordsDAO{}).Migrate(database.Client, &models.Record[models.RecordContentDefault]{Content: make(models.RecordContentDefault)}); err != nil {
return err
}
if err := (settingsDAO{}).Migrate(database.Client, models.Settings{}); err != nil {
if err := (settingsDAO{}).Migrate(database.Client, &models.Settings{}); err != nil {
return err
}

View File

@@ -42,8 +42,8 @@ func CreateRecords(rs []models.IRecord) error {
return err
}
}
tx.Commit()
return nil
return tx.Commit().Error
}
func GetRecords(cond models.IRecord) ([]models.IRecord, error) {
@@ -84,8 +84,7 @@ func DeleteRecord(domain, id string) error {
return err
}
tx.Commit()
return nil
return tx.Commit().Error
}
// for metrics

View File

@@ -4,18 +4,20 @@ import (
"reCoreD-UI/database"
"reCoreD-UI/models"
"strings"
"github.com/sirupsen/logrus"
)
const dnsSep = ","
type settingsDAO struct {
database.BaseDAO[models.Settings]
database.BaseDAO[models.ISettings]
}
func SetupDNS(dns ...string) error {
settings := models.Settings{Key: models.SettingsKeyDNSServer, Value: strings.Join(dns, dnsSep)}
if _, err := (settingsDAO{}).UpdateOrCreate(database.Client, settings); err != nil {
if _, err := (settingsDAO{}).UpdateOrCreate(database.Client, &settings, models.Settings{Key: models.SettingsKeyDNSServer}); err != nil {
return err
}
@@ -28,10 +30,12 @@ func GetDNS() ([]string, error) {
return nil, err
}
return strings.Split(settings.Value, dnsSep), nil
return strings.Split(settings.(models.Settings).Value, dnsSep), nil
}
func SetupAdmin(username, password string) error {
logrus.Debugf("got %s:%s", username, password)
settingUsername := models.Settings{
Key: models.SettingsKeyAdminUsername,
Value: username,
@@ -42,18 +46,17 @@ func SetupAdmin(username, password string) error {
}
tx := database.Client.Begin()
if _, err := (settingsDAO{}).UpdateOrCreate(tx, settingUsername); err != nil {
if _, err := (settingsDAO{}).UpdateOrCreate(tx, &settingUsername, models.Settings{Key: models.SettingsKeyAdminUsername}); err != nil {
tx.Rollback()
return err
}
if _, err := (settingsDAO{}).UpdateOrCreate(tx, settingPassword); err != nil {
if _, err := (settingsDAO{}).UpdateOrCreate(tx, &settingPassword, models.Settings{Key: models.SettingsKeyAdminPassword}); err != nil {
tx.Rollback()
return err
}
tx.Commit()
return nil
return tx.Commit().Error
}
func GetAdmin() (string, string, error) {
@@ -61,13 +64,13 @@ func GetAdmin() (string, string, error) {
if err != nil {
return "", "", err
}
username := settings.Value
username := settings.(models.Settings).Value
settings, err = (settingsDAO{}).GetOne(database.Client, models.Settings{Key: models.SettingsKeyAdminPassword})
if err != nil {
return "", "", err
}
password := settings.Value
password := settings.(models.Settings).Value
return username, password, nil
}