-- ===================== -- GitHub Installation -- ===================== -- name: ListGitHubInstallationsByWorkspace :many SELECT * FROM github_installation WHERE workspace_id = $1 ORDER BY created_at ASC; -- name: GetGitHubInstallationByInstallationID :one SELECT * FROM github_installation WHERE installation_id = $1; -- name: GetGitHubInstallationByID :one SELECT * FROM github_installation WHERE id = $1; -- name: CreateGitHubInstallation :one INSERT INTO github_installation ( workspace_id, installation_id, account_login, account_type, account_avatar_url, connected_by_id ) VALUES ( $1, $2, $3, $4, sqlc.narg('account_avatar_url'), sqlc.narg('connected_by_id') ) ON CONFLICT (installation_id) DO UPDATE SET workspace_id = EXCLUDED.workspace_id, account_login = EXCLUDED.account_login, account_type = EXCLUDED.account_type, account_avatar_url = EXCLUDED.account_avatar_url, connected_by_id = EXCLUDED.connected_by_id, updated_at = now() RETURNING *; -- name: DeleteGitHubInstallation :exec DELETE FROM github_installation WHERE id = $1 AND workspace_id = $2; -- name: DeleteGitHubInstallationByInstallationID :one DELETE FROM github_installation WHERE installation_id = $1 RETURNING id, workspace_id; -- ===================== -- GitHub Pull Request -- ===================== -- name: UpsertGitHubPullRequest :one INSERT INTO github_pull_request ( workspace_id, installation_id, repo_owner, repo_name, pr_number, title, state, html_url, branch, author_login, author_avatar_url, merged_at, closed_at, pr_created_at, pr_updated_at ) VALUES ( $1, $2, $3, $4, $5, $6, $7, $8, sqlc.narg('branch'), sqlc.narg('author_login'), sqlc.narg('author_avatar_url'), sqlc.narg('merged_at'), sqlc.narg('closed_at'), $9, $10 ) ON CONFLICT (workspace_id, repo_owner, repo_name, pr_number) DO UPDATE SET installation_id = EXCLUDED.installation_id, title = EXCLUDED.title, state = EXCLUDED.state, html_url = EXCLUDED.html_url, branch = EXCLUDED.branch, author_login = EXCLUDED.author_login, author_avatar_url = EXCLUDED.author_avatar_url, merged_at = EXCLUDED.merged_at, closed_at = EXCLUDED.closed_at, pr_updated_at = EXCLUDED.pr_updated_at, updated_at = now() RETURNING *; -- name: GetGitHubPullRequest :one SELECT * FROM github_pull_request WHERE workspace_id = $1 AND repo_owner = $2 AND repo_name = $3 AND pr_number = $4; -- name: ListPullRequestsByIssue :many SELECT pr.* FROM github_pull_request pr JOIN issue_pull_request ipr ON ipr.pull_request_id = pr.id WHERE ipr.issue_id = $1 ORDER BY pr.pr_created_at DESC; -- name: ListIssueIDsForPullRequest :many SELECT issue_id FROM issue_pull_request WHERE pull_request_id = $1; -- ===================== -- Issue ↔ Pull Request link -- ===================== -- name: LinkIssueToPullRequest :exec INSERT INTO issue_pull_request ( issue_id, pull_request_id, linked_by_type, linked_by_id ) VALUES ( $1, $2, sqlc.narg('linked_by_type'), sqlc.narg('linked_by_id') ) ON CONFLICT (issue_id, pull_request_id) DO NOTHING; -- name: UnlinkIssueFromPullRequest :exec DELETE FROM issue_pull_request WHERE issue_id = $1 AND pull_request_id = $2;