repository.go 13 KB

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