models

package
v1.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 27, 2024 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package models contains data types that will be received in a request or data that will be sent in a response. For example, this is a good place to store the format of the datasource settings.

Index

Constants

View Source
const (
	// QueryTypeCommits is sent by the frontend when querying commits in a GitHub repository
	QueryTypeCommits = "Commits"
	// QueryTypeIssues is used when querying issues in a GitHub repository
	QueryTypeIssues = "Issues"
	// QueryTypeContributors is used when querying contributors in a GitHub repository
	QueryTypeContributors = "Contributors"
	// QueryTypeTags is used when querying tags in a GitHub repository
	QueryTypeTags = "Tags"
	// QueryTypeReleases is used when querying releases in a GitHub repository
	QueryTypeReleases = "Releases"
	// QueryTypePullRequests is used when querying pull requests in a GitHub repository
	QueryTypePullRequests = "Pull_Requests"
	// QueryTypeLabels is used when querying labels in a GitHub repository
	QueryTypeLabels = "Labels"
	// QueryTypeRepositories is used when querying for a GitHub repository
	QueryTypeRepositories = "Repositories"
	// QueryTypeOrganizations is used when querying for GitHub organizations
	QueryTypeOrganizations = "Organizations"
	// QueryTypeGraphQL is used when sending an ad-hoc graphql query
	QueryTypeGraphQL = "GraphQL"
	// QueryTypePackages is used when querying for NPM / Docker / etc packages
	QueryTypePackages = "Packages"
	// QueryTypeMilestones is used when querying for milestones in a repository
	QueryTypeMilestones = "Milestones"
	// QueryTypeVulnerabilities is used when querying a vulnerability for a repository
	QueryTypeVulnerabilities = "Vulnerabilities"
	// QueryTypeProjects is used when querying projects for an organization
	QueryTypeProjects = "Projects"
	// QueryTypeProjectItems is used when querying projects for an organization
	QueryTypeProjectItems = "ProjectItems"
	// QueryTypeStargazers is used when querying stargazers for a repository
	QueryTypeStargazers = "Stargazers"
	// QueryTypeWorkflows is used when querying workflows for an organization
	QueryTypeWorkflows = "Workflows"
	// QueryTypeWorkflowUsage is used when querying a specific workflow usage
	QueryTypeWorkflowUsage = "Workflow_Usage"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Client added in v1.3.0

type Client interface {
	Query(ctx context.Context, q interface{}, variables map[string]interface{}) error
	ListWorkflows(ctx context.Context, owner, repo string, opts *googlegithub.ListOptions) (*googlegithub.Workflows, *googlegithub.Response, error)
	GetWorkflowUsage(ctx context.Context, owner, repo, workflow string, timeRange backend.TimeRange) (WorkflowUsage, error)
}

The Client interface is satisfied by the githubv4.Client type. Rather than accept the githubv4.Client type everywhere, we will follow the Go idiom of accepting interfaces / returning structs and accept this interface.

type CommitsQuery

type CommitsQuery struct {
	Query
	Options ListCommitsOptions `json:"options"`
}

CommitsQuery is used when querying for GitHub commits

type ContributorsQuery

type ContributorsQuery struct {
	Query
	Options ListContributorsOptions `json:"options"`
}

ContributorsQuery is used when querying for GitHub contributors

type Filter added in v1.3.0

type Filter struct {
	// Key ...
	Key string
	// Value ...
	Value string
	// OP ...
	OP string
	// Conjunction ...
	Conjunction string
}

Filter allows filtering by Key/Value

type IssueTimeField

type IssueTimeField uint32

IssueTimeField defines what time field to filter issues by (closed, opened...)

const (
	// IssueCreatedAt is used when filtering when an Issue was opened
	IssueCreatedAt IssueTimeField = iota
	// IssueClosedAt is used when filtering when an Issue was closed
	IssueClosedAt
	// IssueUpdatedAt is used when filtering when an Issue was updated (last time)
	IssueUpdatedAt
)

func (IssueTimeField) String

func (d IssueTimeField) String() string

type IssuesQuery

type IssuesQuery struct {
	Query
	Options ListIssuesOptions `json:"options"`
}

IssuesQuery is used when querying for GitHub issues

type LabelsQuery

type LabelsQuery struct {
	Query
	Options ListLabelsOptions `json:"options"`
}

LabelsQuery is used when querying for GitHub issue labels

type ListCommitsOptions

type ListCommitsOptions struct {
	Repository string `json:"repository"`
	Owner      string `json:"owner"`
	Ref        string `json:"gitRef"`
}

ListCommitsOptions provides options when retrieving commits

func CommitsOptionsWithRepo

func CommitsOptionsWithRepo(opt ListCommitsOptions, owner string, repo string) ListCommitsOptions

CommitsOptionsWithRepo adds Owner and Repo to a ListCommitsOptions. This is just for convenience

type ListContributorsOptions

type ListContributorsOptions struct {
	// Repository is the name of the repository being queried (ex: grafana)
	Repository string `json:"repository"`

	// Owner is the owner of the repository (ex: grafana)
	Owner string `json:"owner"`

	Query *string `json:"query,omitempty"`
}

ListContributorsOptions are the available arguments when listing contributor

type ListIssuesOptions

type ListIssuesOptions struct {
	Repository string                 `json:"repository"`
	Owner      string                 `json:"owner"`
	Filters    *githubv4.IssueFilters `json:"filters"`
	Query      *string                `json:"query,omitempty"`
	TimeField  IssueTimeField         `json:"timeField"`
}

ListIssuesOptions provides options when retrieving issues

func IssueOptionsWithRepo

func IssueOptionsWithRepo(opt ListIssuesOptions, owner string, repo string) ListIssuesOptions

IssueOptionsWithRepo adds the Owner and Repository values to a ListIssuesOptions. This is a convenience function because this is a common operation

type ListLabelsOptions

type ListLabelsOptions struct {
	// Repository is the name of the repository being queried (ex: grafana)
	Repository string `json:"repository"`

	// Owner is the owner of the repository (ex: grafana)
	Owner string `json:"owner"`

	// Query searches labels by name and description
	Query string `json:"query"`
}

ListLabelsOptions is provided when listing Labels in a repository

type ListMilestonesOptions

type ListMilestonesOptions struct {
	// Repository is the name of the repository being queried (ex: grafana)
	Repository string `json:"repository"`

	// Owner is the owner of the repository (ex: grafana)
	Owner string `json:"owner"`

	// Query searches milestones by name and description
	Query string `json:"query"`
}

ListMilestonesOptions is provided when listing Labels in a repository

type ListPackagesOptions

type ListPackagesOptions struct {
	Repository  string               `json:"repository"`
	Owner       string               `json:"owner"`
	Names       string               `json:"names"`
	PackageType githubv4.PackageType `json:"packageType"`
}

ListPackagesOptions provides options when retrieving commits

func PackagesOptionsWithRepo

func PackagesOptionsWithRepo(opt ListPackagesOptions, owner string, repo string) ListPackagesOptions

PackagesOptionsWithRepo adds Owner and Repo to a ListPackagesOptions. This is just for convenience

type ListPullRequestsOptions

type ListPullRequestsOptions struct {
	// Repository is the name of the repository being queried (ex: grafana)
	Repository string `json:"repository"`

	// Owner is the owner of the repository (ex: grafana)
	Owner string `json:"owner"`

	// TimeField defines what time field to filter by
	TimeField PullRequestTimeField `json:"timeField"`

	Query *string `json:"query,omitempty"`
}

ListPullRequestsOptions are the available options when listing pull requests in a time range

func PullRequestOptionsWithRepo

func PullRequestOptionsWithRepo(opt ListPullRequestsOptions, owner string, repo string) ListPullRequestsOptions

PullRequestOptionsWithRepo adds the Owner and Repository options to a ListPullRequestsOptions type

type ListReleasesOptions

type ListReleasesOptions struct {
	// Repository is the name of the repository being queried (ex: grafana)
	Repository string `json:"repository"`

	// Owner is the owner of the repository (ex: grafana)
	Owner string `json:"owner"`
}

ListReleasesOptions are the available options when listing releases

type ListRepositoriesOptions

type ListRepositoriesOptions struct {
	Owner      string
	Repository string
}

ListRepositoriesOptions is the options for listing repositories

type ListStargazersOptions added in v1.4.0

type ListStargazersOptions struct {
	// Owner is the owner of the repository (ex: grafana)
	Owner string `json:"owner"`

	// Repository is the name of the repository being queried (ex: grafana)
	Repository string `json:"repository"`
}

ListStargazersOptions is provided when fetching stargazers for a repository

type ListTagsOptions

type ListTagsOptions struct {
	// Repository is the name of the repository being queried (ex: grafana)
	Repository string `json:"repository"`

	// Owner is the owner of the repository (ex: grafana)
	Owner string `json:"owner"`
}

ListTagsOptions are the available options when listing tags

type ListVulnerabilitiesOptions added in v1.3.0

type ListVulnerabilitiesOptions struct {
	// Repository is the name of the repository being queried (ex: grafana)
	Repository string `json:"repository"`

	// Owner is the owner of the repository (ex: grafana)
	Owner string `json:"owner"`
}

ListVulnerabilitiesOptions is provided when listing vulnerabilities in a repository

type ListWorkflowsOptions added in v1.4.7

type ListWorkflowsOptions struct {
	// Owner is the owner of the repository (ex: grafana)
	Owner string `json:"owner"`

	// Repository is the name of the repository being queried (ex: grafana)
	Repository string `json:"repository"`

	// The field used to check if an entry is in the requested range.
	TimeField WorkflowTimeField `json:"timeField"`
}

ListWorkflowsOptions is provided when fetching workflows for a repository

type Milestone added in v1.3.0

type Milestone struct {
	Closed  bool
	Creator struct {
		User User `graphql:"... on User"`
	}
	DueOn     githubv4.DateTime
	ClosedAt  githubv4.DateTime
	CreatedAt githubv4.DateTime
	State     githubv4.MilestoneState
	Title     string
}

Milestone is a GitHub Milestone

type MilestonesQuery

type MilestonesQuery struct {
	Query
	Options ListMilestonesOptions `json:"options"`
}

MilestonesQuery is used when querying for GitHub milestones

type PackagesQuery

type PackagesQuery struct {
	Query
	Options ListPackagesOptions `json:"options"`
}

PackagesQuery is used when querying for GitHub packages, including NPM, Maven, PyPi, Rubygems, and Docker

type PageInfo added in v1.3.0

type PageInfo struct {
	StartCursor githubv4.String
	EndCursor   githubv4.String
	HasNextPage bool
}

PageInfo is a GitHub type used in paginated responses

type ProjectOptions added in v1.3.0

type ProjectOptions struct {
	// Organization is the name of the organization being queried (ex: grafana)
	Organization string `json:"organization"`
	// Number is the project number
	Number any `json:"number"`
	// User is the name of the user who owns the project being queried
	User string `json:"user"`
	// Kind is the kind of query - Org vs User
	Kind int `json:"kind"`
	// Filters allow filtering the results
	Filters []Filter `json:"filters"`
}

ProjectOptions are the available options when listing project items

type ProjectQuery added in v1.3.0

type ProjectQuery struct {
	// Options ...
	Options ProjectOptions `json:"options"`
}

ProjectQuery is used when querying for GitHub Project items

type ProjectsQuery added in v1.3.0

type ProjectsQuery struct {
	// Options ...
	Options ProjectOptions `json:"options"`
}

ProjectsQuery is used when querying for GitHub Projects

type PullRequestTimeField

type PullRequestTimeField uint32

PullRequestTimeField defines what time field to filter pull requests by (closed, opened, merged...)

const (
	// PullRequestClosedAt is used when filtering when a Pull Request was closed
	PullRequestClosedAt PullRequestTimeField = iota
	// PullRequestCreatedAt is used when filtering when a Pull Request was opened
	PullRequestCreatedAt
	// PullRequestMergedAt is used when filtering when a Pull Request was merged
	PullRequestMergedAt
	// PullRequestNone is used when the results are not filtered by time. Without any other filters, using this could easily cause an access token to be rate limited
	PullRequestNone
)

func (PullRequestTimeField) String

func (d PullRequestTimeField) String() string

type PullRequestsQuery

type PullRequestsQuery struct {
	Query
	Options ListPullRequestsOptions `json:"options"`
}

PullRequestsQuery is used when querying for GitHub Pull Requests

type Query

type Query struct {
	Repository string `json:"repository"`
	Owner      string `json:"owner"`
}

Query refers to the structure of a query built using the QueryEditor. Every query uses this query type and has to include options for each type of query. For example, listing commits can be filtered by author, but filtering contributors by author doesn't provide much value, but is included in the query schema anyways.

type ReleasesQuery

type ReleasesQuery struct {
	Query
	Options ListReleasesOptions `json:"options"`
}

ReleasesQuery is used when querying for GitHub issue labels

type RepositoriesQuery added in v1.0.1

type RepositoriesQuery struct {
	Query
}

RepositoriesQuery is used when querying for GitHub repositories

type Repository added in v1.3.0

type Repository struct {
	Name  string
	Owner struct {
		Login string
	}
	NameWithOwner string
	URL           string
	ForkCount     int64
	IsFork        bool
	IsMirror      bool
	IsPrivate     bool
	CreatedAt     githubv4.DateTime
}

Repository is a code repository

type Settings

type Settings struct {
	SelectedAuthType string `json:"selectedAuthType"`
	AccessToken      string `json:"accessToken"`
	PrivateKey       string `json:"privateKey"`
	AppId            string `json:"appId"`
	InstallationId   string `json:"installationId"`
	GitHubURL        string `json:"githubUrl"`
	CachingEnabled   bool   `json:"cachingEnabled"`
}

func LoadSettings

func LoadSettings(settings backend.DataSourceInstanceSettings) (Settings, error)

type StargazersQuery added in v1.4.0

type StargazersQuery struct {
	Query
}

StargazersQuery is used when querying stargazers for a repository

type TagsQuery

type TagsQuery struct {
	Query
	Options ListTagsOptions `json:"options"`
}

TagsQuery is used when querying for GitHub tags

type User added in v1.3.0

type User struct {
	ID      string
	Login   string
	Name    string
	Company string
	Email   string
	URL     string
}

A User is a GitHub user

type VulnerabilityQuery added in v1.3.0

type VulnerabilityQuery struct {
	Query
	Options ListVulnerabilitiesOptions `json:"options"`
}

VulnerabilityQuery is used when querying for GitHub Repository Vulnerabilities

type WorkflowTimeField added in v1.4.7

type WorkflowTimeField uint32

WorkflowTimeField defines what time field to filter Workflows by.

const (
	// WorkflowCreatedAt is used when filtering when an workflow was created
	WorkflowCreatedAt WorkflowTimeField = iota
	// WorkflowUpdatedAt is used when filtering when an Workflow was updated
	WorkflowUpdatedAt
)

type WorkflowUsage added in v1.4.7

type WorkflowUsage struct {
	CostUSD            float64
	UniqueActors       uint64
	Runs               uint64
	SuccessfulRuns     uint64
	FailedRuns         uint64
	CancelledRuns      uint64
	SkippedRuns        uint64
	LongestRunDuration time.Duration
	TotalRunDuration   time.Duration
	P95RunDuration     time.Duration
	RunsPerWeekday     map[time.Weekday]uint64
	UsagePerRunner     map[string]time.Duration
	Name               string
}

WorkflowUsage contains a specific workflow usage information.

type WorkflowUsageOptions added in v1.4.7

type WorkflowUsageOptions struct {
	// Owner is the owner of the repository (ex: grafana)
	Owner string `json:"owner"`

	// Repository is the name of the repository being queried (ex: grafana)
	Repository string `json:"repository"`

	// Workflow is the id or the workflow file name.
	Workflow string `json:"workflow"`
}

WorkflowUsageOptions is provided when fetching a specific workflow usage

type WorkflowUsageQuery added in v1.4.7

type WorkflowUsageQuery struct {
	Query
	Options WorkflowUsageOptions `json:"options"`
}

WorkflowUsageQuery is used when querying a workflow usage

type WorkflowsQuery added in v1.4.7

type WorkflowsQuery struct {
	Query
	Options ListWorkflowsOptions `json:"options"`
}

WorkflowsQuery is used when querying workflows for an organization

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL