repository.go 11 KB

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