repository.go 10 KB

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