repository.go 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  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. projectRole repository.ProjectRoleRepository
  12. cluster repository.ClusterRepository
  13. database repository.DatabaseRepository
  14. helmRepo repository.HelmRepoRepository
  15. registry repository.RegistryRepository
  16. gitRepo repository.GitRepoRepository
  17. gitActionConfig repository.GitActionConfigRepository
  18. invite repository.InviteRepository
  19. release repository.ReleaseRepository
  20. environment repository.EnvironmentRepository
  21. authCode repository.AuthCodeRepository
  22. dnsRecord repository.DNSRecordRepository
  23. pwResetToken repository.PWResetTokenRepository
  24. infra repository.InfraRepository
  25. kubeIntegration repository.KubeIntegrationRepository
  26. basicIntegration repository.BasicIntegrationRepository
  27. oidcIntegration repository.OIDCIntegrationRepository
  28. oauthIntegration repository.OAuthIntegrationRepository
  29. gcpIntegration repository.GCPIntegrationRepository
  30. awsIntegration repository.AWSIntegrationRepository
  31. azIntegration repository.AzureIntegrationRepository
  32. githubAppInstallation repository.GithubAppInstallationRepository
  33. githubAppOAuthIntegration repository.GithubAppOAuthIntegrationRepository
  34. slackIntegration repository.SlackIntegrationRepository
  35. gitlabIntegration repository.GitlabIntegrationRepository
  36. gitlabAppOAuthIntegration repository.GitlabAppOAuthIntegrationRepository
  37. notificationConfig repository.NotificationConfigRepository
  38. jobNotificationConfig repository.JobNotificationConfigRepository
  39. buildEvent repository.BuildEventRepository
  40. kubeEvent repository.KubeEventRepository
  41. projectUsage repository.ProjectUsageRepository
  42. onboarding repository.ProjectOnboardingRepository
  43. ceToken repository.CredentialsExchangeTokenRepository
  44. buildConfig repository.BuildConfigRepository
  45. allowlist repository.AllowlistRepository
  46. apiToken repository.APITokenRepository
  47. policy repository.PolicyRepository
  48. tag repository.TagRepository
  49. stack repository.StackRepository
  50. monitor repository.MonitorTestResultRepository
  51. }
  52. func (t *GormRepository) User() repository.UserRepository {
  53. return t.user
  54. }
  55. func (t *GormRepository) Session() repository.SessionRepository {
  56. return t.session
  57. }
  58. func (t *GormRepository) Project() repository.ProjectRepository {
  59. return t.project
  60. }
  61. func (t *GormRepository) ProjectRole() repository.ProjectRoleRepository {
  62. return t.projectRole
  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) MonitorTestResult() repository.MonitorTestResultRepository {
  179. return t.monitor
  180. }
  181. // NewRepository returns a Repository which persists users in memory
  182. // and accepts a parameter that can trigger read/write errors
  183. func NewRepository(db *gorm.DB, key *[32]byte, storageBackend credentials.CredentialStorage) repository.Repository {
  184. return &GormRepository{
  185. user: NewUserRepository(db),
  186. session: NewSessionRepository(db),
  187. project: NewProjectRepository(db),
  188. projectRole: NewProjectRoleRepository(db),
  189. cluster: NewClusterRepository(db, key),
  190. database: NewDatabaseRepository(db, key),
  191. helmRepo: NewHelmRepoRepository(db, key),
  192. registry: NewRegistryRepository(db, key),
  193. gitRepo: NewGitRepoRepository(db, key),
  194. gitActionConfig: NewGitActionConfigRepository(db),
  195. invite: NewInviteRepository(db),
  196. release: NewReleaseRepository(db),
  197. environment: NewEnvironmentRepository(db),
  198. authCode: NewAuthCodeRepository(db),
  199. dnsRecord: NewDNSRecordRepository(db),
  200. pwResetToken: NewPWResetTokenRepository(db),
  201. infra: NewInfraRepository(db, key),
  202. kubeIntegration: NewKubeIntegrationRepository(db, key),
  203. basicIntegration: NewBasicIntegrationRepository(db, key),
  204. oidcIntegration: NewOIDCIntegrationRepository(db, key),
  205. oauthIntegration: NewOAuthIntegrationRepository(db, key, storageBackend),
  206. gcpIntegration: NewGCPIntegrationRepository(db, key, storageBackend),
  207. awsIntegration: NewAWSIntegrationRepository(db, key, storageBackend),
  208. azIntegration: NewAzureIntegrationRepository(db, key, storageBackend),
  209. githubAppInstallation: NewGithubAppInstallationRepository(db),
  210. githubAppOAuthIntegration: NewGithubAppOAuthIntegrationRepository(db),
  211. slackIntegration: NewSlackIntegrationRepository(db, key),
  212. gitlabIntegration: NewGitlabIntegrationRepository(db, key, storageBackend),
  213. gitlabAppOAuthIntegration: NewGitlabAppOAuthIntegrationRepository(db, key, storageBackend),
  214. notificationConfig: NewNotificationConfigRepository(db),
  215. jobNotificationConfig: NewJobNotificationConfigRepository(db),
  216. buildEvent: NewBuildEventRepository(db),
  217. kubeEvent: NewKubeEventRepository(db, key),
  218. projectUsage: NewProjectUsageRepository(db),
  219. onboarding: NewProjectOnboardingRepository(db),
  220. ceToken: NewCredentialsExchangeTokenRepository(db),
  221. buildConfig: NewBuildConfigRepository(db),
  222. allowlist: NewAllowlistRepository(db),
  223. apiToken: NewAPITokenRepository(db),
  224. policy: NewPolicyRepository(db),
  225. tag: NewTagRepository(db),
  226. stack: NewStackRepository(db),
  227. monitor: NewMonitorTestResultRepository(db),
  228. }
  229. }