You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: pr_reviews.go
    path of file: ./repos/mergestat-lite/extensions/internal/github
    
    the code of the file until where you have to start completion: package github

import (
	"context"
	"fmt"
	"io"
	"time"

	"github.com/augmentable-dev/vtab"
	"github.com/mergestat/mergestat-lite/extensions/options"
	"github.com/rs/zerolog"
	"github.com/shurcooL/githubv4"
	"go.riyazali.net/sqlite"
)

type pullRequestForReviews struct {
	Id      githubv4.String
	Number  int
	Reviews struct {
		Nodes    []*prReview
		PageInfo struct {
			EndCursor   githubv4.String
			HasNextPage bool
		}
	} `graphql:"reviews(first: $perPage, after: $reviewCursor)"`
}

type prReview struct {
	Author struct {
		Login string
		Url   string
	}
	AuthorAssociation         string
	AuthorCanPushToRepository bool
	Body                      string
	Comments                  struct {
		TotalCount int
	}
	CreatedAt       githubv4.DateTime
	CreatedViaEmail bool
	Editor          struct {
		Login string
	}
	Id           string
	LastEditedAt githubv4.DateTime
	PublishedAt  githubv4.DateTime
	State        string
	SubmittedAt  githubv4.DateTime
	UpdatedAt    githubv4.DateTime
}

type fetchPRReviewsResults struct {
	RateLimit   *options.GitHubRateLimitResponse
	PullRequest *pullRequestForReviews
	HasNextPage bool
	EndCursor   *githubv4.String
}

func (i *iterPRReviews) fetchPRReviews(ctx context.Context, endCursor *githubv4.String) (*fetchPRReviewsResults, error) {
	var PRQuery struct {
		RateLimit  *options.GitHubRateLimitResponse
		Repository struct {
			Owner struct {
				Login string
			}
			Name        string
			PullRequest pullRequestForReviews `grap
    
func (i *iterPRReviews) Column(ctx vtab.Context, c int) error {
	current := i.results.PullRequest.Reviews.Nodes[i.currentReview]
	col := prReviewCols[c]

	switch col.Name {
	case "author_login":
		ctx.ResultText(current.Author.Login)
	case "author_url":
		ctx.ResultText(current.Author.Url)
	case "author_association":
		ctx.ResultText(current.AuthorAssociation)
	case "author_can_push_to_repository":
		ctx.ResultInt(t1f0(current.AuthorCanPushToRepository))
	case "body":
		ctx.ResultText(current.Body)
	case "comment_count":
		ctx.ResultInt(current.Comments.TotalCount)
	case "created_at":
		t := current.CreatedAt
		if t.IsZero() {
			ctx.ResultNull()
		} else {
			ctx.ResultText(t.Format(time.RFC3339Nano))
		}
	case "created_via_email":
		ctx.ResultInt(t1f0(current.CreatedViaEmail))
	case "editor_login":
		ctx.ResultText(current.Editor.Login)
	case "id":
		ctx.ResultText(current.Id)
	case "last_edited_at":
		t := current.LastEditedAt
		if t.IsZero() {
			ctx.ResultNull()
		} else {
			ctx.ResultText(t.Format(time.RFC3339Nano))
		}
	case "published_at":
		t := current.PublishedAt
		if t.IsZero() {
			ctx.ResultNull()
		} else {
			ctx.ResultText(t.Format(time.RFC3339Nano))
		}
	case "state":
		ctx.ResultText(current.State)
	case "submitted_at":
		t := current.SubmittedAt
		if t.IsZero() {
			ctx.ResultNull()
		} else {
			ctx.ResultText(t.Format(time.RFC3339Nano))
		}
	case "updated_at":
		t := current.UpdatedAt
		if t.IsZero() {
			ctx.ResultNull()
		} else {
			ctx.ResultText(t.Format(time.RFC3339Nano))
		}
	case "pr_number":
		ctx.ResultInt(i.results.PullRequest.Number)
	}
	return nil
}