X-Git-Url: https://git.jacobcasper.com/?p=brackets.git;a=blobdiff_plain;f=main.go;h=b59a6274603d47bd0707c614b95eec0ee2e875bb;hp=f0fb3acca9526a40bcbbab5518649fd2cb75a5f6;hb=eac0dfd66703dffd39c925fdba612f8aceb7b510;hpb=2f5373e70d68008c2fbd0deeef305b624434f59a diff --git a/main.go b/main.go index f0fb3ac..b59a627 100644 --- a/main.go +++ b/main.go @@ -2,71 +2,24 @@ package main import ( "git.jacobcasper.com/brackets/env" + "git.jacobcasper.com/brackets/routes/artist" + "git.jacobcasper.com/brackets/routes/genre" _ "github.com/mattn/go-sqlite3" - "github.com/zmb3/spotify" "log" "net/http" ) -type handler func(http.ResponseWriter, *http.Request) - func main() { env, err := env.New() if err != nil { log.Fatal("Could not set up Env: ", err.Error()) } - http.HandleFunc( - "/artist/add", - artistAddHandler(env), - ) - - log.Fatal(http.ListenAndServe(":8080", nil)) -} - -func artistAddHandler(env *env.Env) handler { - return func(w http.ResponseWriter, r *http.Request) { - if r.Method != "POST" { - http.Error(w, http.StatusText(http.StatusMethodNotAllowed), http.StatusMethodNotAllowed) - return - } - - r.ParseForm() - artistId := r.PostForm.Get("id") + http.HandleFunc("/artist/", artist.Index(env)) + http.HandleFunc("/artist/genre", artist.ByGenre(env)) + http.HandleFunc("/artist/add", artist.Add(env)) - if artistId == "" { - http.Error(w, http.StatusText(http.StatusBadRequest), http.StatusBadRequest) - return - } + http.HandleFunc("/genre", genre.Index(env)) - artist, err := env.C.GetArtist(spotify.ID(artistId)) - if err != nil { - log.Printf("Failed to retrieve artist %s: %s", artistId, err.Error()) - http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) - return - } - - env.Db.Mu.Lock() - defer env.Db.Mu.Unlock() - env.Db.Db.Exec("INSERT INTO ARTIST (ID, NAME) VALUES (?, ?)", artist.ID, artist.Name) - - for _, genre := range artist.Genres { - result, err := env.Db.Db.Exec("REPLACE INTO GENRE (NAME) VALUES (?)", genre) - if err != nil { - log.Printf("Failed to insert genre %s: %s", genre, err.Error()) - http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) - return - } - - genreId, err := result.LastInsertId() - if err != nil { - log.Print("Failed to retrieve last insert id: ", err.Error()) - http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) - return - } - - env.Db.Db.Exec("INSERT INTO ARTIST_GENRE_XREF (ARTIST_ID, GENRE_ID) VALUES (?, ?)", artist.ID, genreId) - } - w.WriteHeader(http.StatusCreated) - } + log.Fatal(http.ListenAndServe(":8080", nil)) }