Skip to content
This repository was archived by the owner on Aug 3, 2024. It is now read-only.

Commit 6dd262b

Browse files
authored
refactor: adjustments to bernard and webhooks (#48)
* fix(triggers/bernard): add addedfolders to diff folders result * refactor(triggers/bernard): wrap getFolder error responses for additional context * refactor(triggers/bernard): add removed folders to diff folder map * ci: remove artifact cleaner * refactor(triggers/bernard): show drive name in logs * refactor(triggers): case insensitive event type
1 parent 57455d0 commit 6dd262b

File tree

7 files changed

+43
-29
lines changed

7 files changed

+43
-29
lines changed

.github/workflows/artifact.yml

Lines changed: 0 additions & 18 deletions
This file was deleted.

triggers/bernard/bernard.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,5 +375,10 @@ func (d daemon) getScanTask(drive *drive, paths *Paths) *scanTask {
375375
}
376376

377377
func (d daemon) withDriveLog(driveID string) zerolog.Logger {
378-
return d.log.With().Str("drive_id", driveID).Logger()
378+
drive, err := d.store.GetDrive(driveID)
379+
if err != nil {
380+
return d.log.With().Str("drive_id", driveID).Logger()
381+
}
382+
383+
return d.log.With().Str("drive_id", driveID).Str("drive_name", drive.Name).Logger()
379384
}

triggers/bernard/datastore.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,23 @@ func (d *bds) GetFolder(driveID string, folderID string) (*datastore.Folder, err
5151

5252
return f, nil
5353
}
54+
55+
const sqlSelectDrive = `SELECT d.id, f.name, d.pageToken FROM drive d JOIN folder f ON f.id = d.id WHERE d.id = $1 LIMIT 1`
56+
57+
func (d *bds) GetDrive(driveID string) (*datastore.Drive, error) {
58+
drv := new(datastore.Drive)
59+
60+
row := d.DB.QueryRow(sqlSelectDrive, driveID)
61+
err := row.Scan(&drv.ID, &drv.Name, &drv.PageToken)
62+
63+
switch {
64+
case errors.Is(err, sql.ErrNoRows):
65+
return nil, fmt.Errorf("%v: drive not found: %w", driveID, sql.ErrNoRows)
66+
case err != nil:
67+
return nil, err
68+
default:
69+
break
70+
}
71+
72+
return drv, nil
73+
}

triggers/bernard/paths.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ func getDiffFolderMaps(diff *sqlite.Difference) *diffFolderMaps {
7272
oldFolders[f.Old.ID] = diff.ChangedFolders[i].Old
7373
}
7474

75+
for i, f := range diff.RemovedFolders {
76+
oldFolders[f.ID] = diff.RemovedFolders[i]
77+
}
78+
7579
return &diffFolderMaps{
7680
Current: currentFolders,
7781
Old: oldFolders,
@@ -105,7 +109,7 @@ func getDiffFolders(store *bds, driveId string, diff *sqlite.Difference) (*Paren
105109
for _, file := range diff.AddedFiles {
106110
folder, err := getFolder(store, driveId, file.Parent, folderMaps.Current)
107111
if err != nil {
108-
return nil, err
112+
return nil, fmt.Errorf("added file: %w", err)
109113
}
110114

111115
newParents[folder.ID] = *folder
@@ -116,15 +120,15 @@ func getDiffFolders(store *bds, driveId string, diff *sqlite.Difference) (*Paren
116120
// current
117121
currentFolder, err := getFolder(store, driveId, file.New.Parent, folderMaps.Current)
118122
if err != nil {
119-
return nil, err
123+
return nil, fmt.Errorf("changed new file: %w", err)
120124
}
121125

122126
newParents[currentFolder.ID] = *currentFolder
123127

124128
// old
125129
oldFolder, err := getFolder(store, driveId, file.Old.Parent, folderMaps.Old)
126130
if err != nil {
127-
return nil, err
131+
return nil, fmt.Errorf("changed old file: %w", err)
128132
}
129133

130134
oldParents[oldFolder.ID] = *oldFolder
@@ -134,7 +138,7 @@ func getDiffFolders(store *bds, driveId string, diff *sqlite.Difference) (*Paren
134138
for _, file := range diff.RemovedFiles {
135139
oldFolder, err := getFolder(store, driveId, file.Parent, folderMaps.Old)
136140
if err != nil {
137-
return nil, err
141+
return nil, fmt.Errorf("removed file: %w", err)
138142
}
139143

140144
oldParents[oldFolder.ID] = *oldFolder

triggers/lidarr/lidarr.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"encoding/json"
55
"net/http"
66
"path"
7+
"strings"
78
"time"
89

910
"github.com/cloudbox/autoscan"
@@ -64,13 +65,13 @@ func (h handler) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
6465

6566
l.Trace().Interface("event", event).Msg("Received JSON body")
6667

67-
if event.Type == "Test" {
68+
if strings.EqualFold(event.Type, "Test") {
6869
l.Debug().Msg("Received test event")
6970
rw.WriteHeader(http.StatusOK)
7071
return
7172
}
7273

73-
if event.Type != "Download" || len(event.Files) == 0 {
74+
if !strings.EqualFold(event.Type, "Download") || len(event.Files) == 0 {
7475
l.Error().Msg("Required fields are missing")
7576
rw.WriteHeader(http.StatusBadRequest)
7677
return

triggers/radarr/radarr.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"encoding/json"
55
"net/http"
66
"path"
7+
"strings"
78
"time"
89

910
"github.com/cloudbox/autoscan"
@@ -68,13 +69,13 @@ func (h handler) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
6869

6970
rlog.Trace().Interface("event", event).Msg("Received JSON body")
7071

71-
if event.Type == "Test" {
72+
if strings.EqualFold(event.Type, "Test") {
7273
rlog.Debug().Msg("Received test event")
7374
rw.WriteHeader(http.StatusOK)
7475
return
7576
}
7677

77-
if event.Type != "Download" || event.File.RelativePath == "" || event.Movie.FolderPath == "" {
78+
if !strings.EqualFold(event.Type, "Download") || event.File.RelativePath == "" || event.Movie.FolderPath == "" {
7879
rlog.Error().Msg("Required fields are missing")
7980
rw.WriteHeader(http.StatusBadRequest)
8081
return

triggers/sonarr/sonarr.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"encoding/json"
55
"net/http"
66
"path"
7+
"strings"
78
"time"
89

910
"github.com/cloudbox/autoscan"
@@ -68,13 +69,13 @@ func (h handler) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
6869

6970
rlog.Trace().Interface("event", event).Msg("Received JSON body")
7071

71-
if event.Type == "Test" {
72+
if strings.EqualFold(event.Type, "Test") {
7273
rlog.Debug().Msg("Received test event")
7374
rw.WriteHeader(http.StatusOK)
7475
return
7576
}
7677

77-
if event.Type != "Download" || event.File.RelativePath == "" || event.Series.Path == "" {
78+
if !strings.EqualFold(event.Type, "Download") || event.File.RelativePath == "" || event.Series.Path == "" {
7879
rlog.Error().Msg("Required fields are missing")
7980
rw.WriteHeader(http.StatusBadRequest)
8081
return

0 commit comments

Comments
 (0)