support /v1/get_files_in_folder return folder path

This commit is contained in:
2022-11-03 01:21:25 +08:00
parent 2b4bbdf25e
commit 857a5e9dd9
4 changed files with 13 additions and 10 deletions

View File

@@ -14,7 +14,8 @@ type GetFilesInFolderRequest struct {
} }
type GetFilesInFolderResponse 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) { 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 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 { if err != nil {
api.HandleError(w, r, err) api.HandleError(w, r, err)
return return
} }
getFilesInFolderResponse := &GetFilesInFolderResponse{ getFilesInFolderResponse := &GetFilesInFolderResponse{
Files: &files, Files: &files,
Folder: folder,
} }
log.Println("[api] Get files in folder", getFilesInFolderRequest.Folder_id) log.Println("[api] Get files in folder", getFilesInFolderRequest.Folder_id)

View File

@@ -53,28 +53,29 @@ func (database *Database) GetRandomFilesWithTag(tagID, limit int64) ([]File, err
return files, nil 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() database.singleThreadLock.Lock()
defer database.singleThreadLock.Unlock() defer database.singleThreadLock.Unlock()
rows, err := database.stmt.getFilesInFolder.Query(folder_id, limit, offset) rows, err := database.stmt.getFilesInFolder.Query(folder_id, limit, offset)
if err != nil { if err != nil {
return nil, err return nil, "", err
} }
defer rows.Close() defer rows.Close()
files := make([]File, 0) files := make([]File, 0)
folder := ""
for rows.Next() { for rows.Next() {
file := File{ file := File{
Db: database, Db: database,
Folder_id: folder_id, 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 { if err != nil {
return nil, err return nil, "", err
} }
files = append(files, file) files = append(files, file)
} }
return files, nil return files, folder, nil
} }
func (database *Database) SearchFolders(foldername string, limit int64, offset int64) ([]Folder, error) { func (database *Database) SearchFolders(foldername string, limit int64, offset int64) ([]Folder, error) {

View File

@@ -150,7 +150,7 @@ ORDER BY foldername
LIMIT ? OFFSET ?;` LIMIT ? OFFSET ?;`
var getFilesInFolderQuery = `SELECT var getFilesInFolderQuery = `SELECT
files.id, files.filename, files.filesize, folders.foldername files.id, files.filename, files.filesize, folders.foldername, folders.folder
FROM files FROM files
JOIN folders ON files.folder_id = folders.id JOIN folders ON files.folder_id = folders.id
WHERE folder_id = ? WHERE folder_id = ?

View File

@@ -17,7 +17,7 @@ type File struct {
type Folder struct { type Folder struct {
Db *Database `json:"-"` Db *Database `json:"-"`
ID int64 `json:"id"` ID int64 `json:"id"`
Folder string `json:"-"` Folder string `json:"folder"`
Foldername string `json:"foldername"` Foldername string `json:"foldername"`
} }