From 857a5e9dd9d2554335835c3afb5692d71e63002b Mon Sep 17 00:00:00 2001 From: heimoshuiyu Date: Thu, 3 Nov 2022 01:21:25 +0800 Subject: [PATCH] support /v1/get_files_in_folder return folder path --- pkg/api/handle_get_files_in_folder.go | 8 +++++--- pkg/database/method.go | 11 ++++++----- pkg/database/sql_stmt.go | 2 +- pkg/database/struct.go | 2 +- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/pkg/api/handle_get_files_in_folder.go b/pkg/api/handle_get_files_in_folder.go index 2ca6e05..241e0eb 100644 --- a/pkg/api/handle_get_files_in_folder.go +++ b/pkg/api/handle_get_files_in_folder.go @@ -14,7 +14,8 @@ type GetFilesInFolderRequest struct { } type GetFilesInFolderResponse struct { - Files *[]database.File `json:"files"` + Files *[]database.File `json:"files"` + Folder string `json:"folder"` } func (api *API) HandleGetFilesInFolder(w http.ResponseWriter, r *http.Request) { @@ -34,14 +35,15 @@ func (api *API) HandleGetFilesInFolder(w http.ResponseWriter, r *http.Request) { return } - files, err := api.Db.GetFilesInFolder(getFilesInFolderRequest.Folder_id, getFilesInFolderRequest.Limit, getFilesInFolderRequest.Offset) + files, folder, err := api.Db.GetFilesInFolder(getFilesInFolderRequest.Folder_id, getFilesInFolderRequest.Limit, getFilesInFolderRequest.Offset) if err != nil { api.HandleError(w, r, err) return } getFilesInFolderResponse := &GetFilesInFolderResponse{ - Files: &files, + Files: &files, + Folder: folder, } log.Println("[api] Get files in folder", getFilesInFolderRequest.Folder_id) diff --git a/pkg/database/method.go b/pkg/database/method.go index 9c14340..bd60571 100644 --- a/pkg/database/method.go +++ b/pkg/database/method.go @@ -53,28 +53,29 @@ func (database *Database) GetRandomFilesWithTag(tagID, limit int64) ([]File, err return files, nil } -func (database *Database) GetFilesInFolder(folder_id int64, limit int64, offset int64) ([]File, error) { +func (database *Database) GetFilesInFolder(folder_id int64, limit int64, offset int64) ([]File, string, error) { database.singleThreadLock.Lock() defer database.singleThreadLock.Unlock() rows, err := database.stmt.getFilesInFolder.Query(folder_id, limit, offset) if err != nil { - return nil, err + return nil, "", err } defer rows.Close() files := make([]File, 0) + folder := "" for rows.Next() { file := File{ Db: database, Folder_id: folder_id, } - err = rows.Scan(&file.ID, &file.Filename, &file.Filesize, &file.Foldername) + err = rows.Scan(&file.ID, &file.Filename, &file.Filesize, &file.Foldername, &folder) if err != nil { - return nil, err + return nil, "", err } files = append(files, file) } - return files, nil + return files, folder, nil } func (database *Database) SearchFolders(foldername string, limit int64, offset int64) ([]Folder, error) { diff --git a/pkg/database/sql_stmt.go b/pkg/database/sql_stmt.go index f01e5a3..e297eaf 100644 --- a/pkg/database/sql_stmt.go +++ b/pkg/database/sql_stmt.go @@ -150,7 +150,7 @@ ORDER BY foldername LIMIT ? OFFSET ?;` var getFilesInFolderQuery = `SELECT -files.id, files.filename, files.filesize, folders.foldername +files.id, files.filename, files.filesize, folders.foldername, folders.folder FROM files JOIN folders ON files.folder_id = folders.id WHERE folder_id = ? diff --git a/pkg/database/struct.go b/pkg/database/struct.go index d33accf..35d6423 100644 --- a/pkg/database/struct.go +++ b/pkg/database/struct.go @@ -17,7 +17,7 @@ type File struct { type Folder struct { Db *Database `json:"-"` ID int64 `json:"id"` - Folder string `json:"-"` + Folder string `json:"folder"` Foldername string `json:"foldername"` }