update new features service-dns

This commit is contained in:
Alireza Ahmadi
2025-05-28 23:00:19 +02:00
parent d873c86ef8
commit fc410c9a8d
11 changed files with 538 additions and 67 deletions
+18 -11
View File
@@ -24,45 +24,52 @@ func (s *TlsService) GetAll() ([]model.Tls, error) {
return tlsConfig, nil
}
func (s *TlsService) Save(tx *gorm.DB, action string, data json.RawMessage) ([]uint, error) {
func (s *TlsService) Save(tx *gorm.DB, action string, data json.RawMessage) ([]uint, []uint, error) {
var err error
var inboundIds []uint
var serviceIds []uint
switch action {
case "new", "edit":
var tls model.Tls
err = json.Unmarshal(data, &tls)
if err != nil {
return nil, err
return nil, nil, err
}
err = tx.Save(&tls).Error
if err != nil {
return nil, err
return nil, nil, err
}
err = tx.Model(model.Inbound{}).Select("id").Where("tls_id = ?", tls.Id).Scan(&inboundIds).Error
if err != nil {
return nil, err
return nil, nil, err
}
return inboundIds, nil
err = tx.Model(model.Service{}).Where("tls_id = ?", tls.Id).Scan(&serviceIds).Error
return serviceIds, inboundIds, nil
case "del":
var id uint
err = json.Unmarshal(data, &id)
if err != nil {
return nil, err
return nil, nil, err
}
var inboundCount int64
err = tx.Model(model.Inbound{}).Where("tls_id = ?", id).Count(&inboundCount).Error
if err != nil {
return nil, err
return nil, nil, err
}
if inboundCount > 0 {
return nil, common.NewError("tls in use")
var serviceCount int64
err = tx.Model(model.Service{}).Where("tls_id = ?", id).Count(&serviceCount).Error
if err != nil {
return nil, nil, err
}
if inboundCount > 0 || serviceCount > 0 {
return nil, nil, common.NewError("tls in use")
}
err = tx.Where("id = ?", id).Delete(model.Tls{}).Error
if err != nil {
return nil, err
return nil, nil, err
}
}
return nil, nil
return nil, nil, nil
}