first commit
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"os"
|
||||
"os/signal"
|
||||
"ristek-task-be/internal/db/sqlc/repository"
|
||||
"ristek-task-be/internal/jwt"
|
||||
"ristek-task-be/internal/server"
|
||||
"syscall"
|
||||
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
"github.com/joho/godotenv"
|
||||
)
|
||||
|
||||
func main() {
|
||||
log.SetOutput(os.Stdout)
|
||||
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
||||
|
||||
if _, err := os.Stat(".env"); err == nil {
|
||||
if err = godotenv.Load(".env"); err != nil {
|
||||
log.Printf("Warning: Failed to load .env file: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
errChan := make(chan error, 1)
|
||||
signalChan := make(chan os.Signal, 1)
|
||||
|
||||
signal.Notify(signalChan, os.Interrupt, syscall.SIGTERM)
|
||||
|
||||
addr := "localhost"
|
||||
port := uint16(8080)
|
||||
|
||||
dbURL := os.Getenv("DATABASE_URL")
|
||||
if dbURL == "" {
|
||||
log.Fatal("DATABASE_URL is required")
|
||||
}
|
||||
|
||||
ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
|
||||
defer cancel()
|
||||
|
||||
connect, err := pgxpool.New(ctx, dbURL)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer connect.Close()
|
||||
repo := repository.New(connect)
|
||||
j := jwt.New("yomama")
|
||||
go func() {
|
||||
s := server.New(addr, port, repo, j)
|
||||
err = s.Start()
|
||||
errChan <- err
|
||||
}()
|
||||
|
||||
log.Printf("Server is running on %s:%d", addr, port)
|
||||
|
||||
select {
|
||||
case err = <-errChan:
|
||||
log.Fatalf("service error: %w", err)
|
||||
case sig := <-signalChan:
|
||||
log.Printf("Received signal %s, initiating graceful shutdown", sig)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user