package main import ( "encoding/json" "log" "net/http" "gorm.io/driver/postgres" "gorm.io/gorm" ) type Response struct { Message string `json:"message"` } // Example model type User struct { gorm.Model Name string Email string } func handler(w http.ResponseWriter, r *http.Request) { // Get DB connection from context db, ok := r.Context().Value("db").(*gorm.DB if !ok { http.Error(w, "Database connection not found", http.StatusInternalServerError) return } // Example usage db.AutoMigrate(&User{}) user := User{Name: "Test", Email: "test@example.com"} db.Create(&user) w.Header().Set("Content-Type", "application/json") response := Response{Message: "ok"} json.NewEncoder(w).Encode(response) } func main() { // Create DB connection string dsn := "host=db user=postgres password=postgres dbname=mydb port=5432 sslmode=disable TimeZone=UTC" db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) if err != nil { log.Fatal("Failed to connect to database:", err) } // Initialize database db.AutoMigrate(&User{}) // Setup HTTP server with DB context http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { r = r.WithContext(context.WithValue(r.Context(), "db", db)) handler(w, r) }) log.Println("Сервер запущен на http://localhost:8080") log.Fatal(http.ListenAndServe(":8080", nil)) }