Skip to content

Commit d07cf6d

Browse files
13791379
authored andcommitted
fix: backup site
1 parent 7b42511 commit d07cf6d

File tree

4 files changed

+45
-22
lines changed

4 files changed

+45
-22
lines changed

handler/admin/backup.go

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,45 +28,58 @@ func NewBackupHandler(backupService service.BackupService) *BackupHandler {
2828
}
2929

3030
func (b *BackupHandler) GetWorkDirBackup(ctx *gin.Context) (interface{}, error) {
31-
filename, err := util.ParamString(ctx, "filename")
31+
filename, err := util.MustGetQueryString(ctx, "filename")
3232
if err != nil {
3333
return nil, err
3434
}
3535
return b.BackupService.GetBackup(ctx, filepath.Join(config.BackupDir, filename), service.WholeSite)
3636
}
3737

3838
func (b *BackupHandler) GetDataBackup(ctx *gin.Context) (interface{}, error) {
39-
filename, err := util.ParamString(ctx, "filename")
39+
filename, err := util.MustGetQueryString(ctx, "filename")
4040
if err != nil {
4141
return nil, err
4242
}
4343
return b.BackupService.GetBackup(ctx, filepath.Join(config.DataExportDir, filename), service.JsonData)
4444
}
4545

4646
func (b *BackupHandler) GetMarkDownBackup(ctx *gin.Context) (interface{}, error) {
47-
filename, err := util.ParamString(ctx, "filename")
47+
filename, err := util.MustGetQueryString(ctx, "filename")
4848
if err != nil {
4949
return nil, err
5050
}
5151
return b.BackupService.GetBackup(ctx, filepath.Join(config.BackupMarkdownDir, filename), service.Markdown)
5252
}
5353

5454
func (b *BackupHandler) BackupWholeSite(ctx *gin.Context) (interface{}, error) {
55-
return b.BackupService.BackupWholeSite(ctx)
55+
toBackupItems := make([]string, 0)
56+
err := ctx.ShouldBindJSON(&toBackupItems)
57+
if err != nil {
58+
if e, ok := err.(validator.ValidationErrors); ok {
59+
return nil, xerr.WithStatus(e, xerr.StatusBadRequest).WithMsg(trans.Translate(e))
60+
}
61+
return nil, xerr.WithStatus(err, xerr.StatusBadRequest)
62+
}
63+
64+
return b.BackupService.BackupWholeSite(ctx, toBackupItems)
5665
}
5766

5867
func (b *BackupHandler) ListBackups(ctx *gin.Context) (interface{}, error) {
5968
return b.BackupService.ListFiles(ctx, config.BackupDir, service.WholeSite)
6069
}
6170

