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