-- name: ListProjects :many SELECT * FROM project WHERE workspace_id = $1 AND (sqlc.narg('status')::text IS NULL OR status = sqlc.narg('status')) ORDER BY created_at DESC; -- name: GetProject :one SELECT * FROM project WHERE id = $1; -- name: GetProjectInWorkspace :one SELECT * FROM project WHERE id = $1 AND workspace_id = $2; -- name: CreateProject :one INSERT INTO project ( workspace_id, title, description, icon, status, lead_type, lead_id ) VALUES ( $1, $2, $3, $4, $5, $6, $7 ) RETURNING *; -- name: UpdateProject :one UPDATE project SET title = COALESCE(sqlc.narg('title'), title), description = sqlc.narg('description'), icon = sqlc.narg('icon'), status = COALESCE(sqlc.narg('status'), status), lead_type = sqlc.narg('lead_type'), lead_id = sqlc.narg('lead_id'), updated_at = now() WHERE id = $1 RETURNING *; -- name: DeleteProject :exec DELETE FROM project WHERE id = $1; -- name: CountIssuesByProject :one SELECT count(*) FROM issue WHERE project_id = $1;