/
lva100
/
go-api
Обзор
Документация
Войти
/
lva100
/
go-api
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
cmd/api.go
70 строк
1 KB
lva100
Initial commit
30 июн 2026, 15:29
30 июн 2026, 15:29
779a363
Код
Авторство
О чём код?
package main import ( "log" "net/http" "time" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" "github.com/jackc/pgx/v5" repo "github.com/lva100/go-api/internal/adapters/postgresql/sqlc" "github.com/lva100/go-api/internal/orders" "github.com/lva100/go-api/internal/products" ) // mount func (app *application) mount() http.Handler { r := chi.NewRouter() //Middlewares r.Use(middleware.RequestID) r.Use(middleware.RealIP) r.Use(middleware.Logger) r.Use(middleware.Recoverer) r.Use(middleware.Timeout(60 * time.Second)) r.Get("/health", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("all good")) }) productService := products.NewService(repo.New(app.db)) productHandler := products.NewHandler(productService) r.Get("/products", productHandler.ListProducts) ordersService := orders.NewService(repo.New(app.db), app.db) ordersHandler := orders.NewHandler(*ordersService) r.Post("/orders", ordersHandler.PlaceOrder) return r } // run func (app *application) run(h http.Handler) error { srv := &http.Server{ Addr: app.config.addr, Handler: h, WriteTimeout: time.Second * 30, ReadTimeout: time.Second * 10, IdleTimeout: time.Minute, } log.Printf("server has started at addr %s", app.config.addr) return srv.ListenAndServe() } type application struct { config config db *pgx.Conn } type config struct { addr string db dbConfig } type dbConfig struct { dsn string }