51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"time"
|
|
|
|
_ "github.com/lib/pq"
|
|
|
|
"github.com/gorilla/handlers"
|
|
"github.com/gorilla/mux"
|
|
|
|
"task_manager/internal/app"
|
|
"task_manager/internal/config"
|
|
"task_manager/internal/persistance"
|
|
)
|
|
|
|
func main() {
|
|
r := mux.NewRouter()
|
|
|
|
db, err := sql.Open("postgres", config.CONNECTION_STRING)
|
|
if err != nil {
|
|
log.Fatalf("Open error database: %v", err)
|
|
}
|
|
repo := persistance.NewTaskManager(db)
|
|
task := app.NewTaskManager(repo)
|
|
|
|
task.RegisterRoutes(r)
|
|
|
|
corsMiddleware := handlers.CORS(
|
|
handlers.AllowedOrigins([]string{"*"}),
|
|
handlers.AllowedMethods([]string{"GET", "POST", "OPTIONS"}),
|
|
handlers.AllowedHeaders([]string{"Content-Type", "Authorization"}),
|
|
)
|
|
|
|
address := fmt.Sprintf(":%d", 8080)
|
|
log.Printf("The server is running on the port %s\n", address)
|
|
srv := &http.Server{
|
|
Addr: address,
|
|
Handler: corsMiddleware(r),
|
|
ReadTimeout: 10 * time.Second,
|
|
WriteTimeout: 10 * time.Second,
|
|
IdleTimeout: 20 * time.Second,
|
|
}
|
|
if err := srv.ListenAndServe(); err != nil {
|
|
log.Fatalf("Server startup error: %v", err)
|
|
}
|
|
}
|