add MigrateDB func for a single source of truth

This commit is contained in:
Hamidreza Ghavami 2023-05-06 00:22:39 +04:30
parent 0a5811adf8
commit 26f160fb89
3 changed files with 14 additions and 6 deletions

View file

@ -2,7 +2,6 @@ package main
import ( import (
"fmt" "fmt"
"github.com/spf13/cobra"
"log" "log"
"os" "os"
"os/signal" "os/signal"
@ -16,6 +15,8 @@ import (
"x-ui/web/global" "x-ui/web/global"
"x-ui/web/service" "x-ui/web/service"
"github.com/spf13/cobra"
"github.com/op/go-logging" "github.com/op/go-logging"
) )
@ -215,8 +216,7 @@ func migrateDb() {
log.Fatal(err) log.Fatal(err)
} }
fmt.Println("Start migrating database...") fmt.Println("Start migrating database...")
inboundService.MigrationRequirements() inboundService.MigrateDB()
inboundService.RemoveOrphanedTraffics()
fmt.Println("Migration done!") fmt.Println("Migration done!")
} }

View file

@ -595,6 +595,7 @@ func (s *InboundService) DisableInvalidInbounds() (int64, error) {
count := result.RowsAffected count := result.RowsAffected
return count, err return count, err
} }
func (s *InboundService) DisableInvalidClients() (int64, error) { func (s *InboundService) DisableInvalidClients() (int64, error) {
db := database.GetDB() db := database.GetDB()
now := time.Now().Unix() * 1000 now := time.Now().Unix() * 1000
@ -605,7 +606,8 @@ func (s *InboundService) DisableInvalidClients() (int64, error) {
count := result.RowsAffected count := result.RowsAffected
return count, err return count, err
} }
func (s *InboundService) RemoveOrphanedTraffics() {
func (s *InboundService) MigrationRemoveOrphanedTraffics() {
db := database.GetDB() db := database.GetDB()
db.Exec(` db.Exec(`
DELETE FROM client_traffics DELETE FROM client_traffics
@ -616,6 +618,7 @@ func (s *InboundService) RemoveOrphanedTraffics() {
) )
`) `)
} }
func (s *InboundService) AddClientStat(inboundId int, client *model.Client) error { func (s *InboundService) AddClientStat(inboundId int, client *model.Client) error {
db := database.GetDB() db := database.GetDB()
@ -634,6 +637,7 @@ func (s *InboundService) AddClientStat(inboundId int, client *model.Client) erro
} }
return nil return nil
} }
func (s *InboundService) UpdateClientStat(email string, client *model.Client) error { func (s *InboundService) UpdateClientStat(email string, client *model.Client) error {
db := database.GetDB() db := database.GetDB()
@ -1055,3 +1059,8 @@ func (s *InboundService) MigrationRequirements() {
// Remove orphaned traffics // Remove orphaned traffics
db.Where("inbound_id = 0").Delete(xray.ClientTraffic{}) db.Where("inbound_id = 0").Delete(xray.ClientTraffic{})
} }
func (s *InboundService) MigrateDB() {
s.MigrationRequirements()
s.MigrationRemoveOrphanedTraffics()
}

View file

@ -469,8 +469,7 @@ func (s *ServerService) ImportDB(file multipart.File) error {
defer os.Rename(fallbackPath, config.GetDBPath()) defer os.Rename(fallbackPath, config.GetDBPath())
return common.NewErrorf("Error migrating db: %v", err) return common.NewErrorf("Error migrating db: %v", err)
} }
s.inboundService.MigrationRequirements() s.inboundService.MigrateDB()
s.inboundService.RemoveOrphanedTraffics()
// remove fallback file // remove fallback file
defer os.Remove(fallbackPath) defer os.Remove(fallbackPath)