Compare commits

..

No commits in common. "main" and "feature/database" have entirely different histories.

4 changed files with 11 additions and 42 deletions

View File

@ -12,7 +12,6 @@ import (
"github.com/jackc/pgx/v5/pgxpool" "github.com/jackc/pgx/v5/pgxpool"
"github.com/joho/godotenv" "github.com/joho/godotenv"
"michaelthomson.dev/mthomson/go-todos-app/handlers" "michaelthomson.dev/mthomson/go-todos-app/handlers"
"michaelthomson.dev/mthomson/go-todos-app/middleware"
"michaelthomson.dev/mthomson/go-todos-app/repositories" "michaelthomson.dev/mthomson/go-todos-app/repositories"
"michaelthomson.dev/mthomson/go-todos-app/services" "michaelthomson.dev/mthomson/go-todos-app/services"
) )
@ -130,8 +129,8 @@ func main() {
router.HandleFunc("PATCH /todos/{id}/undone", todoHandler.Undone) router.HandleFunc("PATCH /todos/{id}/undone", todoHandler.Undone)
server := http.Server{ server := http.Server{
Addr: ":3000", Addr: "localhost:3000",
Handler: middleware.LoggingMiddleware(router), Handler: router,
} }
log.Fatal(server.ListenAndServe()) log.Fatal(server.ListenAndServe())

View File

@ -1,31 +0,0 @@
package middleware
import (
"log"
"net/http"
"time"
)
type wrappedWriter struct {
http.ResponseWriter
statusCode int
}
func (w * wrappedWriter) WriteHeader(statusCode int) {
w.ResponseWriter.WriteHeader(statusCode)
w.statusCode = statusCode
}
func LoggingMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
start := time.Now()
wrapped := &wrappedWriter{
ResponseWriter: w,
statusCode: http.StatusOK,
}
next.ServeHTTP(wrapped, r)
log.Println(wrapped.statusCode, r.Method, r.URL.Path, time.Since(start))
})
}

View File

@ -18,7 +18,7 @@ func (ts *PostgresTodoRepository) List() ([]models.Todo, error) {
rows, err := ts.db.Query(context.Background(), "SELECT id, name, done FROM todo") rows, err := ts.db.Query(context.Background(), "SELECT id, name, done FROM todo")
if err != nil { if err != nil {
log.Printf("Database error: %v", err) log.Fatal(err)
return todos, err return todos, err
} }
@ -26,6 +26,7 @@ func (ts *PostgresTodoRepository) List() ([]models.Todo, error) {
var r models.Todo var r models.Todo
err := rows.Scan(&r.Id, &r.Name, &r.Done) err := rows.Scan(&r.Id, &r.Name, &r.Done)
if err != nil { if err != nil {
log.Fatal(err)
return todos, err return todos, err
} }
todos = append(todos, r) todos = append(todos, r)
@ -39,7 +40,7 @@ func (ts *PostgresTodoRepository) Get(id uuid.UUID) (models.Todo, error) {
err := ts.db.QueryRow(context.Background(), "SELECT id, name, done FROM todo WHERE id=$1", id).Scan(&todo.Id, &todo.Name, &todo.Done) err := ts.db.QueryRow(context.Background(), "SELECT id, name, done FROM todo WHERE id=$1", id).Scan(&todo.Id, &todo.Name, &todo.Done)
if err != nil { if err != nil {
log.Printf("Database error: %v", err) log.Fatal(err)
return todo, err return todo, err
} }
@ -50,7 +51,7 @@ func (ts *PostgresTodoRepository) Update(id uuid.UUID, name string, done bool) e
_, err := ts.db.Exec(context.Background(), "UPDATE todo SET name=$1, done=$2 WHERE id=$3", name, done, id) _, err := ts.db.Exec(context.Background(), "UPDATE todo SET name=$1, done=$2 WHERE id=$3", name, done, id)
if err != nil { if err != nil {
log.Printf("Database error: %v", err) log.Fatal(err)
} }
return err return err
@ -60,7 +61,7 @@ func (ts *PostgresTodoRepository) Add(todo models.Todo) error {
_, err := ts.db.Exec(context.Background(), "INSERT INTO todo(id, name, done) values($1, $2, $3)", todo.Id, todo.Name, todo.Done) _, err := ts.db.Exec(context.Background(), "INSERT INTO todo(id, name, done) values($1, $2, $3)", todo.Id, todo.Name, todo.Done)
if err != nil { if err != nil {
log.Printf("Database error: %v", err) log.Fatal(err)
return err return err
} }
@ -71,7 +72,7 @@ func (ts *PostgresTodoRepository) Delete(id uuid.UUID) error {
_, err := ts.db.Exec(context.Background(), "DELETE FROM todo where id=$1", id) _, err := ts.db.Exec(context.Background(), "DELETE FROM todo where id=$1", id)
if err != nil { if err != nil {
log.Printf("Database error: %v", err) log.Fatal(err)
return err return err
} }

View File

@ -54,14 +54,14 @@ func (ts *TodoService) UpdateTodo(id uuid.UUID, name string, done bool) (models.
return ts.db.Get(id) return ts.db.Get(id)
} }
func (ts *TodoService) GetTodos() ([]models.Todo, error) { func (ts *TodoService) GetTodos() (todos []models.Todo, err error) {
return ts.db.List() return ts.db.List()
} }
func (ts *TodoService) GetTodoById(id uuid.UUID) (models.Todo, error) { func (ts *TodoService) GetTodoById(id uuid.UUID) (todo models.Todo, err error) {
return ts.db.Get(id) return ts.db.Get(id)
} }
func (ts *TodoService) DeleteTodoById(id uuid.UUID) error { func (ts *TodoService) DeleteTodoById(id uuid.UUID) (err error) {
return ts.db.Delete(id) return ts.db.Delete(id)
} }