Files
jaakko f3cd1347ab CodeBench: Go-tuki — Chi + SQLite + httptest
- Golden example: todo-go/ (6/6 testit läpi)
- todo-go.md golden reference
- prompts/code-go.md koodigenerointi-prompti
- Dockerfile.go-test (golang:1.23-alpine)
- benchmark.mjs: LANG_CONFIG, parseTestOutput, prompt/golden-valinta Go:lle
- Käyttö: node benchmark.mjs --lang go --models qwen2.5-coder:32b
2026-04-14 19:20:18 +03:00

50 lines
1.0 KiB
Go

package main
import (
"database/sql"
"fmt"
"log"
"net/http"
"github.com/go-chi/chi/v5"
_ "modernc.org/sqlite"
)
// InitDB creates tables if they don't exist.
func InitDB(db *sql.DB) {
_, err := db.Exec(`CREATE TABLE IF NOT EXISTS todos (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
description TEXT,
due_date TEXT,
priority INTEGER NOT NULL DEFAULT 1,
status TEXT NOT NULL DEFAULT 'pending'
)`)
if err != nil {
log.Fatal(err)
}
}
// NewRouter creates a chi router with all routes.
func NewRouter(db *sql.DB) http.Handler {
r := chi.NewRouter()
r.Post("/todos", createTodo(db))
r.Get("/todos", listTodos(db))
r.Get("/todos/{id}", getTodo(db))
r.Put("/todos/{id}", updateTodo(db))
r.Delete("/todos/{id}", deleteTodo(db))
return r
}
func main() {
db, err := sql.Open("sqlite", "file:app.db?mode=rwc")
if err != nil {
log.Fatal(err)
}
defer db.Close()
InitDB(db)
fmt.Println("Server running: http://127.0.0.1:3000")
log.Fatal(http.ListenAndServe("127.0.0.1:3000", NewRouter(db)))
}