migrate database

This commit is contained in:
Alireza Ahmadi
2024-12-22 11:53:44 +01:00
parent ecd9348a0f
commit 7a047daf6f
14 changed files with 567 additions and 113 deletions
-46
View File
@@ -1,46 +0,0 @@
package service
import (
"encoding/json"
"s-ui/database"
"s-ui/database/model"
"gorm.io/gorm"
)
type InDataService struct {
}
func (s *InDataService) GetAll() ([]model.InboundData, error) {
db := database.GetDB()
inData := []model.InboundData{}
err := db.Model(model.InboundData{}).Scan(&inData).Error
if err != nil {
return nil, err
}
return inData, nil
}
func (s *InDataService) Save(tx *gorm.DB, changes []model.Changes) error {
var err error
for _, change := range changes {
inData := model.InboundData{}
err = json.Unmarshal(change.Obj, &inData)
if err != nil {
return err
}
switch change.Action {
case "new":
err = tx.Create(&inData).Error
case "del":
err = tx.Where("id = ?", change.Index).Delete(model.InboundData{}).Error
default:
err = tx.Save(inData).Error
}
if err != nil {
return err
}
}
return err
}
+34
View File
@@ -0,0 +1,34 @@
package service
import (
"s-ui/database"
"s-ui/database/model"
"gorm.io/gorm"
)
type InboundService struct{}
func (s *InboundService) GetAll() ([]model.Inbound, error) {
db := database.GetDB()
inbounds := []model.Inbound{}
err := db.Model(model.Inbound{}).Scan(&inbounds).Error
if err != nil {
return nil, err
}
return inbounds, nil
}
func (s *InboundService) FromIds(ids []uint) ([]*model.Inbound, error) {
db := database.GetDB()
inbounds := []*model.Inbound{}
err := db.Model(model.Inbound{}).Where("id in ?", ids).Scan(&inbounds).Error
if err != nil {
return nil, err
}
return inbounds, nil
}
func (s *InboundService) Save(db *gorm.DB, inbounds []*model.Inbound) error {
return db.Save(inbounds).Error
}
+32
View File
@@ -3,6 +3,7 @@ package service
import (
"encoding/json"
"os"
"s-ui/config"
"s-ui/database"
"s-ui/database/model"
"s-ui/logger"
@@ -14,6 +15,25 @@ import (
"gorm.io/gorm"
)
var defaultConfig = `{
"log": {
"level": "info"
},
"dns": {},
"route": {
"rules": [
{
"protocol": [
"dns"
],
"outbound": "dns-out",
"action": "route"
}
]
},
"experimental": {}
}`
var defaultValueMap = map[string]string{
"webListen": "",
"webDomain": "",
@@ -37,6 +57,8 @@ var defaultValueMap = map[string]string{
"subShowInfo": "false",
"subURI": "",
"subJsonExt": "",
"config": defaultConfig,
"version": config.GetVersion(),
}
type SettingService struct {
@@ -67,6 +89,8 @@ func (s *SettingService) GetAllSetting() (*map[string]string, error) {
// Due to security principles
delete(allSetting, "secret")
delete(allSetting, "config")
delete(allSetting, "version")
return &allSetting, nil
}
@@ -311,6 +335,14 @@ func (s *SettingService) GetFinalSubURI(host string) (string, error) {
return protocol + "://" + host + port + (*allSetting)["subPath"], nil
}
func (s *SettingService) GetConfig() (string, error) {
return s.getString("config")
}
func (s *SettingService) SetConfig(config string) error {
return s.setString("config", config)
}
func (s *SettingService) Save(tx *gorm.DB, changes []model.Changes) error {
var err error
for _, change := range changes {