package main import ( "api/context" "api/middleware" "api/utils" "database/sql" "log" "net/http" _ "github.com/mattn/go-sqlite3" ) type Person struct { ID int Name string } type Context context.Context func main() { context.InitializeDB() db, err := sql.Open("sqlite3", "./data.db") if err != nil { log.Fatal(err) } defer db.Close() var context = Context{ DB: db, } var router = http.NewServeMux() router.HandleFunc("GET /", context.HelloWorld) var server = http.Server{ Addr: ":8080", Handler: middleware.Logging(router), } log.Println("Starting server at", server.Addr) err = server.ListenAndServe() if err != nil { panic(err) } } func (ctx *Context) HelloWorld(w http.ResponseWriter, r *http.Request) { sqlStmt := `select COUNT(*) from person;` result, err := ctx.DB.Query(sqlStmt) if err != nil { log.Fatal(err) } var count int if result.Next() { if result.Scan(&count) != nil { log.Fatal(err) } } else { log.Fatal("No rows found") } err = utils.WriteJSON(w, count) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } }