You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.3 KiB
52 lines
1.3 KiB
package main
|
|
|
|
import (
|
|
"context"
|
|
"github.com/aws/aws-lambda-go/events"
|
|
"github.com/aws/aws-lambda-go/lambda"
|
|
ginadapter "github.com/awslabs/aws-lambda-go-api-proxy/gin"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/gissleh/stufflog/api"
|
|
"github.com/gissleh/stufflog/database"
|
|
"github.com/gissleh/stufflog/internal/auth"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
func env(key string, defaultValue string) string {
|
|
e := os.Getenv(key)
|
|
if e == "" {
|
|
return defaultValue
|
|
}
|
|
|
|
return e
|
|
}
|
|
|
|
func main() {
|
|
dbDriver := env("DB_DRIVER", "postgres")
|
|
dbConnect := env("DB_CONNECT", "")
|
|
|
|
gin.SetMode(gin.ReleaseMode)
|
|
|
|
db, err := database.Open(context.Background(), dbDriver, dbConnect)
|
|
if err != nil {
|
|
log.Println("Failed to open database:", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
server := gin.New()
|
|
server.Use(auth.TrustingJwtParserMiddleware())
|
|
|
|
api.Group(server.Group("/api/group"), db)
|
|
api.Item(server.Group("/api/item"), db)
|
|
api.Project(server.Group("/api/project"), db)
|
|
api.ProjectGroup(server.Group("/api/projectgroup"), db)
|
|
api.Task(server.Group("/api/task"), db)
|
|
api.Log(server.Group("/api/log"), db)
|
|
api.Goal(server.Group("/api/goal"), db)
|
|
|
|
ginLambda := ginadapter.New(server)
|
|
lambda.Start(func(ctx context.Context, request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
|
|
return ginLambda.ProxyWithContext(ctx, request)
|
|
})
|
|
}
|