app_revision.go 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package models
  2. import (
  3. "github.com/google/uuid"
  4. "gorm.io/gorm"
  5. )
  6. // AppRevisionStatus is the status of an app revision
  7. type AppRevisionStatus string
  8. const (
  9. // AppRevisionStatus_Created is the initial status for a revision when first inserted in database
  10. AppRevisionStatus_Created AppRevisionStatus = "CREATED"
  11. // AppRevisionStatus_ImageAvailable is the status for a revision that has an image available
  12. AppRevisionStatus_ImageAvailable AppRevisionStatus = "IMAGE_AVAILABLE"
  13. // AppRevisionStatus_AwaitingBuild is the status for a revision that still needs to be built
  14. AppRevisionStatus_AwaitingBuild AppRevisionStatus = "AWAITING_BUILD_ARTIFACT"
  15. // AppRevisionStatus_AwaitingPredeploy is the status for a revision that is waiting for a predeploy to be run
  16. AppRevisionStatus_AwaitingPredeploy AppRevisionStatus = "AWAITING_PREDEPLOY"
  17. // AppRevisionStatus_AwaitingDeploy is the status for a revision that is waiting to be deployed
  18. AppRevisionStatus_AwaitingDeploy AppRevisionStatus = "AWAITING_DEPLOY"
  19. // AppRevisionStatus_PredeployProgressing is the status for a revision that is currently running a predeploy
  20. AppRevisionStatus_PredeployProgressing AppRevisionStatus = "PREDEPLOY_PROGRESSING"
  21. // AppRevisionStatus_Deployed is the status for a revision that has been deployed
  22. AppRevisionStatus_Deployed AppRevisionStatus = "DEPLOYED"
  23. // AppRevisionStatus_Deploying is the status for a revision that is currently deploying
  24. AppRevisionStatus_Deploying AppRevisionStatus = "DEPLOYING"
  25. // AppRevisionStatus_BuildCanceled is the status for a revision that was canceled during the build process
  26. AppRevisionStatus_BuildCanceled AppRevisionStatus = "BUILD_CANCELED"
  27. // AppRevisionStatus_BuildFailed is the status for a revision that failed to build
  28. AppRevisionStatus_BuildFailed AppRevisionStatus = "BUILD_FAILED"
  29. // AppRevisionStatus_BuildSuccessful is the status for a revision that successfully built
  30. AppRevisionStatus_BuildSuccessful AppRevisionStatus = "BUILD_SUCCESSFUL"
  31. // AppRevisionStatus_PredeployFailed is the status for a revision that failed to predeploy
  32. AppRevisionStatus_PredeployFailed AppRevisionStatus = "PREDEPLOY_FAILED"
  33. // AppRevisionStatus_PredeploySuccessful is the status for a revision that successfully ran a predeploy
  34. AppRevisionStatus_PredeploySuccessful AppRevisionStatus = "PREDEPLOY_SUCCESSFUL"
  35. // AppRevisionStatus_DeployFailed is the status for a revision that failed to deploy
  36. AppRevisionStatus_DeployFailed AppRevisionStatus = "DEPLOY_FAILED"
  37. // AppRevisionStatus_ApplyFailed is the status for a revision that failed due to an internal system error
  38. AppRevisionStatus_ApplyFailed AppRevisionStatus = "APPLY_FAILED"
  39. )
  40. // AppRevision represents the full spec for a revision of a porter app
  41. type AppRevision struct {
  42. gorm.Model
  43. // ID is a UUID for the AppRevision
  44. ID uuid.UUID `gorm:"type:uuid;primaryKey" json:"id"`
  45. // Base64App is the PorterApp as json encoded in base64
  46. Base64App string `json:"base64_app"`
  47. // Status is the status of the apply that happened for this revision.
  48. Status AppRevisionStatus `json:"status"`
  49. // DeploymentTargetID is the ID of the deployment target that the revision applies to.
  50. DeploymentTargetID uuid.UUID `json:"deployment_target_id"`
  51. // ProjectID is the ID of the project that the revision belongs to.
  52. ProjectID int `json:"project_id"`
  53. // PorterAppID is the ID of the PorterApp that the revision belongs to. This will be deprecated in favor of AppInstanceID (tracking: POR-1992)
  54. PorterAppID int `json:"porter_app_id"`
  55. // RevisionNumber is the number of the revision respective to that porter_app_id and deployment_target_id
  56. RevisionNumber int `json:"revision_number"`
  57. // AppInstanceID is the ID of the AppInstance that the revision belongs to. This will be null while the app instance table is being seeded (tracking: POR-1991)
  58. AppInstanceID uuid.UUID `json:"app_instance_id" gorm:"type:uuid;default:00000000-0000-0000-0000-000000000000"`
  59. }