diff --git a/api/api.go b/api/api.go index 398db4b..c5156c2 100644 --- a/api/api.go +++ b/api/api.go @@ -2,7 +2,6 @@ package api import ( "context" - "errors" "fmt" "net/http" "os" @@ -173,7 +172,7 @@ func getSession(app *model.AppState, r *http.Request) (*model.Session, error) { // check cookies first sessionCookie, err := r.Cookie(model.COOKIE_TOKEN) if err != nil && err != http.ErrNoCookie { - return nil, errors.New(fmt.Sprintf("Failed to retrieve session cookie: %v\n", err)) + return nil, fmt.Errorf("Failed to retrieve session cookie: %v\n", err) } if sessionCookie != nil { token = sessionCookie.Value @@ -188,7 +187,7 @@ func getSession(app *model.AppState, r *http.Request) (*model.Session, error) { session, err := controller.GetSession(app.DB, token) if err != nil && !strings.Contains(err.Error(), "no rows") { - return nil, errors.New(fmt.Sprintf("Failed to retrieve session: %v\n", err)) + return nil, fmt.Errorf("Failed to retrieve session: %v\n", err) } if session != nil { diff --git a/api/uploads.go b/api/uploads.go index 4678f22..3c3c58a 100644 --- a/api/uploads.go +++ b/api/uploads.go @@ -50,7 +50,7 @@ func HandleImageUpload(app *model.AppState, data *string, directory string, file return "", nil } - app.Log.Info(log.TYPE_FILES, "\"%s/%s.%s\" created.", directory, filename, ext) + app.Log.Info(log.TYPE_FILES, "\"%s\" created.", imagePath) return filename, nil } diff --git a/controller/migrator.go b/controller/migrator.go index 4b99b9c..1a70e62 100644 --- a/controller/migrator.go +++ b/controller/migrator.go @@ -1,14 +1,15 @@ package controller import ( - "fmt" - "os" - "time" + "embed" + "fmt" + "os" + "time" - "github.com/jmoiron/sqlx" + "github.com/jmoiron/sqlx" ) -const DB_VERSION int = 4 +const DB_VERSION int = 5 func CheckDBVersionAndMigrate(db *sqlx.DB) { db.MustExec("CREATE SCHEMA IF NOT EXISTS arimelody") @@ -49,16 +50,23 @@ func CheckDBVersionAndMigrate(db *sqlx.DB) { ApplyMigration(db, "003-fail-lock") oldDBVersion = 4 + case 4: + ApplyMigration(db, "004-test") + oldDBVersion = 5 + } } fmt.Printf("Database schema up to date.\n") } +//go:embed "schema-migration" +var schemaFS embed.FS + func ApplyMigration(db *sqlx.DB, scriptFile string) { fmt.Printf("Applying schema migration %s...\n", scriptFile) - bytes, err := os.ReadFile("schema-migration/" + scriptFile + ".sql") + bytes, err := schemaFS.ReadFile("schema-migration/" + scriptFile + ".sql") if err != nil { fmt.Fprintf(os.Stderr, "FATAL: Failed to open schema file \"%s\": %v\n", scriptFile, err) os.Exit(1) diff --git a/controller/qr.go b/controller/qr.go index dd08637..21ed3e6 100644 --- a/controller/qr.go +++ b/controller/qr.go @@ -2,8 +2,8 @@ package controller import ( "encoding/base64" - "image" - "image/color" + // "image" + // "image/color" "github.com/skip2/go-qrcode" ) @@ -18,36 +18,35 @@ func GenerateQRCode(data string) (string, error) { } // vvv DEPRECATED vvv - -const margin = 4 - -type QRCodeECCLevel int64 -const ( - LOW QRCodeECCLevel = iota - MEDIUM - QUARTILE - HIGH -) - -func drawLargeAlignmentSquare(x int, y int, img *image.Gray) { - for yi := range 7 { - for xi := range 7 { - if (xi == 0 || xi == 6) || (yi == 0 || yi == 6) { - img.Set(x + xi, y + yi, color.Black) - } else if (xi > 1 && xi < 5) && (yi > 1 && yi < 5) { - img.Set(x + xi, y + yi, color.Black) - } - } - } -} - -func drawSmallAlignmentSquare(x int, y int, img *image.Gray) { - for yi := range 5 { - for xi := range 5 { - if (xi == 0 || xi == 4) || (yi == 0 || yi == 4) { - img.Set(x + xi, y + yi, color.Black) - } - } - } - img.Set(x + 2, y + 2, color.Black) -} +// const margin = 4 +// +// type QRCodeECCLevel int64 +// const ( +// LOW QRCodeECCLevel = iota +// MEDIUM +// QUARTILE +// HIGH +// ) +// +// func drawLargeAlignmentSquare(x int, y int, img *image.Gray) { +// for yi := range 7 { +// for xi := range 7 { +// if (xi == 0 || xi == 6) || (yi == 0 || yi == 6) { +// img.Set(x + xi, y + yi, color.Black) +// } else if (xi > 1 && xi < 5) && (yi > 1 && yi < 5) { +// img.Set(x + xi, y + yi, color.Black) +// } +// } +// } +// } +// +// func drawSmallAlignmentSquare(x int, y int, img *image.Gray) { +// for yi := range 5 { +// for xi := range 5 { +// if (xi == 0 || xi == 4) || (yi == 0 || yi == 4) { +// img.Set(x + xi, y + yi, color.Black) +// } +// } +// } +// img.Set(x + 2, y + 2, color.Black) +// } diff --git a/controller/release.go b/controller/release.go index 3dcad26..afd09fb 100644 --- a/controller/release.go +++ b/controller/release.go @@ -1,7 +1,6 @@ package controller import ( - "errors" "fmt" "arimelody-web/model" @@ -21,7 +20,7 @@ func GetRelease(db *sqlx.DB, id string, full bool) (*model.Release, error) { // get credits credits, err := GetReleaseCredits(db, id) if err != nil { - return nil, errors.New(fmt.Sprintf("Credits: %s", err)) + return nil, fmt.Errorf("Credits: %s", err) } for _, credit := range credits { release.Credits = append(release.Credits, credit) @@ -30,7 +29,7 @@ func GetRelease(db *sqlx.DB, id string, full bool) (*model.Release, error) { // get tracks tracks, err := GetReleaseTracks(db, id) if err != nil { - return nil, errors.New(fmt.Sprintf("Tracks: %s", err)) + return nil, fmt.Errorf("Tracks: %s", err) } for _, track := range tracks { release.Tracks = append(release.Tracks, track) @@ -39,7 +38,7 @@ func GetRelease(db *sqlx.DB, id string, full bool) (*model.Release, error) { // get links links, err := GetReleaseLinks(db, id) if err != nil { - return nil, errors.New(fmt.Sprintf("Links: %s", err)) + return nil, fmt.Errorf("Links: %s", err) } for _, link := range links { release.Links = append(release.Links, link) @@ -71,7 +70,7 @@ func GetAllReleases(db *sqlx.DB, onlyVisible bool, limit int, full bool) ([]*mod // get credits credits, err := GetReleaseCredits(db, release.ID) if err != nil { - return nil, errors.New(fmt.Sprintf("Credits: %s", err)) + return nil, fmt.Errorf("Credits: %s", err) } for _, credit := range credits { release.Credits = append(release.Credits, credit) @@ -81,7 +80,7 @@ func GetAllReleases(db *sqlx.DB, onlyVisible bool, limit int, full bool) ([]*mod // get tracks tracks, err := GetReleaseTracks(db, release.ID) if err != nil { - return nil, errors.New(fmt.Sprintf("Tracks: %s", err)) + return nil, fmt.Errorf("Tracks: %s", err) } for _, track := range tracks { release.Tracks = append(release.Tracks, track) @@ -90,7 +89,7 @@ func GetAllReleases(db *sqlx.DB, onlyVisible bool, limit int, full bool) ([]*mod // get links links, err := GetReleaseLinks(db, release.ID) if err != nil { - return nil, errors.New(fmt.Sprintf("Links: %s", err)) + return nil, fmt.Errorf("Links: %s", err) } for _, link := range links { release.Links = append(release.Links, link) diff --git a/schema-migration/000-init.sql b/controller/schema-migration/000-init.sql similarity index 100% rename from schema-migration/000-init.sql rename to controller/schema-migration/000-init.sql diff --git a/schema-migration/001-pre-versioning.sql b/controller/schema-migration/001-pre-versioning.sql similarity index 100% rename from schema-migration/001-pre-versioning.sql rename to controller/schema-migration/001-pre-versioning.sql diff --git a/schema-migration/002-audit-logs.sql b/controller/schema-migration/002-audit-logs.sql similarity index 100% rename from schema-migration/002-audit-logs.sql rename to controller/schema-migration/002-audit-logs.sql diff --git a/schema-migration/003-fail-lock.sql b/controller/schema-migration/003-fail-lock.sql similarity index 100% rename from schema-migration/003-fail-lock.sql rename to controller/schema-migration/003-fail-lock.sql diff --git a/controller/schema-migration/004-test.sql b/controller/schema-migration/004-test.sql new file mode 100644 index 0000000..3733de2 --- /dev/null +++ b/controller/schema-migration/004-test.sql @@ -0,0 +1 @@ +INSERT INTO arimelody.auditlog (level, type, content) VALUES (0, "test", "this is a db schema migration test!"); diff --git a/controller/session.go b/controller/session.go index 5028789..dfae551 100644 --- a/controller/session.go +++ b/controller/session.go @@ -2,7 +2,6 @@ package controller import ( "database/sql" - "errors" "fmt" "net/http" "strings" @@ -19,7 +18,7 @@ const TOKEN_LEN = 64 func GetSessionFromRequest(app *model.AppState, r *http.Request) (*model.Session, error) { sessionCookie, err := r.Cookie(model.COOKIE_TOKEN) if err != nil && err != http.ErrNoCookie { - return nil, errors.New(fmt.Sprintf("Failed to retrieve session cookie: %v", err)) + return nil, fmt.Errorf("Failed to retrieve session cookie: %v", err) } var session *model.Session @@ -29,7 +28,7 @@ func GetSessionFromRequest(app *model.AppState, r *http.Request) (*model.Session session, err = GetSession(app.DB, sessionCookie.Value) if err != nil && !strings.Contains(err.Error(), "no rows") { - return nil, errors.New(fmt.Sprintf("Failed to retrieve session: %v", err)) + return nil, fmt.Errorf("Failed to retrieve session: %v", err) } if session != nil {