Skip to content

Instantly share code, notes, and snippets.

@subzero112233
Created June 22, 2021 14:59
Show Gist options
  • Save subzero112233/c1c98d04d8f7222f2cfc9c18a52a27a3 to your computer and use it in GitHub Desktop.
Save subzero112233/c1c98d04d8f7222f2cfc9c18a52a27a3 to your computer and use it in GitHub Desktop.
main.go for working with mysql
package main
import (
"context"
"os"
"aws-golang-lambda/api/handler"
"aws-golang-lambda/usecase/users"
mysqldb "aws-golang-lambda/repository/mysql"
"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/jmoiron/sqlx"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
)
var (
ginLambda *ginadapter.GinLambda
srv *users.Service
secret string
)
func init() {
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
zerolog.SetGlobalLevel(zerolog.DebugLevel)
logger := log.With().Logger()
secret = os.Getenv("JWT_SECRET")
if secret == "" {
logger.Panic().
Msg("jwt secret environment varialbe is missing")
}
// make sure to store it in a secure way, such as ssm/secrets manager
db, err := sqlx.Connect("mysql", "myuser:password@(<MY DATABASE HOST>:3306)/usersdb")
if err != nil {
logger.Panic().
Err(err).
Msg("unable to connect to mysql database")
}
repo := mysqldb.NewMysqlDB(db)
srv = users.LoadService(repo, &logger)
gin.SetMode(gin.ReleaseMode)
r := handler.NewGinHandler(srv, secret)
ginLambda = ginadapter.New(r)
}
func Handler(ctx context.Context, req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
return ginLambda.ProxyWithContext(ctx, req)
}
func main() {
lambda.Start(Handler)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment