github.com/esnet/gdg@v0.6.1-0.20240412190737-6b6eba9c14d8/internal/service/contracts.go (about) 1 package service 2 3 import ( 4 "github.com/esnet/gdg/internal/service/filters" 5 "github.com/esnet/gdg/internal/service/types" 6 gdgType "github.com/esnet/gdg/internal/types" 7 "github.com/grafana/grafana-openapi-client-go/models" 8 ) 9 10 type ServerInfoApi interface { 11 GetServerInfo() map[string]interface{} 12 } 13 14 type GrafanaService interface { 15 OrganizationsApi 16 DashboardsApi 17 DashboardPermissionsApi 18 ConnectionsApi 19 UsersApi 20 FoldersApi 21 LibraryElementsApi 22 TeamsApi 23 24 AuthenticationApi 25 //MetaData 26 ServerInfoApi 27 } 28 29 // ConnectionsApi Contract definition 30 type ConnectionsApi interface { 31 ListConnections(filter filters.Filter) []models.DataSourceListItemDTO 32 DownloadConnections(filter filters.Filter) []string 33 UploadConnections(filter filters.Filter) []string 34 DeleteAllConnections(filter filters.Filter) []string 35 ConnectionPermissions 36 } 37 38 type ConnectionPermissions interface { 39 // Permissions Enterprise only 40 ListConnectionPermissions(filter filters.Filter) map[*models.DataSourceListItemDTO]*models.DataSourcePermissionsDTO 41 DownloadConnectionPermissions(filter filters.Filter) []string 42 UploadConnectionPermissions(filter filters.Filter) []string 43 DeleteAllConnectionPermissions(filter filters.Filter) []string 44 } 45 46 // DashboardsApi Contract definition 47 type DashboardsApi interface { 48 ListDashboards(filter filters.Filter) []*models.Hit 49 DownloadDashboards(filter filters.Filter) []string 50 UploadDashboards(filter filters.Filter) 51 DeleteAllDashboards(filter filters.Filter) []string 52 LintDashboards(req types.LintRequest) []string 53 } 54 55 type DashboardPermissionsApi interface { 56 ListDashboardPermissions(filterReq filters.Filter) ([]DashboardAndPermissions, error) 57 DownloadDashboardPermissions(filterReq filters.Filter) ([]string, error) 58 ClearDashboardPermissions(filterReq filters.Filter) error 59 UploadDashboardPermissions(filterReq filters.Filter) ([]string, error) 60 } 61 62 // FoldersApi Contract definition 63 type FoldersApi interface { 64 ListFolder(filter filters.Filter) []*models.Hit 65 DownloadFolders(filter filters.Filter) []string 66 UploadFolders(filter filters.Filter) []string 67 DeleteAllFolders(filter filters.Filter) []string 68 //Permissions 69 ListFolderPermissions(filter filters.Filter) map[*models.Hit][]*models.DashboardACLInfoDTO 70 DownloadFolderPermissions(filter filters.Filter) []string 71 UploadFolderPermissions(filter filters.Filter) []string 72 } 73 74 type LibraryElementsApi interface { 75 ListLibraryElements(filter filters.Filter) []*models.LibraryElementDTO 76 ListLibraryElementsConnections(filter filters.Filter, connectionID string) []*models.DashboardFullWithMeta 77 DownloadLibraryElements(filter filters.Filter) []string 78 UploadLibraryElements(filter filters.Filter) []string 79 DeleteAllLibraryElements(filter filters.Filter) []string 80 } 81 82 // AuthenticationApi Contract definition 83 type AuthenticationApi interface { 84 TokenApi 85 ServiceAccountApi 86 Login() 87 } 88 89 // OrgPreferencesApi Contract definition 90 type OrgPreferencesApi interface { 91 GetOrgPreferences(orgName string) (*models.Preferences, error) 92 UploadOrgPreferences(orgName string, pref *models.Preferences) error 93 } 94 95 type organizationCrudApi interface { 96 ListOrganizations(filter filters.Filter, withPreferences bool) []*gdgType.OrgsDTOWithPreferences 97 DownloadOrganizations(filter filters.Filter) []string 98 UploadOrganizations(filter filters.Filter) []string 99 } 100 101 type organizationToolsApi interface { 102 //Manage Active Organization 103 SetOrganizationByName(name string, useSlug bool) error 104 GetUserOrganization() *models.OrgDetailsDTO 105 GetTokenOrganization() *models.OrgDetailsDTO 106 SetUserOrganizations(id int64) error 107 ListUserOrganizations() ([]*models.UserOrgDTO, error) 108 } 109 110 // organizationUserCrudApi Manages user memberships to an org 111 type organizationUserCrudApi interface { 112 ListOrgUsers(orgId int64) []*models.OrgUserDTO 113 AddUserToOrg(role, orgSlug string, userId int64) error 114 DeleteUserFromOrg(orgId string, userId int64) error 115 UpdateUserInOrg(role, orgSlug string, userId int64) error 116 } 117 118 // OrganizationsApi Contract definition 119 type OrganizationsApi interface { 120 organizationCrudApi 121 organizationToolsApi 122 organizationUserCrudApi 123 OrgPreferencesApi 124 InitOrganizations() 125 } 126 127 type ServiceAccountApi interface { 128 ListServiceAccounts() []*gdgType.ServiceAccountDTOWithTokens 129 ListServiceAccountsTokens(id int64) ([]*models.TokenDTO, error) 130 DeleteAllServiceAccounts() []string 131 DeleteServiceAccountTokens(serviceId int64) []string 132 CreateServiceAccountToken(name int64, role string, expiration int64) (*models.NewAPIKeyResult, error) 133 CreateServiceAccount(name, role string, expiration int64) (*models.ServiceAccountDTO, error) 134 } 135 136 type TeamsApi interface { 137 //Team 138 DownloadTeams(filter filters.Filter) map[*models.TeamDTO][]*models.TeamMemberDTO 139 UploadTeams(filter filters.Filter) map[*models.TeamDTO][]*models.TeamMemberDTO 140 ListTeams(filter filters.Filter) map[*models.TeamDTO][]*models.TeamMemberDTO 141 DeleteTeam(filter filters.Filter) ([]*models.TeamDTO, error) 142 } 143 144 type TokenApi interface { 145 ListAPIKeys() []*models.APIKeyDTO 146 DeleteAllTokens() []string 147 CreateAPIKey(name, role string, expiration int64) (*models.NewAPIKeyResult, error) 148 } 149 150 // UsersApi Contract definition 151 type UsersApi interface { 152 //UserApi 153 ListUsers(filter filters.Filter) []*models.UserSearchHitDTO 154 DownloadUsers(filter filters.Filter) []string 155 UploadUsers(filter filters.Filter) []gdgType.UserProfileWithAuth 156 DeleteAllUsers(filter filters.Filter) []string 157 // Tools 158 PromoteUser(userLogin string) (string, error) 159 GetUserInfo() (*models.UserProfileDTO, error) 160 }