repository.go 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. package gorm
  2. import (
  3. "github.com/porter-dev/porter/internal/repository"
  4. "github.com/porter-dev/porter/internal/repository/credentials"
  5. "gorm.io/gorm"
  6. )
  7. type GormRepository struct {
  8. user repository.UserRepository
  9. session repository.SessionRepository
  10. project repository.ProjectRepository
  11. cluster repository.ClusterRepository
  12. database repository.DatabaseRepository
  13. helmRepo repository.HelmRepoRepository
  14. registry repository.RegistryRepository
  15. gitRepo repository.GitRepoRepository
  16. gitActionConfig repository.GitActionConfigRepository
  17. invite repository.InviteRepository
  18. release repository.ReleaseRepository
  19. environment repository.EnvironmentRepository
  20. authCode repository.AuthCodeRepository
  21. dnsRecord repository.DNSRecordRepository
  22. pwResetToken repository.PWResetTokenRepository
  23. infra repository.InfraRepository
  24. kubeIntegration repository.KubeIntegrationRepository
  25. basicIntegration repository.BasicIntegrationRepository
  26. oidcIntegration repository.OIDCIntegrationRepository
  27. oauthIntegration repository.OAuthIntegrationRepository
  28. gcpIntegration repository.GCPIntegrationRepository
  29. awsIntegration repository.AWSIntegrationRepository
  30. azIntegration repository.AzureIntegrationRepository
  31. githubAppInstallation repository.GithubAppInstallationRepository
  32. githubAppOAuthIntegration repository.GithubAppOAuthIntegrationRepository
  33. slackIntegration repository.SlackIntegrationRepository
  34. gitlabIntegration repository.GitlabIntegrationRepository
  35. gitlabAppOAuthIntegration repository.GitlabAppOAuthIntegrationRepository
  36. notificationConfig repository.NotificationConfigRepository
  37. jobNotificationConfig repository.JobNotificationConfigRepository
  38. buildEvent repository.BuildEventRepository
  39. kubeEvent repository.KubeEventRepository
  40. projectUsage repository.ProjectUsageRepository
  41. onboarding repository.ProjectOnboardingRepository
  42. ceToken repository.CredentialsExchangeTokenRepository
  43. buildConfig repository.BuildConfigRepository
  44. allowlist repository.AllowlistRepository
  45. apiToken repository.APITokenRepository
  46. policy repository.PolicyRepository
  47. tag repository.TagRepository
  48. stack repository.StackRepository
  49. monitor repository.MonitorTestResultRepository
  50. }
  51. func (t *GormRepository) User() repository.UserRepository {
  52. return t.user
  53. }
  54. func (t *GormRepository) Session() repository.SessionRepository {
  55. return t.session
  56. }
  57. func (t *GormRepository) Project() repository.ProjectRepository {
  58. return t.project
  59. }
  60. func (t *GormRepository) Cluster() repository.ClusterRepository {
  61. return t.cluster
  62. }
  63. func (t *GormRepository) Database() repository.DatabaseRepository {
  64. return t.database
  65. }
  66. func (t *GormRepository) HelmRepo() repository.HelmRepoRepository {
  67. return t.helmRepo
  68. }
  69. func (t *GormRepository) Registry() repository.RegistryRepository {
  70. return t.registry
  71. }
  72. func (t *GormRepository) GitRepo() repository.GitRepoRepository {
  73. return t.gitRepo
  74. }
  75. func (t *GormRepository) GitActionConfig() repository.GitActionConfigRepository {
  76. return t.gitActionConfig
  77. }
  78. func (t *GormRepository) Invite() repository.InviteRepository {
  79. return t.invite
  80. }
  81. func (t *GormRepository) Release() repository.ReleaseRepository {
  82. return t.release
  83. }
  84. func (t *GormRepository) Environment() repository.EnvironmentRepository {
  85. return t.environment
  86. }
  87. func (t *GormRepository) AuthCode() repository.AuthCodeRepository {
  88. return t.authCode
  89. }
  90. func (t *GormRepository) DNSRecord() repository.DNSRecordRepository {
  91. return t.dnsRecord
  92. }
  93. func (t *GormRepository) PWResetToken() repository.PWResetTokenRepository {
  94. return t.pwResetToken
  95. }
  96. func (t *GormRepository) Infra() repository.InfraRepository {
  97. return t.infra
  98. }
  99. func (t *GormRepository) KubeIntegration() repository.KubeIntegrationRepository {
  100. return t.kubeIntegration
  101. }
  102. func (t *GormRepository) BasicIntegration() repository.BasicIntegrationRepository {
  103. return t.basicIntegration
  104. }
  105. func (t *GormRepository) OIDCIntegration() repository.OIDCIntegrationRepository {
  106. return t.oidcIntegration
  107. }
  108. func (t *GormRepository) OAuthIntegration() repository.OAuthIntegrationRepository {
  109. return t.oauthIntegration
  110. }
  111. func (t *GormRepository) GCPIntegration() repository.GCPIntegrationRepository {
  112. return t.gcpIntegration
  113. }
  114. func (t *GormRepository) AWSIntegration() repository.AWSIntegrationRepository {
  115. return t.awsIntegration
  116. }
  117. func (t *GormRepository) AzureIntegration() repository.AzureIntegrationRepository {
  118. return t.azIntegration
  119. }
  120. func (t *GormRepository) GithubAppInstallation() repository.GithubAppInstallationRepository {
  121. return t.githubAppInstallation
  122. }
  123. func (t *GormRepository) GithubAppOAuthIntegration() repository.GithubAppOAuthIntegrationRepository {
  124. return t.githubAppOAuthIntegration
  125. }
  126. func (t *GormRepository) SlackIntegration() repository.SlackIntegrationRepository {
  127. return t.slackIntegration
  128. }
  129. func (t *GormRepository) GitlabIntegration() repository.GitlabIntegrationRepository {
  130. return t.gitlabIntegration
  131. }
  132. func (t *GormRepository) GitlabAppOAuthIntegration() repository.GitlabAppOAuthIntegrationRepository {
  133. return t.gitlabAppOAuthIntegration
  134. }
  135. func (t *GormRepository) NotificationConfig() repository.NotificationConfigRepository {
  136. return t.notificationConfig
  137. }
  138. func (t *GormRepository) JobNotificationConfig() repository.JobNotificationConfigRepository {
  139. return t.jobNotificationConfig
  140. }
  141. func (t *GormRepository) BuildEvent() repository.BuildEventRepository {
  142. return t.buildEvent
  143. }
  144. func (t *GormRepository) KubeEvent() repository.KubeEventRepository {
  145. return t.kubeEvent
  146. }
  147. func (t *GormRepository) ProjectUsage() repository.ProjectUsageRepository {
  148. return t.projectUsage
  149. }
  150. func (t *GormRepository) Onboarding() repository.ProjectOnboardingRepository {
  151. return t.onboarding
  152. }
  153. func (t *GormRepository) CredentialsExchangeToken() repository.CredentialsExchangeTokenRepository {
  154. return t.ceToken
  155. }
  156. func (t *GormRepository) BuildConfig() repository.BuildConfigRepository {
  157. return t.buildConfig
  158. }
  159. func (t *GormRepository) Allowlist() repository.AllowlistRepository {
  160. return t.allowlist
  161. }
  162. func (t *GormRepository) APIToken() repository.APITokenRepository {
  163. return t.apiToken
  164. }
  165. func (t *GormRepository) Policy() repository.PolicyRepository {
  166. return t.policy
  167. }
  168. func (t *GormRepository) Tag() repository.TagRepository {
  169. return t.tag
  170. }
  171. func (t *GormRepository) Stack() repository.StackRepository {
  172. return t.stack
  173. }
  174. func (t *GormRepository) MonitorTestResult() repository.MonitorTestResultRepository {
  175. return t.monitor
  176. }
  177. // NewRepository returns a Repository which persists users in memory
  178. // and accepts a parameter that can trigger read/write errors
  179. func NewRepository(db *gorm.DB, key *[32]byte, storageBackend credentials.CredentialStorage) repository.Repository {
  180. return &GormRepository{
  181. user: NewUserRepository(db),
  182. session: NewSessionRepository(db),
  183. project: NewProjectRepository(db),
  184. cluster: NewClusterRepository(db, key),
  185. database: NewDatabaseRepository(db, key),
  186. helmRepo: NewHelmRepoRepository(db, key),
  187. registry: NewRegistryRepository(db, key),
  188. gitRepo: NewGitRepoRepository(db, key),
  189. gitActionConfig: NewGitActionConfigRepository(db),
  190. invite: NewInviteRepository(db),
  191. release: NewReleaseRepository(db),
  192. environment: NewEnvironmentRepository(db),
  193. authCode: NewAuthCodeRepository(db),
  194. dnsRecord: NewDNSRecordRepository(db),
  195. pwResetToken: NewPWResetTokenRepository(db),
  196. infra: NewInfraRepository(db, key),
  197. kubeIntegration: NewKubeIntegrationRepository(db, key),
  198. basicIntegration: NewBasicIntegrationRepository(db, key),
  199. oidcIntegration: NewOIDCIntegrationRepository(db, key),
  200. oauthIntegration: NewOAuthIntegrationRepository(db, key, storageBackend),
  201. gcpIntegration: NewGCPIntegrationRepository(db, key, storageBackend),
  202. awsIntegration: NewAWSIntegrationRepository(db, key, storageBackend),
  203. azIntegration: NewAzureIntegrationRepository(db, key, storageBackend),
  204. githubAppInstallation: NewGithubAppInstallationRepository(db),
  205. githubAppOAuthIntegration: NewGithubAppOAuthIntegrationRepository(db),
  206. slackIntegration: NewSlackIntegrationRepository(db, key),
  207. gitlabIntegration: NewGitlabIntegrationRepository(db, key, storageBackend),
  208. gitlabAppOAuthIntegration: NewGitlabAppOAuthIntegrationRepository(db, key, storageBackend),
  209. notificationConfig: NewNotificationConfigRepository(db),
  210. jobNotificationConfig: NewJobNotificationConfigRepository(db),
  211. buildEvent: NewBuildEventRepository(db),
  212. kubeEvent: NewKubeEventRepository(db, key),
  213. projectUsage: NewProjectUsageRepository(db),
  214. onboarding: NewProjectOnboardingRepository(db),
  215. ceToken: NewCredentialsExchangeTokenRepository(db),
  216. buildConfig: NewBuildConfigRepository(db),
  217. allowlist: NewAllowlistRepository(db),
  218. apiToken: NewAPITokenRepository(db),
  219. policy: NewPolicyRepository(db),
  220. tag: NewTagRepository(db),
  221. stack: NewStackRepository(db),
  222. monitor: NewMonitorTestResultRepository(db),
  223. }
  224. }