- 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
50 lines
1.0 KiB
Go
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)))
|
|
}
|