repository.go 11 KB

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