Created
June 22, 2021 14:59
-
-
Save subzero112233/c1c98d04d8f7222f2cfc9c18a52a27a3 to your computer and use it in GitHub Desktop.
main.go for working with mysql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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