-- name: CreateUser :one INSERT INTO users (id, email, password_hash, timezone) VALUES ($1, $2, $3, $4) RETURNING id, email, password_hash, timezone, is_active, created_at, updated_at; -- name: GetUserByID :one SELECT id, email, password_hash, timezone, is_active, created_at, updated_at FROM users WHERE id = $1 AND deleted_at IS NULL; -- name: GetUserByEmail :one SELECT id, email, password_hash, timezone, is_active, created_at, updated_at FROM users WHERE email = $1 AND deleted_at IS NULL; -- name: UpdateUser :one UPDATE users SET timezone = COALESCE(sqlc.narg('timezone')::TEXT, timezone), updated_at = now() WHERE id = @id AND deleted_at IS NULL RETURNING id, email, password_hash, timezone, is_active, created_at, updated_at; -- name: SoftDeleteUser :exec UPDATE users SET deleted_at = now(), is_active = false, updated_at = now() WHERE id = $1 AND deleted_at IS NULL;