File tree Expand file tree Collapse file tree 6 files changed +98
-0
lines changed Expand file tree Collapse file tree 6 files changed +98
-0
lines changed Original file line number Diff line number Diff line change
1
+ export PORT := 8081
2
+
3
+ .PHONY : dev
4
+ dev :
5
+ @go run ./cmd/api
Original file line number Diff line number Diff line change
1
+ package main
2
+
3
+ import (
4
+ "fmt"
5
+ "log"
6
+ "net/http"
7
+ "sandbox-go-api-sqlboiler-rest-auth/internal/config"
8
+ "sandbox-go-api-sqlboiler-rest-auth/internal/routes"
9
+ )
10
+
11
+ func main () {
12
+ cfg , err := config .NewEnvConfig ()
13
+ if err != nil {
14
+ log .Fatalln (err )
15
+ return
16
+ }
17
+
18
+ r := routes .NewRouter ()
19
+
20
+ log .Printf ("server is running on port %v" , cfg .Port )
21
+ err = http .ListenAndServe (fmt .Sprintf (":%s" , cfg .Port ), r )
22
+ if err != nil {
23
+ log .Fatalln ("cannot run server:" , err )
24
+ return
25
+ }
26
+ }
Original file line number Diff line number Diff line change 1
1
module sandbox-go-api-sqlboiler-rest-auth
2
2
3
3
go 1.17
4
+
5
+ require (
6
+ github.com/caarlos0/env/v6 v6.7.1 // indirect
7
+ github.com/go-chi/chi/v5 v5.0.4 // indirect
8
+ github.com/go-chi/render v1.0.1 // indirect
9
+ )
Original file line number Diff line number Diff line change
1
+ github.com/caarlos0/env/v6 v6.7.1 h1:2r2GyonA8aJX6lDEhwFfpxwAX8Z3mvbE1X6vhaSzEyU =
2
+ github.com/caarlos0/env/v6 v6.7.1 /go.mod h1:FE0jGiAnQqtv2TenJ4KTa8+/T2Ss8kdS5s1VEjasoN0 =
3
+ github.com/go-chi/chi/v5 v5.0.4 h1:5e494iHzsYBiyXQAHHuI4tyJS9M3V84OuX3ufIIGHFo =
4
+ github.com/go-chi/chi/v5 v5.0.4 /go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8 =
5
+ github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8 =
6
+ github.com/go-chi/render v1.0.1 /go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns =
Original file line number Diff line number Diff line change
1
+ package config
2
+
3
+ import "github.com/caarlos0/env/v6"
4
+
5
+ type EnvConfig struct {
6
+ Port string `env:"PORT,required"`
7
+ }
8
+
9
+ func NewEnvConfig () (* EnvConfig , error ) {
10
+ config := EnvConfig {}
11
+ if err := env .Parse (& config ); err != nil {
12
+ return & config , err
13
+ }
14
+ return & config , nil
15
+ }
Original file line number Diff line number Diff line change
1
+ package routes
2
+
3
+ import (
4
+ "net/http"
5
+ "time"
6
+
7
+ "github.com/go-chi/render"
8
+
9
+ "github.com/go-chi/chi/v5"
10
+ "github.com/go-chi/chi/v5/middleware"
11
+ )
12
+
13
+ type Health struct {
14
+ OK bool `json:"ok"`
15
+ }
16
+
17
+ func (h * Health ) Render (_ http.ResponseWriter , _ * http.Request ) error {
18
+ return nil
19
+ }
20
+
21
+ func NewRouter () * chi.Mux {
22
+ r := chi .NewRouter ()
23
+ r .Use (middleware .RequestID )
24
+ r .Use (middleware .RealIP )
25
+ r .Use (middleware .Logger )
26
+ r .Use (middleware .Recoverer )
27
+ r .Use (middleware .Timeout (60 * time .Second ))
28
+ r .Use (render .SetContentType (render .ContentTypeJSON ))
29
+
30
+ r .Route ("/api/" , func (r chi.Router ) {
31
+ r .Get ("/health" , func (w http.ResponseWriter , r * http.Request ) {
32
+ err := render .Render (w , r , & Health {OK : true })
33
+ if err != nil {
34
+ http .Error (w , http .StatusText (500 ), 500 )
35
+ return
36
+ }
37
+ })
38
+ })
39
+ return r
40
+ }
You can’t perform that action at this time.
0 commit comments