Skip to content

Commit

Permalink
feat(page-services): add jobs (#392)
Browse files Browse the repository at this point in the history
  • Loading branch information
RemiBonnet committed Nov 28, 2022
1 parent 94db3e3 commit eee4336
Show file tree
Hide file tree
Showing 37 changed files with 712 additions and 1,511 deletions.
10 changes: 5 additions & 5 deletions libs/domains/application/src/lib/slices/application.actions.ts
Expand Up @@ -5,7 +5,7 @@ import {
ContainerActionsApi,
ContainerMainCallsApi,
} from 'qovery-typescript-axios'
import { ServiceTypeEnum } from '@qovery/shared/enums'
import { ServiceTypeEnum, isContainer } from '@qovery/shared/enums'
import { ToastEnum, toast } from '@qovery/shared/toast'
import { fetchApplicationDeployments, fetchApplicationsStatus } from './applications.slice'

Expand All @@ -21,7 +21,7 @@ export const postApplicationActionsRestart = createAsyncThunk<
>('applicationActions/restart', async (data, { dispatch }) => {
try {
let response
if (data.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(data.serviceType)) {
response = await containerActionApi.restartContainer(data.applicationId)
} else {
response = await applicationActionApi.restartApplication(data.applicationId)
Expand Down Expand Up @@ -56,7 +56,7 @@ export const postApplicationActionsDeploy = createAsyncThunk<
>('applicationActions/deploy', async (data, { dispatch }) => {
try {
let response
if (data.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(data.serviceType)) {
response = await containerActionApi.restartContainer(data.applicationId)
} else {
response = await applicationActionApi.restartApplication(data.applicationId)
Expand Down Expand Up @@ -113,7 +113,7 @@ export const postApplicationActionsStop = createAsyncThunk<
>('applicationActions/stop', async (data, { dispatch }) => {
try {
let response
if (data.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(data.serviceType)) {
response = await containerActionApi.stopContainer(data.applicationId)
} else {
response = await applicationActionApi.stopApplication(data.applicationId)
Expand Down Expand Up @@ -148,7 +148,7 @@ export const deleteApplicationAction = createAsyncThunk<
>('applicationActions/delete', async (data, { dispatch }) => {
try {
let response
if (data.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(data.serviceType)) {
response = await containerMainCallsApi.deleteContainer(data.applicationId)
} else {
response = await applicationMainCallsApi.deleteApplication(data.applicationId)
Expand Down
37 changes: 27 additions & 10 deletions libs/domains/application/src/lib/slices/applications.slice.ts
Expand Up @@ -27,15 +27,18 @@ import {
ContainersApi,
DeploymentHistoryApplication,
Instance,
JobDeploymentHistoryApi,
JobsApi,
Link,
Status,
} from 'qovery-typescript-axios'
import { ServiceTypeEnum } from '@qovery/shared/enums'
import { ServiceTypeEnum, isContainer, isJob } from '@qovery/shared/enums'
import {
ApplicationEntity,
ApplicationsState,
ContainerApplicationEntity,
GitApplicationEntity,
JobApplicationEntity,
LoadingStatus,
ServiceRunningStatus,
} from '@qovery/shared/interfaces'
Expand Down Expand Up @@ -65,6 +68,9 @@ const containerMetricsApi = new ContainerMetricsApi()
const containerDeploymentsApi = new ContainerDeploymentHistoryApi()
const containerConfigurationApi = new ContainerConfigurationApi()

const jobsApi = new JobsApi()
const jobsDeploymentsApi = new JobDeploymentHistoryApi()

export const fetchApplications = createAsyncThunk<
Application[] | ContainerResponse[],
{ environmentId: string; withoutStatus?: boolean }
Expand All @@ -74,6 +80,8 @@ export const fetchApplications = createAsyncThunk<
applicationsApi.listApplication(data.environmentId),
// fetch Container applications
containersApi.listContainer(data.environmentId),
// fetch Jobs applications
jobsApi.listJobs(data.environmentId),
])

if (!data.withoutStatus) {
Expand All @@ -83,6 +91,7 @@ export const fetchApplications = createAsyncThunk<
return [
...(result[0].data.results as GitApplicationEntity[]),
...(result[1].data.results as ContainerApplicationEntity[]),
...(result[2].data.results as JobApplicationEntity[]),
] as ApplicationEntity[]
})

Expand All @@ -94,9 +103,15 @@ export const fetchApplicationsStatus = createAsyncThunk<Status[], { environmentI
applicationsApi.getEnvironmentApplicationStatus(data.environmentId),
// fetch status Container applications
containersApi.getEnvironmentContainerStatus(data.environmentId),
// fetch status Jobs applications
jobsApi.getEnvironmentJobStatus(data.environmentId),
])

return [...(result[0].data.results as Status[]), ...(result[1].data.results as Status[])]
return [
...(result[0].data.results as Status[]),
...(result[1].data.results as Status[]),
...(result[2].data.results as Status[]),
]
}
)

Expand All @@ -110,7 +125,7 @@ export const editApplication = createAsyncThunk(
silentToaster?: boolean
}) => {
let response
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
const cloneApplication = Object.assign({}, refactoContainerApplicationPayload(payload.data))
response = await containerMainCallsApi.editContainer(payload.applicationId, cloneApplication as ContainerRequest)
} else {
Expand All @@ -133,7 +148,7 @@ export const createApplication = createAsyncThunk(
serviceType: ServiceTypeEnum
}) => {
let response
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
response = await containersApi.createContainer(payload.environmentId, payload.data as ContainerRequest)
} else {
response = await applicationsApi.createApplication(payload.environmentId, payload.data as ApplicationRequest)
Expand All @@ -148,7 +163,7 @@ export const fetchApplicationLinks = createAsyncThunk<Link[], { applicationId: s
async (data) => {
let response

if (data.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(data.serviceType)) {
response = await containerMainCallsApi.listContainerLinks(data.applicationId)
} else {
response = await applicationMainCallsApi.listApplicationLinks(data.applicationId)
Expand All @@ -163,7 +178,7 @@ export const fetchApplicationInstances = createAsyncThunk<
>('application/instances', async (data) => {
let response

if (data.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(data.serviceType)) {
response = await containerMetricsApi.getContainerCurrentInstance(data.applicationId)
} else {
response = await applicationMetricsApi.getApplicationCurrentInstance(data.applicationId)
Expand All @@ -184,8 +199,10 @@ export const fetchApplicationDeployments = createAsyncThunk<
{ applicationId: string; serviceType?: ServiceTypeEnum; silently?: boolean }
>('application/deployments', async (data) => {
let response
if (data.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(data.serviceType)) {
response = (await containerDeploymentsApi.listContainerDeploymentHistory(data.applicationId)) as any
} else if (isJob(data.serviceType)) {
response = await jobsDeploymentsApi.listJobDeploymentHistory()
} else {
response = await applicationDeploymentsApi.listApplicationDeploymentHistory(data.applicationId)
}
Expand All @@ -197,7 +214,7 @@ export const fetchApplicationStatus = createAsyncThunk<
{ applicationId: string; serviceType?: ServiceTypeEnum }
>('application/status', async (data) => {
let response
if (data.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(data.serviceType)) {
response = await containerMainCallsApi.getContainerStatus(data.applicationId)
} else {
response = await applicationMainCallsApi.getApplicationStatus(data.applicationId)
Expand All @@ -211,7 +228,7 @@ export const fetchApplicationAdvancedSettings = createAsyncThunk<
{ applicationId: string; serviceType: ServiceTypeEnum }
>('application/advancedSettings', async (data) => {
let response
if (data.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(data.serviceType)) {
response = await containerConfigurationApi.getContainerAdvancedSettings(data.applicationId)
} else {
response = await applicationConfigurationApi.getAdvancedSettings(data.applicationId)
Expand All @@ -229,7 +246,7 @@ export const editApplicationAdvancedSettings = createAsyncThunk<
}
>('application/advancedSettings/edit', async (data) => {
let response
if (data.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(data.serviceType)) {
response = await containerConfigurationApi.editContainerAdvancedSettings(
data.applicationId,
data.settings as ContainerAdvancedSettings[]
Expand Down
10 changes: 5 additions & 5 deletions libs/domains/application/src/lib/slices/custom-domain.slice.ts
@@ -1,6 +1,6 @@
import { createAsyncThunk, createEntityAdapter, createSelector, createSlice } from '@reduxjs/toolkit'
import { ContainerCustomDomainApi, CustomDomain, CustomDomainApi } from 'qovery-typescript-axios'
import { ServiceTypeEnum } from '@qovery/shared/enums'
import { ServiceTypeEnum, isContainer } from '@qovery/shared/enums'
import { CustomDomainsState } from '@qovery/shared/interfaces'
import { ToastEnum, toast, toastError } from '@qovery/shared/toast'
import { addOneToManyRelation, getEntitiesByIds, removeOneToManyRelation } from '@qovery/shared/utils'
Expand All @@ -17,7 +17,7 @@ export const fetchCustomDomains = createAsyncThunk(
'customDomains/fetch',
async (payload: { applicationId: string; serviceType: ServiceTypeEnum }) => {
let response
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
response = await customDomainContainerApi.listContainerCustomDomain(payload.applicationId)
} else {
response = await customDomainApplicationApi.listApplicationCustomDomain(payload.applicationId)
Expand All @@ -36,7 +36,7 @@ export const createCustomDomain = createAsyncThunk(
toasterCallback: () => void
}) => {
let response
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
response = await customDomainContainerApi.createContainerCustomDomain(payload.applicationId, {
domain: payload.domain,
})
Expand All @@ -60,7 +60,7 @@ export const editCustomDomain = createAsyncThunk(
toasterCallback: () => void
}) => {
let response
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
response = await customDomainContainerApi.editContainerCustomDomain(
payload.applicationId,
payload.customDomain.id,
Expand All @@ -81,7 +81,7 @@ export const editCustomDomain = createAsyncThunk(
export const deleteCustomDomain = createAsyncThunk(
'customDomains/delete',
async (payload: { applicationId: string; customDomain: CustomDomain; serviceType: ServiceTypeEnum }) => {
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
return await customDomainContainerApi.deleteContainerCustomDomain(payload.applicationId, payload.customDomain.id)
} else {
return await customDomainApplicationApi.deleteCustomDomain(payload.applicationId, payload.customDomain.id)
Expand Down
Expand Up @@ -11,7 +11,7 @@ import {
VariableImportRequestVars,
} from 'qovery-typescript-axios'
import { Key } from 'qovery-typescript-axios/api'
import { ServiceTypeEnum } from '@qovery/shared/enums'
import { ServiceTypeEnum, isContainer } from '@qovery/shared/enums'
import { EnvironmentVariableEntity, EnvironmentVariablesState } from '@qovery/shared/interfaces'
import { ToastEnum, toast, toastError } from '@qovery/shared/toast'
import { addOneToManyRelation, getEntitiesByIds, removeOneToManyRelation } from '@qovery/shared/utils'
Expand All @@ -29,7 +29,7 @@ export const fetchEnvironmentVariables = createAsyncThunk(
'environmentVariables/list',
async (payload: { applicationId: string; serviceType: ServiceTypeEnum }) => {
let response
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
response = await containerEnvironmentVariableApi.listContainerEnvironmentVariable(payload.applicationId)
} else {
response = await applicationEnvironmentVariableApi.listApplicationEnvironmentVariable(payload.applicationId)
Expand All @@ -48,7 +48,7 @@ export const importEnvironmentVariables = createAsyncThunk(
serviceType: ServiceTypeEnum
}) => {
let response
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
response = await containerEnvironmentVariableApi.importContainerEnvironmentVariable(payload.applicationId, {
overwrite: payload.overwriteEnabled,
vars: payload.vars,
Expand Down Expand Up @@ -89,7 +89,7 @@ export const createEnvironmentVariablePayloadCreator = async (payload: {
break
case APIVariableScopeEnum.APPLICATION:
default:
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
response = await containerEnvironmentVariableApi.createContainerEnvironmentVariable(
payload.entityId,
payload.environmentVariableRequest
Expand Down Expand Up @@ -138,7 +138,7 @@ export const createOverrideEnvironmentVariablesPayloadCreator = async (payload:
break
case APIVariableScopeEnum.APPLICATION:
default:
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
response = await containerEnvironmentVariableApi.createContainerEnvironmentVariableOverride(
entityId,
environmentVariableId,
Expand Down Expand Up @@ -192,7 +192,7 @@ export const createAliasEnvironmentVariables = createAsyncThunk(
break
case APIVariableScopeEnum.APPLICATION:
default:
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
response = await containerEnvironmentVariableApi.createContainerEnvironmentVariableAlias(
entityId,
environmentVariableId,
Expand Down Expand Up @@ -241,7 +241,7 @@ export const editEnvironmentVariables = createAsyncThunk(
break
case APIVariableScopeEnum.APPLICATION:
default:
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
response = await containerEnvironmentVariableApi.editContainerEnvironmentVariable(
payload.entityId,
payload.environmentVariableId,
Expand Down Expand Up @@ -286,7 +286,7 @@ export const deleteEnvironmentVariable = createAsyncThunk(
break
case APIVariableScopeEnum.APPLICATION:
default:
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
response = await containerEnvironmentVariableApi.deleteContainerEnvironmentVariable(
payload.entityId,
payload.environmentVariableId
Expand Down
Expand Up @@ -9,7 +9,7 @@ import {
Value,
} from 'qovery-typescript-axios'
import { Key } from 'qovery-typescript-axios/api'
import { ServiceTypeEnum } from '@qovery/shared/enums'
import { ServiceTypeEnum, isContainer } from '@qovery/shared/enums'
import { SecretEnvironmentVariableEntity, SecretEnvironmentVariablesState } from '@qovery/shared/interfaces'
import { ToastEnum, toast, toastError } from '@qovery/shared/toast'
import { addOneToManyRelation, getEntitiesByIds } from '@qovery/shared/utils'
Expand All @@ -28,7 +28,7 @@ export const fetchSecretEnvironmentVariables = createAsyncThunk(
'secretEnvironmentVariables/list',
async (payload: { applicationId: string; serviceType: ServiceTypeEnum }) => {
let response
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
response = await containerSecretApi.listContainerSecrets(payload.applicationId)
} else {
response = await applicationSecretApi.listApplicationSecrets(payload.applicationId)
Expand Down Expand Up @@ -62,7 +62,7 @@ export const createSecret = createAsyncThunk(
break
case APIVariableScopeEnum.APPLICATION:
default:
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
response = await containerSecretApi.createContainerSecret(
payload.entityId,
payload.environmentVariableRequest
Expand Down Expand Up @@ -109,7 +109,7 @@ export const createOverrideSecret = createAsyncThunk(
break
case APIVariableScopeEnum.APPLICATION:
default:
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
response = await containerSecretApi.createContainerSecretOverride(
entityId,
environmentVariableId,
Expand Down Expand Up @@ -159,7 +159,7 @@ export const createAliasSecret = createAsyncThunk(
break
case APIVariableScopeEnum.APPLICATION:
default:
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
response = await containerSecretApi.createContainerSecretAlias(
entityId,
environmentVariableId,
Expand Down Expand Up @@ -208,7 +208,7 @@ export const editSecret = createAsyncThunk(
break
case APIVariableScopeEnum.APPLICATION:
default:
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
response = await containerSecretApi.editContainerSecret(
payload.entityId,
payload.environmentVariableId,
Expand Down Expand Up @@ -247,7 +247,7 @@ export const deleteSecret = createAsyncThunk(
break
case APIVariableScopeEnum.APPLICATION:
default:
if (payload.serviceType === ServiceTypeEnum.CONTAINER) {
if (isContainer(payload.serviceType)) {
response = await containerSecretApi.deleteContainerSecret(payload.entityId, payload.environmentVariableId)
} else {
response = await applicationSecretApi.deleteApplicationSecret(payload.entityId, payload.environmentVariableId)
Expand Down

0 comments on commit eee4336

Please sign in to comment.