|
|
@@ -1,724 +0,0 @@
|
|
|
-package test
|
|
|
-
|
|
|
-import (
|
|
|
- "errors"
|
|
|
-
|
|
|
- "github.com/porter-dev/porter/internal/repository"
|
|
|
- "gorm.io/gorm"
|
|
|
-
|
|
|
- ints "github.com/porter-dev/porter/internal/models/integrations"
|
|
|
-)
|
|
|
-
|
|
|
-// KubeIntegrationRepository implements repository.KubeIntegrationRepository
|
|
|
-type KubeIntegrationRepository struct {
|
|
|
- canQuery bool
|
|
|
- kubeIntegrations []*ints.KubeIntegration
|
|
|
-}
|
|
|
-
|
|
|
-// NewKubeIntegrationRepository will return errors if canQuery is false
|
|
|
-func NewKubeIntegrationRepository(canQuery bool) repository.KubeIntegrationRepository {
|
|
|
- return &KubeIntegrationRepository{
|
|
|
- canQuery,
|
|
|
- []*ints.KubeIntegration{},
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-// CreateKubeIntegration creates a new kube auth mechanism
|
|
|
-func (repo *KubeIntegrationRepository) CreateKubeIntegration(
|
|
|
- am *ints.KubeIntegration,
|
|
|
-) (*ints.KubeIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- repo.kubeIntegrations = append(repo.kubeIntegrations, am)
|
|
|
- am.ID = uint(len(repo.kubeIntegrations))
|
|
|
-
|
|
|
- return am, nil
|
|
|
-}
|
|
|
-
|
|
|
-// ReadKubeIntegration finds a kube auth mechanism by id
|
|
|
-func (repo *KubeIntegrationRepository) ReadKubeIntegration(
|
|
|
- projectID, id uint,
|
|
|
-) (*ints.KubeIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot read from database")
|
|
|
- }
|
|
|
-
|
|
|
- if int(id-1) >= len(repo.kubeIntegrations) || repo.kubeIntegrations[id-1] == nil {
|
|
|
- return nil, gorm.ErrRecordNotFound
|
|
|
- }
|
|
|
-
|
|
|
- index := int(id - 1)
|
|
|
- return repo.kubeIntegrations[index], nil
|
|
|
-}
|
|
|
-
|
|
|
-// ListKubeIntegrationsByProjectID finds all kube auth mechanisms
|
|
|
-// for a given project id
|
|
|
-func (repo *KubeIntegrationRepository) ListKubeIntegrationsByProjectID(
|
|
|
- projectID uint,
|
|
|
-) ([]*ints.KubeIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot read from database")
|
|
|
- }
|
|
|
-
|
|
|
- res := make([]*ints.KubeIntegration, 0)
|
|
|
-
|
|
|
- for _, kubeAM := range repo.kubeIntegrations {
|
|
|
- if kubeAM.ProjectID == projectID {
|
|
|
- res = append(res, kubeAM)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return res, nil
|
|
|
-}
|
|
|
-
|
|
|
-// BasicIntegrationRepository implements repository.BasicIntegrationRepository
|
|
|
-type BasicIntegrationRepository struct {
|
|
|
- canQuery bool
|
|
|
- basicIntegrations []*ints.BasicIntegration
|
|
|
-}
|
|
|
-
|
|
|
-// NewBasicIntegrationRepository will return errors if canQuery is false
|
|
|
-func NewBasicIntegrationRepository(canQuery bool) repository.BasicIntegrationRepository {
|
|
|
- return &BasicIntegrationRepository{
|
|
|
- canQuery,
|
|
|
- []*ints.BasicIntegration{},
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-// CreateBasicIntegration creates a new basic auth mechanism
|
|
|
-func (repo *BasicIntegrationRepository) CreateBasicIntegration(
|
|
|
- am *ints.BasicIntegration,
|
|
|
-) (*ints.BasicIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- repo.basicIntegrations = append(repo.basicIntegrations, am)
|
|
|
- am.ID = uint(len(repo.basicIntegrations))
|
|
|
-
|
|
|
- return am, nil
|
|
|
-}
|
|
|
-
|
|
|
-// ReadBasicIntegration finds a basic auth mechanism by id
|
|
|
-func (repo *BasicIntegrationRepository) ReadBasicIntegration(
|
|
|
- projectID, id uint,
|
|
|
-) (*ints.BasicIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot read from database")
|
|
|
- }
|
|
|
-
|
|
|
- if int(id-1) >= len(repo.basicIntegrations) || repo.basicIntegrations[id-1] == nil {
|
|
|
- return nil, gorm.ErrRecordNotFound
|
|
|
- }
|
|
|
-
|
|
|
- index := int(id - 1)
|
|
|
- return repo.basicIntegrations[index], nil
|
|
|
-}
|
|
|
-
|
|
|
-// ListBasicIntegrationsByProjectID finds all basic auth mechanisms
|
|
|
-// for a given project id
|
|
|
-func (repo *BasicIntegrationRepository) ListBasicIntegrationsByProjectID(
|
|
|
- projectID uint,
|
|
|
-) ([]*ints.BasicIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot read from database")
|
|
|
- }
|
|
|
-
|
|
|
- res := make([]*ints.BasicIntegration, 0)
|
|
|
-
|
|
|
- for _, basicAM := range repo.basicIntegrations {
|
|
|
- if basicAM.ProjectID == projectID {
|
|
|
- res = append(res, basicAM)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return res, nil
|
|
|
-}
|
|
|
-
|
|
|
-// DeleteBasicIntegration deletes a basic integration
|
|
|
-func (repo *BasicIntegrationRepository) DeleteBasicIntegration(
|
|
|
- am *ints.BasicIntegration,
|
|
|
-) (*ints.BasicIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot read from database")
|
|
|
- }
|
|
|
-
|
|
|
- var newInts []*ints.BasicIntegration
|
|
|
-
|
|
|
- for _, basicInt := range repo.basicIntegrations {
|
|
|
- if basicInt.ID != am.ID {
|
|
|
- newInts = append(newInts, basicInt)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- repo.basicIntegrations = newInts
|
|
|
-
|
|
|
- return am, nil
|
|
|
-}
|
|
|
-
|
|
|
-// OIDCIntegrationRepository implements repository.OIDCIntegrationRepository
|
|
|
-type OIDCIntegrationRepository struct {
|
|
|
- canQuery bool
|
|
|
- oidcIntegrations []*ints.OIDCIntegration
|
|
|
-}
|
|
|
-
|
|
|
-// NewOIDCIntegrationRepository will return errors if canQuery is false
|
|
|
-func NewOIDCIntegrationRepository(canQuery bool) repository.OIDCIntegrationRepository {
|
|
|
- return &OIDCIntegrationRepository{
|
|
|
- canQuery,
|
|
|
- []*ints.OIDCIntegration{},
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-// CreateOIDCIntegration creates a new oidc auth mechanism
|
|
|
-func (repo *OIDCIntegrationRepository) CreateOIDCIntegration(
|
|
|
- am *ints.OIDCIntegration,
|
|
|
-) (*ints.OIDCIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- repo.oidcIntegrations = append(repo.oidcIntegrations, am)
|
|
|
- am.ID = uint(len(repo.oidcIntegrations))
|
|
|
-
|
|
|
- return am, nil
|
|
|
-}
|
|
|
-
|
|
|
-// ReadOIDCIntegration finds a oidc auth mechanism by id
|
|
|
-func (repo *OIDCIntegrationRepository) ReadOIDCIntegration(
|
|
|
- projectID, id uint,
|
|
|
-) (*ints.OIDCIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot read from database")
|
|
|
- }
|
|
|
-
|
|
|
- if int(id-1) >= len(repo.oidcIntegrations) || repo.oidcIntegrations[id-1] == nil {
|
|
|
- return nil, gorm.ErrRecordNotFound
|
|
|
- }
|
|
|
-
|
|
|
- index := int(id - 1)
|
|
|
- return repo.oidcIntegrations[index], nil
|
|
|
-}
|
|
|
-
|
|
|
-// ListOIDCIntegrationsByProjectID finds all oidc auth mechanisms
|
|
|
-// for a given project id
|
|
|
-func (repo *OIDCIntegrationRepository) ListOIDCIntegrationsByProjectID(
|
|
|
- projectID uint,
|
|
|
-) ([]*ints.OIDCIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot read from database")
|
|
|
- }
|
|
|
-
|
|
|
- res := make([]*ints.OIDCIntegration, 0)
|
|
|
-
|
|
|
- for _, oidcAM := range repo.oidcIntegrations {
|
|
|
- if oidcAM.ProjectID == projectID {
|
|
|
- res = append(res, oidcAM)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return res, nil
|
|
|
-}
|
|
|
-
|
|
|
-// OAuthIntegrationRepository implements repository.OAuthIntegrationRepository
|
|
|
-type OAuthIntegrationRepository struct {
|
|
|
- canQuery bool
|
|
|
- oIntegrations []*ints.OAuthIntegration
|
|
|
-}
|
|
|
-
|
|
|
-// NewOAuthIntegrationRepository will return errors if canQuery is false
|
|
|
-func NewOAuthIntegrationRepository(canQuery bool) repository.OAuthIntegrationRepository {
|
|
|
- return &OAuthIntegrationRepository{
|
|
|
- canQuery,
|
|
|
- []*ints.OAuthIntegration{},
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-// CreateOAuthIntegration creates a new o auth mechanism
|
|
|
-func (repo *OAuthIntegrationRepository) CreateOAuthIntegration(
|
|
|
- am *ints.OAuthIntegration,
|
|
|
-) (*ints.OAuthIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- repo.oIntegrations = append(repo.oIntegrations, am)
|
|
|
- am.ID = uint(len(repo.oIntegrations))
|
|
|
-
|
|
|
- return am, nil
|
|
|
-}
|
|
|
-
|
|
|
-// ReadOAuthIntegration finds a o auth mechanism by id
|
|
|
-func (repo *OAuthIntegrationRepository) ReadOAuthIntegration(
|
|
|
- projectID, id uint,
|
|
|
-) (*ints.OAuthIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot read from database")
|
|
|
- }
|
|
|
-
|
|
|
- if int(id-1) >= len(repo.oIntegrations) || repo.oIntegrations[id-1] == nil {
|
|
|
- return nil, gorm.ErrRecordNotFound
|
|
|
- }
|
|
|
-
|
|
|
- index := int(id - 1)
|
|
|
- return repo.oIntegrations[index], nil
|
|
|
-}
|
|
|
-
|
|
|
-// ListOAuthIntegrationsByProjectID finds all o auth mechanisms
|
|
|
-// for a given project id
|
|
|
-func (repo *OAuthIntegrationRepository) ListOAuthIntegrationsByProjectID(
|
|
|
- projectID uint,
|
|
|
-) ([]*ints.OAuthIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot read from database")
|
|
|
- }
|
|
|
-
|
|
|
- res := make([]*ints.OAuthIntegration, 0)
|
|
|
-
|
|
|
- for _, oAM := range repo.oIntegrations {
|
|
|
- if oAM.ProjectID == projectID {
|
|
|
- res = append(res, oAM)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return res, nil
|
|
|
-}
|
|
|
-
|
|
|
-// UpdateOAuthIntegration updates an oauth integration in the DB
|
|
|
-func (repo *OAuthIntegrationRepository) UpdateOAuthIntegration(
|
|
|
- am *ints.OAuthIntegration,
|
|
|
-) (*ints.OAuthIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- if int(am.ID-1) >= len(repo.oIntegrations) || repo.oIntegrations[am.ID-1] == nil {
|
|
|
- return nil, gorm.ErrRecordNotFound
|
|
|
- }
|
|
|
-
|
|
|
- index := int(am.ID - 1)
|
|
|
- repo.oIntegrations[index] = am
|
|
|
-
|
|
|
- return am, nil
|
|
|
-}
|
|
|
-
|
|
|
-// AWSIntegrationRepository implements repository.AWSIntegrationRepository
|
|
|
-type AWSIntegrationRepository struct {
|
|
|
- canQuery bool
|
|
|
- awsIntegrations []*ints.AWSIntegration
|
|
|
-}
|
|
|
-
|
|
|
-// NewAWSIntegrationRepository will return errors if canQuery is false
|
|
|
-func NewAWSIntegrationRepository(canQuery bool) repository.AWSIntegrationRepository {
|
|
|
- return &AWSIntegrationRepository{
|
|
|
- canQuery,
|
|
|
- []*ints.AWSIntegration{},
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-// CreateAWSIntegration creates a new aws auth mechanism
|
|
|
-func (repo *AWSIntegrationRepository) CreateAWSIntegration(
|
|
|
- am *ints.AWSIntegration,
|
|
|
-) (*ints.AWSIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- repo.awsIntegrations = append(repo.awsIntegrations, am)
|
|
|
- am.ID = uint(len(repo.awsIntegrations))
|
|
|
-
|
|
|
- return am, nil
|
|
|
-}
|
|
|
-
|
|
|
-func (repo *AWSIntegrationRepository) OverwriteAWSIntegration(
|
|
|
- am *ints.AWSIntegration,
|
|
|
-) (*ints.AWSIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- if int(am.ID-1) >= len(repo.awsIntegrations) || repo.awsIntegrations[am.ID-1] == nil {
|
|
|
- return nil, gorm.ErrRecordNotFound
|
|
|
- }
|
|
|
-
|
|
|
- index := int(am.ID - 1)
|
|
|
- repo.awsIntegrations[index] = am
|
|
|
-
|
|
|
- return am, nil
|
|
|
-}
|
|
|
-
|
|
|
-// ReadAWSIntegration finds a aws auth mechanism by id
|
|
|
-func (repo *AWSIntegrationRepository) ReadAWSIntegration(
|
|
|
- projectID, id uint,
|
|
|
-) (*ints.AWSIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot read from database")
|
|
|
- }
|
|
|
-
|
|
|
- if int(id-1) >= len(repo.awsIntegrations) || repo.awsIntegrations[id-1] == nil {
|
|
|
- return nil, gorm.ErrRecordNotFound
|
|
|
- }
|
|
|
-
|
|
|
- index := int(id - 1)
|
|
|
- return repo.awsIntegrations[index], nil
|
|
|
-}
|
|
|
-
|
|
|
-// ListAWSIntegrationsByProjectID finds all aws auth mechanisms
|
|
|
-// for a given project id
|
|
|
-func (repo *AWSIntegrationRepository) ListAWSIntegrationsByProjectID(
|
|
|
- projectID uint,
|
|
|
-) ([]*ints.AWSIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot read from database")
|
|
|
- }
|
|
|
-
|
|
|
- res := make([]*ints.AWSIntegration, 0)
|
|
|
-
|
|
|
- for _, awsAM := range repo.awsIntegrations {
|
|
|
- if awsAM.ProjectID == projectID {
|
|
|
- res = append(res, awsAM)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return res, nil
|
|
|
-}
|
|
|
-
|
|
|
-// GCPIntegrationRepository implements repository.GCPIntegrationRepository
|
|
|
-type GCPIntegrationRepository struct {
|
|
|
- canQuery bool
|
|
|
- gcpIntegrations []*ints.GCPIntegration
|
|
|
-}
|
|
|
-
|
|
|
-// NewGCPIntegrationRepository will return errors if canQuery is false
|
|
|
-func NewGCPIntegrationRepository(canQuery bool) repository.GCPIntegrationRepository {
|
|
|
- return &GCPIntegrationRepository{
|
|
|
- canQuery,
|
|
|
- []*ints.GCPIntegration{},
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-// CreateGCPIntegration creates a new gcp auth mechanism
|
|
|
-func (repo *GCPIntegrationRepository) CreateGCPIntegration(
|
|
|
- am *ints.GCPIntegration,
|
|
|
-) (*ints.GCPIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- repo.gcpIntegrations = append(repo.gcpIntegrations, am)
|
|
|
- am.ID = uint(len(repo.gcpIntegrations))
|
|
|
-
|
|
|
- return am, nil
|
|
|
-}
|
|
|
-
|
|
|
-// ReadGCPIntegration finds a gcp auth mechanism by id
|
|
|
-func (repo *GCPIntegrationRepository) ReadGCPIntegration(
|
|
|
- projectID, id uint,
|
|
|
-) (*ints.GCPIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot read from database")
|
|
|
- }
|
|
|
-
|
|
|
- if int(id-1) >= len(repo.gcpIntegrations) || repo.gcpIntegrations[id-1] == nil {
|
|
|
- return nil, gorm.ErrRecordNotFound
|
|
|
- }
|
|
|
-
|
|
|
- index := int(id - 1)
|
|
|
- return repo.gcpIntegrations[index], nil
|
|
|
-}
|
|
|
-
|
|
|
-// ListGCPIntegrationsByProjectID finds all gcp auth mechanisms
|
|
|
-// for a given project id
|
|
|
-func (repo *GCPIntegrationRepository) ListGCPIntegrationsByProjectID(
|
|
|
- projectID uint,
|
|
|
-) ([]*ints.GCPIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot read from database")
|
|
|
- }
|
|
|
-
|
|
|
- res := make([]*ints.GCPIntegration, 0)
|
|
|
-
|
|
|
- for _, gcpAM := range repo.gcpIntegrations {
|
|
|
- if gcpAM.ProjectID == projectID {
|
|
|
- res = append(res, gcpAM)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return res, nil
|
|
|
-}
|
|
|
-
|
|
|
-// GithubAppInstallationRepository implements repository.GithubAppInstallationRepository
|
|
|
-type GithubAppInstallationRepository struct {
|
|
|
- canQuery bool
|
|
|
- githubAppInstallations []*ints.GithubAppInstallation
|
|
|
-}
|
|
|
-
|
|
|
-func NewGithubAppInstallationRepository(canQuery bool) repository.GithubAppInstallationRepository {
|
|
|
- return &GithubAppInstallationRepository{
|
|
|
- canQuery,
|
|
|
- []*ints.GithubAppInstallation{},
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func (repo *GithubAppInstallationRepository) CreateGithubAppInstallation(am *ints.GithubAppInstallation) (*ints.GithubAppInstallation, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- repo.githubAppInstallations = append(repo.githubAppInstallations, am)
|
|
|
- am.ID = uint(len(repo.githubAppInstallations))
|
|
|
-
|
|
|
- return am, nil
|
|
|
-}
|
|
|
-
|
|
|
-func (repo *GithubAppInstallationRepository) ReadGithubAppInstallation(projectID, id uint) (*ints.GithubAppInstallation, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- if int(id-1) >= len(repo.githubAppInstallations) || repo.githubAppInstallations[id-1] == nil {
|
|
|
- return nil, gorm.ErrRecordNotFound
|
|
|
- }
|
|
|
-
|
|
|
- return repo.githubAppInstallations[int(id-1)], nil
|
|
|
-}
|
|
|
-
|
|
|
-func (repo *GithubAppInstallationRepository) ReadGithubAppInstallationByInstallationID(gaID uint) (*ints.GithubAppInstallation, error) {
|
|
|
- panic("unimplemented")
|
|
|
-}
|
|
|
-
|
|
|
-func (repo *GithubAppInstallationRepository) ReadGithubAppInstallationByAccountID(accountID int64) (*ints.GithubAppInstallation, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- for _, installation := range repo.githubAppInstallations {
|
|
|
- if installation != nil && installation.AccountID == accountID {
|
|
|
- return installation, nil
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return nil, gorm.ErrRecordNotFound
|
|
|
-}
|
|
|
-
|
|
|
-func (repo *GithubAppInstallationRepository) ReadGithubAppInstallationByAccountIDs(accountIDs []int64) ([]*ints.GithubAppInstallation, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- ret := make([]*ints.GithubAppInstallation, 0)
|
|
|
-
|
|
|
- for _, installation := range repo.githubAppInstallations {
|
|
|
- // O(n^2) can be made into O(n) if this is too slow
|
|
|
- for _, id := range accountIDs {
|
|
|
- if installation.AccountID == id {
|
|
|
- ret = append(ret, installation)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return ret, nil
|
|
|
-}
|
|
|
-
|
|
|
-func (repo *GithubAppInstallationRepository) DeleteGithubAppInstallationByAccountID(accountID int64) error {
|
|
|
- if !repo.canQuery {
|
|
|
- return errors.New("cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- for i, installation := range repo.githubAppInstallations {
|
|
|
- if installation != nil && installation.AccountID == accountID {
|
|
|
- repo.githubAppInstallations[i] = nil
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return nil
|
|
|
-}
|
|
|
-
|
|
|
-type GithubAppOAuthIntegrationRepository struct {
|
|
|
- canQuery bool
|
|
|
- githubAppOauthIntegrations []*ints.GithubAppOAuthIntegration
|
|
|
-}
|
|
|
-
|
|
|
-func NewGithubAppOAuthIntegrationRepository(canQuery bool) repository.GithubAppOAuthIntegrationRepository {
|
|
|
- return &GithubAppOAuthIntegrationRepository{
|
|
|
- canQuery,
|
|
|
- []*ints.GithubAppOAuthIntegration{},
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func (repo *GithubAppOAuthIntegrationRepository) CreateGithubAppOAuthIntegration(am *ints.GithubAppOAuthIntegration) (*ints.GithubAppOAuthIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- repo.githubAppOauthIntegrations = append(repo.githubAppOauthIntegrations, am)
|
|
|
- am.ID = uint(len(repo.githubAppOauthIntegrations))
|
|
|
-
|
|
|
- return am, nil
|
|
|
-}
|
|
|
-
|
|
|
-func (repo *GithubAppOAuthIntegrationRepository) ReadGithubAppOauthIntegration(id uint) (*ints.GithubAppOAuthIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- if int(id-1) >= len(repo.githubAppOauthIntegrations) || repo.githubAppOauthIntegrations[id-1] == nil {
|
|
|
- return nil, gorm.ErrRecordNotFound
|
|
|
- }
|
|
|
-
|
|
|
- return repo.githubAppOauthIntegrations[int(id-1)], nil
|
|
|
-}
|
|
|
-
|
|
|
-func (repo *GithubAppOAuthIntegrationRepository) UpdateGithubAppOauthIntegration(am *ints.GithubAppOAuthIntegration) (*ints.GithubAppOAuthIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- if int(am.ID-1) >= len(repo.githubAppOauthIntegrations) || repo.githubAppOauthIntegrations[am.ID-1] == nil {
|
|
|
- return nil, gorm.ErrRecordNotFound
|
|
|
- }
|
|
|
-
|
|
|
- index := int(am.ID - 1)
|
|
|
- repo.githubAppOauthIntegrations[index] = am
|
|
|
-
|
|
|
- return am, nil
|
|
|
-}
|
|
|
-
|
|
|
-// AzureIntegrationRepository (unimplemented)
|
|
|
-type AzureIntegrationRepository struct{}
|
|
|
-
|
|
|
-// NewAzureIntegrationRepository returns a AzureIntegrationRepository which uses
|
|
|
-// gorm.DB for querying the database. It accepts an encryption key to encrypt
|
|
|
-// sensitive data
|
|
|
-func NewAzureIntegrationRepository() repository.AzureIntegrationRepository {
|
|
|
- return &AzureIntegrationRepository{}
|
|
|
-}
|
|
|
-
|
|
|
-// CreateAzureIntegration creates a new Azure auth mechanism
|
|
|
-func (repo *AzureIntegrationRepository) CreateAzureIntegration(
|
|
|
- az *ints.AzureIntegration,
|
|
|
-) (*ints.AzureIntegration, error) {
|
|
|
- panic("unimplemented")
|
|
|
-}
|
|
|
-
|
|
|
-// OverwriteAzureIntegration overwrites the Azure credential in the DB
|
|
|
-func (repo *AzureIntegrationRepository) OverwriteAzureIntegration(
|
|
|
- az *ints.AzureIntegration,
|
|
|
-) (*ints.AzureIntegration, error) {
|
|
|
- panic("unimplemented")
|
|
|
-}
|
|
|
-
|
|
|
-// ReadAzureIntegration finds a Azure auth mechanism by id
|
|
|
-func (repo *AzureIntegrationRepository) ReadAzureIntegration(
|
|
|
- projectID, id uint,
|
|
|
-) (*ints.AzureIntegration, error) {
|
|
|
- panic("unimplemented")
|
|
|
-}
|
|
|
-
|
|
|
-// ListAzureIntegrationsByProjectID finds all Azure auth mechanisms
|
|
|
-// for a given project id
|
|
|
-func (repo *AzureIntegrationRepository) ListAzureIntegrationsByProjectID(
|
|
|
- projectID uint,
|
|
|
-) ([]*ints.AzureIntegration, error) {
|
|
|
- panic("unimplemented")
|
|
|
-}
|
|
|
-
|
|
|
-type GitlabIntegrationRepository struct {
|
|
|
- canQuery bool
|
|
|
- gitlabIntegrations []*ints.GitlabIntegration
|
|
|
-}
|
|
|
-
|
|
|
-func NewGitlabIntegrationRepository(canQuery bool) repository.GitlabIntegrationRepository {
|
|
|
- return &GitlabIntegrationRepository{
|
|
|
- canQuery,
|
|
|
- []*ints.GitlabIntegration{},
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func (repo *GitlabIntegrationRepository) CreateGitlabIntegration(gi *ints.GitlabIntegration) (*ints.GitlabIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- repo.gitlabIntegrations = append(repo.gitlabIntegrations, gi)
|
|
|
- gi.ID = uint(len(repo.gitlabIntegrations))
|
|
|
-
|
|
|
- return gi, nil
|
|
|
-}
|
|
|
-
|
|
|
-func (repo *GitlabIntegrationRepository) ReadGitlabIntegration(projectID, id uint) (*ints.GitlabIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot read from database")
|
|
|
- }
|
|
|
-
|
|
|
- if int(id-1) >= len(repo.gitlabIntegrations) || repo.gitlabIntegrations[id-1] == nil {
|
|
|
- return nil, gorm.ErrRecordNotFound
|
|
|
- }
|
|
|
-
|
|
|
- index := int(id - 1)
|
|
|
- return repo.gitlabIntegrations[index], nil
|
|
|
-}
|
|
|
-
|
|
|
-func (repo *GitlabIntegrationRepository) ListGitlabIntegrationsByProjectID(projectID uint) ([]*ints.GitlabIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("Cannot read from database")
|
|
|
- }
|
|
|
-
|
|
|
- res := make([]*ints.GitlabIntegration, 0)
|
|
|
-
|
|
|
- for _, gitlabAM := range repo.gitlabIntegrations {
|
|
|
- if gitlabAM.ProjectID == projectID {
|
|
|
- res = append(res, gitlabAM)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return res, nil
|
|
|
-}
|
|
|
-
|
|
|
-func (repo *GitlabIntegrationRepository) DeleteGitlabIntegrationByID(projectID, id uint) error {
|
|
|
- if !repo.canQuery {
|
|
|
- return errors.New("Cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- if int(id-1) >= len(repo.gitlabIntegrations) || repo.gitlabIntegrations[id-1] == nil || repo.gitlabIntegrations[id-1].ProjectID != projectID {
|
|
|
- return gorm.ErrRecordNotFound
|
|
|
- }
|
|
|
-
|
|
|
- index := int(id - 1)
|
|
|
- repo.gitlabIntegrations[index] = nil
|
|
|
-
|
|
|
- return nil
|
|
|
-}
|
|
|
-
|
|
|
-type GitlabAppOAuthIntegrationRepository struct {
|
|
|
- canQuery bool
|
|
|
- gitlabAppOAuthIntegrations []*ints.GitlabAppOAuthIntegration
|
|
|
-}
|
|
|
-
|
|
|
-func NewGitlabAppOAuthIntegrationRepository(canQuery bool) repository.GitlabAppOAuthIntegrationRepository {
|
|
|
- return &GitlabAppOAuthIntegrationRepository{
|
|
|
- canQuery,
|
|
|
- []*ints.GitlabAppOAuthIntegration{},
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func (repo *GitlabAppOAuthIntegrationRepository) CreateGitlabAppOAuthIntegration(
|
|
|
- gi *ints.GitlabAppOAuthIntegration,
|
|
|
-) (*ints.GitlabAppOAuthIntegration, error) {
|
|
|
- if !repo.canQuery {
|
|
|
- return nil, errors.New("cannot write database")
|
|
|
- }
|
|
|
-
|
|
|
- repo.gitlabAppOAuthIntegrations = append(repo.gitlabAppOAuthIntegrations, gi)
|
|
|
- gi.ID = uint(len(repo.gitlabAppOAuthIntegrations))
|
|
|
-
|
|
|
- return gi, nil
|
|
|
-}
|
|
|
-
|
|
|
-func (repo *GitlabAppOAuthIntegrationRepository) ReadGitlabAppOAuthIntegration(
|
|
|
- userID, projectID, integrationID uint,
|
|
|
-) (*ints.GitlabAppOAuthIntegration, error) {
|
|
|
- panic("not implemented")
|
|
|
-}
|