Skip to content

Commit 39934fb

Browse files
FEAUTRE (logging): Move logger to DI in services and models instead of globlal variables
1 parent 01310c4 commit 39934fb

File tree

36 files changed

+236
-152
lines changed

36 files changed

+236
-152
lines changed

backend/go.mod

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ require (
1414
github.com/joho/godotenv v1.5.1
1515
github.com/lib/pq v1.10.9
1616
github.com/minio/minio-go/v7 v7.0.92
17+
github.com/shirou/gopsutil/v4 v4.25.5
1718
github.com/stretchr/testify v1.10.0
1819
github.com/swaggo/files v1.0.1
1920
github.com/swaggo/gin-swagger v1.6.0
2021
github.com/swaggo/swag v1.16.4
2122
github.com/testcontainers/testcontainers-go v0.37.0
2223
golang.org/x/crypto v0.39.0
23-
golang.org/x/sys v0.33.0
2424
gorm.io/driver/postgres v1.5.11
2525
gorm.io/gorm v1.26.1
2626
)
@@ -101,8 +101,6 @@ require (
101101
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
102102
github.com/rogpeppe/go-internal v1.14.1 // indirect
103103
github.com/rs/xid v1.6.0 // indirect
104-
github.com/shirou/gopsutil v3.21.11+incompatible // indirect
105-
github.com/shirou/gopsutil/v4 v4.25.5 // indirect
106104
github.com/sirupsen/logrus v1.9.3 // indirect
107105
github.com/tinylib/msgp v1.3.0 // indirect
108106
github.com/tklauser/go-sysconf v0.3.15 // indirect
@@ -120,6 +118,7 @@ require (
120118
golang.org/x/arch v0.17.0 // indirect
121119
golang.org/x/net v0.40.0 // indirect
122120
golang.org/x/sync v0.15.0 // indirect
121+
golang.org/x/sys v0.33.0 // indirect
123122
golang.org/x/text v0.26.0 // indirect
124123
golang.org/x/tools v0.33.0 // indirect
125124
google.golang.org/protobuf v1.36.6 // indirect

backend/go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,6 @@ github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0t
213213
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
214214
github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU=
215215
github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0=
216-
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
217-
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
218216
github.com/shirou/gopsutil/v4 v4.25.5 h1:rtd9piuSMGeU8g1RMXjZs9y9luK5BwtnG7dZaQUJAsc=
219217
github.com/shirou/gopsutil/v4 v4.25.5/go.mod h1:PfybzyydfZcN+JMMjkF6Zb8Mq1A/VcogFFg7hj50W9c=
220218
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=

backend/internal/config/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ func loadEnvVariables() {
111111
log.Info("ENV_MODE loaded", "mode", env.EnvMode)
112112

113113
env.PostgresesInstallDir = filepath.Join(backendRoot, "tools", "postgresql")
114-
tools.VerifyPostgresesInstallation(env.EnvMode, env.PostgresesInstallDir)
114+
tools.VerifyPostgresesInstallation(log, env.EnvMode, env.PostgresesInstallDir)
115115

116116
// Store the data and temp folders one level below the root
117117
// (projectRoot/postgresus-data -> /postgresus-data)

backend/internal/features/backups/background_service.go

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package backups
22

33
import (
4+
"log/slog"
45
"postgresus-backend/internal/config"
56
"postgresus-backend/internal/features/databases"
67
"postgresus-backend/internal/features/storages"
7-
"postgresus-backend/internal/util/logger"
88
"time"
99
)
1010

@@ -15,15 +15,14 @@ type BackupBackgroundService struct {
1515
storageService *storages.StorageService
1616

1717
lastBackupTime time.Time
18+
logger *slog.Logger
1819
}
1920

20-
var log = logger.GetLogger()
21-
2221
func (s *BackupBackgroundService) Run() {
2322
s.lastBackupTime = time.Now().UTC()
2423

2524
if err := s.failBackupsInProgress(); err != nil {
26-
log.Error("Failed to fail backups in progress", "error", err)
25+
s.logger.Error("Failed to fail backups in progress", "error", err)
2726
panic(err)
2827
}
2928

@@ -37,11 +36,11 @@ func (s *BackupBackgroundService) Run() {
3736
}
3837

3938
if err := s.cleanOldBackups(); err != nil {
40-
log.Error("Failed to clean old backups", "error", err)
39+
s.logger.Error("Failed to clean old backups", "error", err)
4140
}
4241

4342
if err := s.runPendingBackups(); err != nil {
44-
log.Error("Failed to run pending backups", "error", err)
43+
s.logger.Error("Failed to run pending backups", "error", err)
4544
}
4645

4746
s.lastBackupTime = time.Now().UTC()
@@ -102,7 +101,7 @@ func (s *BackupBackgroundService) cleanOldBackups() error {
102101
dateBeforeBackupsShouldBeDeleted,
103102
)
104103
if err != nil {
105-
log.Error(
104+
s.logger.Error(
106105
"Failed to find old backups for database",
107106
"databaseId",
108107
database.ID,
@@ -115,7 +114,7 @@ func (s *BackupBackgroundService) cleanOldBackups() error {
115114
for _, backup := range oldBackups {
116115
storage, err := s.storageService.GetStorageByID(backup.StorageID)
117116
if err != nil {
118-
log.Error(
117+
s.logger.Error(
119118
"Failed to get storage by ID",
120119
"storageId",
121120
backup.StorageID,
@@ -125,14 +124,18 @@ func (s *BackupBackgroundService) cleanOldBackups() error {
125124
continue
126125
}
127126

128-
storage.DeleteFile(backup.ID)
127+
err = storage.DeleteFile(backup.ID)
128+
if err != nil {
129+
s.logger.Error("Failed to delete backup file", "backupId", backup.ID, "error", err)
130+
continue
131+
}
129132

130133
if err := s.backupRepository.DeleteByID(backup.ID); err != nil {
131-
log.Error("Failed to delete old backup", "backupId", backup.ID, "error", err)
134+
s.logger.Error("Failed to delete old backup", "backupId", backup.ID, "error", err)
132135
continue
133136
}
134137

135-
log.Info("Deleted old backup", "backupId", backup.ID, "databaseId", database.ID)
138+
s.logger.Info("Deleted old backup", "backupId", backup.ID, "databaseId", database.ID)
136139
}
137140
}
138141

@@ -152,7 +155,7 @@ func (s *BackupBackgroundService) runPendingBackups() error {
152155

153156
lastBackup, err := s.backupRepository.FindLastByDatabaseID(database.ID)
154157
if err != nil {
155-
log.Error(
158+
s.logger.Error(
156159
"Failed to get last backup for database",
157160
"databaseId",
158161
database.ID,
@@ -168,7 +171,7 @@ func (s *BackupBackgroundService) runPendingBackups() error {
168171
}
169172

170173
if database.BackupInterval.ShouldTriggerBackup(time.Now().UTC(), lastBackupTime) {
171-
log.Info(
174+
s.logger.Info(
172175
"Triggering scheduled backup",
173176
"databaseId",
174177
database.ID,
@@ -177,7 +180,7 @@ func (s *BackupBackgroundService) runPendingBackups() error {
177180
)
178181

179182
go s.backupService.MakeBackup(database.ID)
180-
log.Info("Successfully triggered scheduled backup", "databaseId", database.ID)
183+
s.logger.Info("Successfully triggered scheduled backup", "databaseId", database.ID)
181184
}
182185
}
183186

backend/internal/features/backups/di.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,22 @@ package backups
22

33
import (
44
"postgresus-backend/internal/features/backups/usecases"
5-
usecases_postgresql "postgresus-backend/internal/features/backups/usecases/postgresql"
65
"postgresus-backend/internal/features/databases"
76
"postgresus-backend/internal/features/notifiers"
87
"postgresus-backend/internal/features/storages"
98
"postgresus-backend/internal/features/users"
9+
"postgresus-backend/internal/util/logger"
1010
"time"
1111
)
1212

13-
var createPostgresqlBackupUsecase = &usecases_postgresql.CreatePostgresqlBackupUsecase{}
14-
var createBackupUseCase = &usecases.CreateBackupUsecase{
15-
CreatePostgresqlBackupUsecase: createPostgresqlBackupUsecase,
16-
}
1713
var backupRepository = &BackupRepository{}
1814
var backupService = &BackupService{
1915
databases.GetDatabaseService(),
2016
storages.GetStorageService(),
2117
backupRepository,
2218
notifiers.GetNotifierService(),
23-
createBackupUseCase,
19+
usecases.GetCreateBackupUsecase(),
20+
logger.GetLogger(),
2421
}
2522

2623
var backupBackgroundService = &BackupBackgroundService{
@@ -29,6 +26,7 @@ var backupBackgroundService = &BackupBackgroundService{
2926
databases.GetDatabaseService(),
3027
storages.GetStorageService(),
3128
time.Now().UTC(),
29+
logger.GetLogger(),
3230
}
3331

3432
var backupController = &BackupController{

backend/internal/features/backups/model.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package backups
22

33
import (
4+
"log/slog"
45
"postgresus-backend/internal/features/databases"
56
"postgresus-backend/internal/features/storages"
67
"time"
@@ -27,14 +28,14 @@ type Backup struct {
2728
CreatedAt time.Time `json:"createdAt" gorm:"column:created_at"`
2829
}
2930

30-
func (b *Backup) DeleteBackupFromStorage() {
31+
func (b *Backup) DeleteBackupFromStorage(logger *slog.Logger) {
3132
if b.Status != BackupStatusCompleted {
3233
return
3334
}
3435

3536
err := b.Storage.DeleteFile(b.ID)
3637
if err != nil {
37-
log.Error("Failed to delete backup from storage", "error", err)
38+
logger.Error("Failed to delete backup from storage", "error", err)
3839
// we ignore the error, because the access to the storage
3940
// may be lost, file already deleted, etc.
4041
}

backend/internal/features/backups/service.go

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package backups
33
import (
44
"errors"
55
"fmt"
6+
"log/slog"
67
"postgresus-backend/internal/features/backups/usecases"
78
"postgresus-backend/internal/features/databases"
89
"postgresus-backend/internal/features/notifiers"
@@ -21,6 +22,8 @@ type BackupService struct {
2122
notifierService *notifiers.NotifierService
2223

2324
createBackupUseCase *usecases.CreateBackupUsecase
25+
26+
logger *slog.Logger
2427
}
2528

2629
func (s *BackupService) OnBeforeDbStorageChange(
@@ -53,7 +56,7 @@ func (s *BackupService) OnBeforeDbStorageChange(
5356
if err := backup.Storage.DeleteFile(backup.ID); err != nil {
5457
// most likely we cannot do nothing with this,
5558
// so we just remove the backup model
56-
log.Error("Failed to delete backup file", "error", err)
59+
s.logger.Error("Failed to delete backup file", "error", err)
5760
}
5861

5962
if err := s.backupRepository.DeleteByID(backup.ID); err != nil {
@@ -125,7 +128,7 @@ func (s *BackupService) DeleteBackup(
125128
return errors.New("backup is in progress")
126129
}
127130

128-
backup.DeleteBackupFromStorage()
131+
backup.DeleteBackupFromStorage(s.logger)
129132

130133
backup.Status = BackupStatusDeleted
131134
return s.backupRepository.Save(backup)
@@ -134,24 +137,24 @@ func (s *BackupService) DeleteBackup(
134137
func (s *BackupService) MakeBackup(databaseID uuid.UUID) {
135138
database, err := s.databaseService.GetDatabaseByID(databaseID)
136139
if err != nil {
137-
log.Error("Failed to get database by ID", "error", err)
140+
s.logger.Error("Failed to get database by ID", "error", err)
138141
return
139142
}
140143

141144
lastBackup, err := s.backupRepository.FindLastByDatabaseID(databaseID)
142145
if err != nil {
143-
log.Error("Failed to find last backup by database ID", "error", err)
146+
s.logger.Error("Failed to find last backup by database ID", "error", err)
144147
return
145148
}
146149

147150
if lastBackup != nil && lastBackup.Status == BackupStatusInProgress {
148-
log.Error("Backup is in progress")
151+
s.logger.Error("Backup is in progress")
149152
return
150153
}
151154

152155
storage, err := s.storageService.GetStorageByID(database.StorageID)
153156
if err != nil {
154-
log.Error("Failed to get storage by ID", "error", err)
157+
s.logger.Error("Failed to get storage by ID", "error", err)
155158
return
156159
}
157160

@@ -170,7 +173,7 @@ func (s *BackupService) MakeBackup(databaseID uuid.UUID) {
170173
}
171174

172175
if err := s.backupRepository.Save(backup); err != nil {
173-
log.Error("Failed to save backup", "error", err)
176+
s.logger.Error("Failed to save backup", "error", err)
174177
return
175178
}
176179

@@ -183,7 +186,7 @@ func (s *BackupService) MakeBackup(databaseID uuid.UUID) {
183186
backup.BackupDurationMs = time.Since(start).Milliseconds()
184187

185188
if err := s.backupRepository.Save(backup); err != nil {
186-
log.Error("Failed to update backup progress", "error", err)
189+
s.logger.Error("Failed to update backup progress", "error", err)
187190
}
188191
}
189192

@@ -201,7 +204,7 @@ func (s *BackupService) MakeBackup(databaseID uuid.UUID) {
201204
backup.BackupSizeMb = 0
202205

203206
if updateErr := s.databaseService.SetBackupError(databaseID, errMsg); updateErr != nil {
204-
log.Error(
207+
s.logger.Error(
205208
"Failed to update database last backup time",
206209
"databaseId",
207210
databaseID,
@@ -211,7 +214,7 @@ func (s *BackupService) MakeBackup(databaseID uuid.UUID) {
211214
}
212215

213216
if err := s.backupRepository.Save(backup); err != nil {
214-
log.Error("Failed to save backup", "error", err)
217+
s.logger.Error("Failed to save backup", "error", err)
215218
}
216219

217220
s.SendBackupNotification(
@@ -228,14 +231,14 @@ func (s *BackupService) MakeBackup(databaseID uuid.UUID) {
228231
backup.BackupDurationMs = time.Since(start).Milliseconds()
229232

230233
if err := s.backupRepository.Save(backup); err != nil {
231-
log.Error("Failed to save backup", "error", err)
234+
s.logger.Error("Failed to save backup", "error", err)
232235
return
233236
}
234237

235238
// Update database last backup time
236239
now := time.Now().UTC()
237240
if updateErr := s.databaseService.SetLastBackupTime(databaseID, now); updateErr != nil {
238-
log.Error(
241+
s.logger.Error(
239242
"Failed to update database last backup time",
240243
"databaseId",
241244
databaseID,
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package usecases
2+
3+
import (
4+
usecases_postgresql "postgresus-backend/internal/features/backups/usecases/postgresql"
5+
)
6+
7+
var createBackupUsecase = &CreateBackupUsecase{
8+
usecases_postgresql.GetCreatePostgresqlBackupUsecase(),
9+
}
10+
11+
func GetCreateBackupUsecase() *CreateBackupUsecase {
12+
return createBackupUsecase
13+
}

0 commit comments

Comments
 (0)