(ctx context.Context, req dto.PostgresqlDBDelete)
| 302 | } |
| 303 | |
| 304 | func (u *PostgresqlService) Delete(ctx context.Context, req dto.PostgresqlDBDelete) error { |
| 305 | db, err := postgresqlRepo.Get(repo.WithByID(req.ID)) |
| 306 | if err != nil && !req.ForceDelete { |
| 307 | return err |
| 308 | } |
| 309 | cli, err := LoadPostgresqlClientByFrom(req.Database) |
| 310 | if err != nil { |
| 311 | return err |
| 312 | } |
| 313 | defer cli.Close() |
| 314 | if err := cli.Delete(client.DeleteInfo{ |
| 315 | Name: db.Name, |
| 316 | Username: db.Username, |
| 317 | ForceDelete: req.ForceDelete, |
| 318 | Timeout: 300, |
| 319 | }); err != nil && !req.ForceDelete { |
| 320 | if strings.HasPrefix(err.Error(), "drop user") { |
| 321 | _ = postgresqlRepo.Update(db.ID, map[string]interface{}{"is_delete": true}) |
| 322 | } |
| 323 | return err |
| 324 | } |
| 325 | |
| 326 | if req.DeleteBackup { |
| 327 | uploadDir := path.Join(global.Dir.DataDir, fmt.Sprintf("uploads/database/%s/%s/%s", req.Type, req.Database, db.Name)) |
| 328 | if _, err := os.Stat(uploadDir); err == nil { |
| 329 | _ = os.RemoveAll(uploadDir) |
| 330 | } |
| 331 | backupDir := path.Join(global.Dir.LocalBackupDir, fmt.Sprintf("database/%s/%s/%s", req.Type, db.PostgresqlName, db.Name)) |
| 332 | if _, err := os.Stat(backupDir); err == nil { |
| 333 | _ = os.RemoveAll(backupDir) |
| 334 | } |
| 335 | _ = backupRepo.DeleteRecord(ctx, repo.WithByType(req.Type), repo.WithByName(req.Database), repo.WithByDetailName(db.Name)) |
| 336 | global.LOG.Infof("delete database %s-%s backups successful", req.Database, db.Name) |
| 337 | } |
| 338 | |
| 339 | _ = postgresqlRepo.Delete(ctx, repo.WithByID(db.ID)) |
| 340 | return nil |
| 341 | } |
| 342 | |
| 343 | func (u *PostgresqlService) ChangePrivileges(req dto.PostgresqlPrivileges) error { |
| 344 | if cmd.CheckIllegal(req.Database, req.Username) { |
nothing calls this directly
no test coverage detected