github.com/oinume/lekcije@v0.0.0-20231017100347-5b4c5eb6ab24/backend/interface/http/api.go (about)

     1  package http
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"github.com/oinume/lekcije/backend/domain/config"
     7  	"github.com/oinume/lekcije/backend/model"
     8  )
     9  
    10  // GET /api/status
    11  func (s *server) getAPIStatus(w http.ResponseWriter, r *http.Request) {
    12  	data := map[string]bool{
    13  		"db": true,
    14  	}
    15  
    16  	db, err := model.OpenDB(config.DefaultVars.DBURL(), 1, config.DefaultVars.DebugSQL)
    17  	if err == nil {
    18  		defer db.Close()
    19  		if err := db.DB().Ping(); err != nil {
    20  			data["db"] = false
    21  		}
    22  	} else {
    23  		data["db"] = false
    24  	}
    25  
    26  	for _, status := range data {
    27  		if !status {
    28  			writeJSON(w, http.StatusInternalServerError, data)
    29  			return
    30  		}
    31  	}
    32  	writeJSON(w, http.StatusOK, data)
    33  }