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
This commit is contained in:
49
kipina-codebench/golden-examples/todo-go/main.go
Normal file
49
kipina-codebench/golden-examples/todo-go/main.go
Normal file
@@ -0,0 +1,49 @@
|
||||
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)))
|
||||
}
|
||||
Reference in New Issue
Block a user