71+
func (b *BackupHandler) ListToBackupItems(ctx *gin.Context) (interface{}, error) {
72+
return b.BackupService.ListToBackupItems(ctx)
73+
}
74+
6275
func (b *BackupHandler) HandleWorkDir(ctx *gin.Context) {
6376
path := ctx.Request.URL.Path
6477
if path == "/api/admin/backups/work-dir/fetch" {
6578
wrapHandler(b.GetWorkDirBackup)(ctx)
6679
return
6780
}
68-
if path == "/api/admin/backups/work-dir" || path == "/api/admin/backups/work-dir/" {
69-
wrapHandler(b.ListBackups)(ctx)
81+
if path == "/api/admin/backups/work-dir/options" || path == "/api/admin/backups/work-dir/options/" {
82+
wrapHandler(b.ListToBackupItems)(ctx)
7083
return
7184
}
7285
b.DownloadBackups(ctx)
@@ -91,7 +104,7 @@ func (b *BackupHandler) DownloadBackups(ctx *gin.Context) {
91104
}
92105

93106
func (b *BackupHandler) DeleteBackups(ctx *gin.Context) (interface{}, error) {
94-
filename, err := util.ParamString(ctx, "filename")
107+
filename, err := util.MustGetQueryString(ctx, "filename")
95108
if err != nil {
96109
return nil, err
97110
}
@@ -169,7 +182,7 @@ func (b *BackupHandler) ListMarkdowns(ctx *gin.Context) (interface{}, error) {
169182
}
170183

171184
func (b *BackupHandler) DeleteMarkdowns(ctx *gin.Context) (interface{}, error) {
172-
filename, err := util.ParamString(ctx, "filename")
185+
filename, err := util.MustGetQueryString(ctx, "filename")
173186
if err != nil {
174187
return nil, err
175188
}

handler/route.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ func (s *Server) RegisterRouters() {
7474
{
7575
backupRouter := authRouter.Group("/backups")
7676
backupRouter.POST("/work-dir", s.wrapHandler(s.BackupHandler.BackupWholeSite))
77+
backupRouter.GET("/work-dir", s.wrapHandler(s.BackupHandler.ListBackups))
7778
backupRouter.GET("/work-dir/*path", s.BackupHandler.HandleWorkDir)
7879
backupRouter.DELETE("/work-dir", s.wrapHandler(s.BackupHandler.DeleteBackups))
7980
backupRouter.POST("/data", s.wrapHandler(s.BackupHandler.ExportData))
@@ -352,11 +353,6 @@ func (s *Server) registerDynamicRouters(contentRouter *gin.RouterGroup) error {
352353
ctx = dal.SetCtxQuery(ctx, dal.GetQueryByCtx(ctx).ReplaceDB(dal.GetDB().Session(
353354
&gorm.Session{Logger: dal.DB.Logger.LogMode(logger.Warn)},
354355
)))
355-
// theme, err := s.ThemeService.GetActivateTheme(ctx)
356-
// if err != nil {
357-
// return nil
358-
// }
359-
// s.Router.StaticFS("/themes/"+theme.FolderName, gin.Dir(theme.ThemePath, false))
360356

361357
archivePath, err := s.OptionService.GetArchivePrefix(ctx)
362358
if err != nil {

service/backup.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ type BackupService interface {
1111
// GetBackup Get backup data by backup file name.
1212
GetBackup(ctx context.Context, filename string, backupType BackupType) (*dto.BackupDTO, error)
1313
// BackupWholeSite Zips work directory
14-
BackupWholeSite(ctx context.Context) (*dto.BackupDTO, error)
14+
BackupWholeSite(ctx context.Context, toBackupItems []string) (*dto.BackupDTO, error)
1515
// ListFiles list all files under path
1616
ListFiles(ctx context.Context, path string, backupType BackupType) ([]*dto.BackupDTO, error)
1717
// GetBackupFilePath get filepath and check if the file exist
@@ -24,6 +24,7 @@ type BackupService interface {
2424
ImportMarkdown(ctx context.Context, fileHeader *multipart.FileHeader) error
2525
// ExportMarkdown export posts to markdown files
2626
ExportMarkdown(ctx context.Context, needFrontMatter bool) (*dto.BackupDTO, error)
27+
ListToBackupItems(ctx context.Context) ([]string, error)
2728
}
2829

2930
type BackupType string

service/impl/backup.go

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,10 @@ func (b *backupServiceImpl) GetBackup(ctx context.Context, filepath string, back
4646
return b.buildBackupDTO(ctx, string(backupType), filepath)
4747
}
4848

49-
func (b *backupServiceImpl) BackupWholeSite(ctx context.Context) (*dto.BackupDTO, error) {
49+
func (b *backupServiceImpl) BackupWholeSite(ctx context.Context, toBackupItems []string) (*dto.BackupDTO, error) {
5050
backupFilename := consts.SonicBackupPrefix + time.Now().Format("2006-01-02-15-04-05") + util.GenUUIDWithOutDash() + ".zip"
5151
backupFilePath := config.BackupDir
52+
5253
if _, err := os.Stat(backupFilePath); os.IsNotExist(err) {
5354
err = os.MkdirAll(backupFilePath, os.ModePerm)
5455
if err != nil {
@@ -57,17 +58,16 @@ func (b *backupServiceImpl) BackupWholeSite(ctx context.Context) (*dto.BackupDTO
5758
} else if err != nil {
5859
return nil, xerr.NoType.Wrap(err).WithMsg("get fileInfo")
5960
}
61+
6062
backupFile := filepath.Join(backupFilePath, backupFilename)
6163

62-
toBackupPath := []string{b.Config.Sonic.WorkDir}
63-
if !strings.Contains(b.Config.Sonic.LogDir, b.Config.Sonic.WorkDir) {
64-
toBackupPath = append(toBackupPath, b.Config.Sonic.LogDir)
65-
}
66-
if !strings.Contains(b.Config.Sonic.TemplateDir, b.Config.Sonic.WorkDir) {
67-
toBackupPath = append(toBackupPath, b.Config.Sonic.TemplateDir)
64+
toBackupPaths := []string{}
65+
for _, toBackupItem := range toBackupItems {
66+
toBackupPath := filepath.Join(b.Config.Sonic.WorkDir, toBackupItem)
67+
toBackupPaths = append(toBackupPaths, toBackupPath)
6868
}
6969

70-
err := util.ZipFile(backupFile, toBackupPath...)
70+
err := util.ZipFile(backupFile, toBackupPaths...)
7171
if err != nil {
7272
return nil, err
7373
}
@@ -256,3 +256,16 @@ func fillData(dataMap map[string]interface{}, item string, f interface{}, preErr
256256
}
257257
return nil
258258
}
259+
260+
func (b *backupServiceImpl) ListToBackupItems(ctx context.Context) ([]string, error) {
261+
dirEntrys, err := os.ReadDir(b.Config.Sonic.WorkDir)
262+
if err != nil {
263+
return nil, xerr.WithStatus(err, xerr.StatusInternalServerError).WithMsg("read work dir err")
264+
}
265+
266+
result := make([]string, 0)
267+
for _, dirEntry := range dirEntrys {
268+
result = append(result, dirEntry.Name())
269+
}
270+
return result, nil
271+
}

0 commit comments

Comments
 (0)