repository.go 12 KB

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