From d50a15be905456864369f27e05f79431308a656a Mon Sep 17 00:00:00 2001 From: viktorstrate Date: Tue, 11 Feb 2020 23:35:35 +0100 Subject: [PATCH] Work on scanner + add launch.json for vscode --- api/.vscode/launch.json | 18 ++++++++++++++++++ api/routes/photos.go | 7 ++++--- api/scanner/process_image.go | 11 ++++++++++- 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 api/.vscode/launch.json diff --git a/api/.vscode/launch.json b/api/.vscode/launch.json new file mode 100644 index 00000000..5e7748db --- /dev/null +++ b/api/.vscode/launch.json @@ -0,0 +1,18 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Launch Server", + "type": "go", + "request": "launch", + "mode": "auto", + "program": "${workspaceRoot}/server/server.go", + "cwd": "${workspaceRoot}", + "env": {}, + "args": [] + } + ] +} diff --git a/api/routes/photos.go b/api/routes/photos.go index cee6014f..8169ab9b 100644 --- a/api/routes/photos.go +++ b/api/routes/photos.go @@ -16,14 +16,15 @@ func PhotoRoutes(db *sql.DB) chi.Router { router.Get("/{name}", func(w http.ResponseWriter, r *http.Request) { image_name := chi.URLParam(r, "name") - row := db.QueryRow("SELECT photo_url.purpose, photo.path, photo.album_id, photo_url.content_type FROM photo_url, photo WHERE photo_url.photo_name = ? AND photo_url.photo_id = photo.photo_id", image_name) + row := db.QueryRow("SELECT photo_url.purpose, photo.path, photo.photo_id, photo.album_id, photo_url.content_type FROM photo_url, photo WHERE photo_url.photo_name = ? AND photo_url.photo_id = photo.photo_id", image_name) var purpose models.PhotoPurpose var path string var content_type string var album_id int + var photo_id int - if err := row.Scan(&purpose, &path, &album_id, &content_type); err != nil { + if err := row.Scan(&purpose, &path, &photo_id, &album_id, &content_type); err != nil { w.WriteHeader(http.StatusNotFound) w.Write([]byte("404")) return @@ -35,7 +36,7 @@ func PhotoRoutes(db *sql.DB) chi.Router { if purpose == models.PhotoThumbnail { var err error - file, err = os.Open(fmt.Sprintf("./image-cache/%d/%s", album_id, image_name)) + file, err = os.Open(fmt.Sprintf("./image-cache/%d/%d/%s", album_id, photo_id, image_name)) if err != nil { w.Write([]byte("Error: " + err.Error())) return diff --git a/api/scanner/process_image.go b/api/scanner/process_image.go index 4783134b..e1cfa3b9 100644 --- a/api/scanner/process_image.go +++ b/api/scanner/process_image.go @@ -97,13 +97,22 @@ func ProcessImage(tx *sql.Tx, photoPath string, albumId int, content_type string } } + // Make photo cache dir + photoCachePath := path.Join(albumCachePath, strconv.Itoa(int(photo_id))) + if _, err := os.Stat(photoCachePath); os.IsNotExist(err) { + if err := os.Mkdir(photoCachePath, os.ModePerm); err != nil { + log.Println("ERROR: Could not make photo image cache directory") + return err + } + } + // Save thumbnail as jpg thumbnail_name := fmt.Sprintf("thumbnail_%s_%s", photoName, utils.GenerateToken()) thumbnail_name = strings.ReplaceAll(thumbnail_name, ".", "_") thumbnail_name = strings.ReplaceAll(thumbnail_name, " ", "_") thumbnail_name = thumbnail_name + ".jpg" - photo_file, err = os.Create(path.Join(albumCachePath, thumbnail_name)) + photo_file, err = os.Create(path.Join(photoCachePath, thumbnail_name)) if err != nil { log.Println("ERROR: Could not make thumbnail file") return err