Compare commits
No commits in common. "main" and "feature/database" have entirely different histories.
main
...
feature/da
5
main.go
5
main.go
@ -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())
|
||||||
|
@ -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))
|
|
||||||
})
|
|
||||||
}
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user