From f3ccbc95c1d4f00136109729b0b914ac2df4c014 Mon Sep 17 00:00:00 2001 From: Jason Hilder Date: Thu, 23 Apr 2026 07:55:40 +0200 Subject: [PATCH] Initial commit using sqlc for query generation. Basic crud ops and join queries to use sqlc, more complex either from scratch or with a query builder later. --- sql/queries.sql | 25 +++++++++++++++++++++++++ sql/schema.sql | 6 ++++++ sqlc.yml | 15 +++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 sql/queries.sql create mode 100644 sql/schema.sql create mode 100644 sqlc.yml diff --git a/sql/queries.sql b/sql/queries.sql new file mode 100644 index 0000000..02ddef0 --- /dev/null +++ b/sql/queries.sql @@ -0,0 +1,25 @@ +-- name: GetUser :one +SELECT * FROM users +WHERE id = $1 LIMIT 1; + +-- name: ListUsers :many +SELECT * FROM users +ORDER BY name; + +-- name: CreateUser :one +INSERT INTO users ( + name, age +) VALUES ( + $1, $2 +) +RETURNING *; + +-- name: UpdateUser :exec +UPDATE users + set name = $2, + age = $3 +WHERE id = $1; + +-- name: DeleteUser :exec +DELETE FROM users +WHERE id = $1; diff --git a/sql/schema.sql b/sql/schema.sql new file mode 100644 index 0000000..0d9dd42 --- /dev/null +++ b/sql/schema.sql @@ -0,0 +1,6 @@ +CREATE TABLE users ( + id BIGSERIAL PRIMARY KEY, + name text NOT NULL, + age int NOT NULL +); + diff --git a/sqlc.yml b/sqlc.yml new file mode 100644 index 0000000..1104632 --- /dev/null +++ b/sqlc.yml @@ -0,0 +1,15 @@ +version: "2" +sql: + - engine: "postgresql" + queries: "sql/queries.sql" + schema: "sql/schema.sql" + gen: + go: + # 'db' is a standard package name for database logic + package: "db" + out: "internal/db" + sql_package: "pgx/v5" + # Recommended for better Go code: + emit_json_tags: true + emit_interface: true + emit_exact_table_names: false