-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
64 lines (61 loc) · 2 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package main
import (
"context"
"log"
"os"
"trackpump/storage"
"cloud.google.com/go/datastore"
"github.com/labstack/echo"
)
func main() {
port := os.Getenv("PORT")
if port == "" {
log.Fatal("missing PORT environment variable")
}
projectID := os.Getenv("PROJECT_ID")
if projectID == "" {
log.Fatal("missing PROJECT_ID environment variable")
}
client, err := datastore.NewClient(context.Background(), projectID)
if err != nil {
log.Fatalf("falha ao criar cliente do Datastore, erro %q", err)
}
log.Println("connected to database")
storageLogin := os.Getenv("STORAGE_LOGIN")
if storageLogin == "" {
log.Fatal("missing STORAGE_LOGIN environment variable")
}
storagePassword := os.Getenv("STORAGE_PASSWORD")
if storagePassword == "" {
log.Fatal("missing STORAGE_PASSWORD environment variable")
}
storageClient, err := storage.New(storageLogin, storagePassword)
if err != nil {
log.Fatalf("failed to create storage client, erro %q", err)
}
email := os.Getenv("EMAIL")
if email == "" {
log.Fatal("missing EMAIL variable environment")
}
password := os.Getenv("PASSWORD")
if password == "" {
log.Fatal("missing PASSWORD environment variable")
}
e := echo.New()
userRegistry := NewRegistry(client, storageClient, email, password)
usersControllers := userRegistry.NewAppController()
e.POST("/api/v1/users", usersControllers.Create)
e.POST("/api/v1/users/login", usersControllers.Login)
e.GET("/api/v1/weekly_report", usersControllers.WeeklyReport)
e.POST("/api/v1/measurements", usersControllers.RegisterMeasurement)
e.GET("/", usersControllers.HomePage)
e.GET("/sign_up", usersControllers.SignUp)
e.POST("/process_signup", usersControllers.ProcessSignUp)
e.GET("/login", usersControllers.LoginPage)
e.POST("/process_login", usersControllers.ProcessLogin)
e.GET("/admin", usersControllers.Admin)
e.GET("/measurement", usersControllers.MeasurementPage)
e.POST("/process_measurement", usersControllers.ProcessMeasurement)
log.Println("server online at ", port)
log.Fatal(e.Start(":" + port))
}