Skip to content

Commit 2c88581

Browse files
committed
Added deleteServiceDescendentOnly in Service type
1 parent 082e82b commit 2c88581

File tree

1 file changed

+60
-17
lines changed

1 file changed

+60
-17
lines changed

src/ops/ServiceOps.ts

Lines changed: 60 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {
22
type AmServiceSkeleton,
3+
type ServiceNextDescendent,
34
deleteService,
45
deleteServiceNextDescendent,
56
type FullService,
@@ -8,6 +9,7 @@ import {
89
getServiceDescendents,
910
putService,
1011
putServiceNextDescendent,
12+
ServiceNextDescendentResponse,
1113
} from '../api/ServiceApi';
1214
import { State } from '../shared/State';
1315
import {
@@ -46,6 +48,10 @@ export type Service = {
4648
serviceId: string,
4749
globalConfig?: boolean
4850
): Promise<AmServiceSkeleton>;
51+
deleteServiceNextDescendentOnly(
52+
serviceId:string,
53+
globalConfig?:boolean
54+
):Promise<ServiceNextDescendent>;
4955
/**
5056
* Deletes all services
5157
* @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
@@ -124,7 +130,12 @@ export default (state: State): Service => {
124130
): Promise<AmServiceSkeleton> {
125131
return deleteFullService({ serviceId, globalConfig, state });
126132
},
127-
133+
async deleteServiceNextDescendentOnly(
134+
serviceId:string,
135+
globalConfig =false
136+
): Promise<ServiceNextDescendent> {
137+
return deleteServiceNextDescentdentOnly({serviceId,globalConfig, state});
138+
},
128139
/**
129140
* Deletes all services
130141
* @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
@@ -312,7 +323,7 @@ export async function getFullServices({
312323
!(
313324
error.response?.status === 403 &&
314325
error.response?.data?.message ===
315-
'This operation is not available in PingOne Advanced Identity Cloud.'
326+
'This operation is not available in PingOne Advanced Identity Cloud.'
316327
)
317328
) {
318329
const message = error.response?.data?.message;
@@ -466,8 +477,7 @@ export async function putFullService({
466477
return result;
467478
} catch (error) {
468479
throw new FrodoError(
469-
`Error putting ${
470-
globalConfig ? 'global' : 'realm'
480+
`Error putting ${globalConfig ? 'global' : 'realm'
471481
} full service config ${serviceId}`,
472482
error
473483
);
@@ -582,14 +592,51 @@ export async function deleteFullService({
582592
return deleteService({ serviceId, globalConfig, state });
583593
} catch (error) {
584594
throw new FrodoError(
585-
`Error deleting ${
586-
globalConfig ? 'global' : 'realm'
595+
`Error deleting ${globalConfig ? 'global' : 'realm'
587596
} full service config ${serviceId}`,
588597
error
589598
);
590599
}
591600
}
592601

602+
export async function deleteServiceNextDescentdentOnly({
603+
serviceId,
604+
globalConfig = false,
605+
state,
606+
}: {
607+
serviceId: string;
608+
globalConfig: boolean;
609+
state: State;
610+
}):Promise<ServiceNextDescendent> {
611+
try {
612+
debugMessage({
613+
message: `ServiceOps.deleteServiceDescendentOnly: start, globalConfig=${globalConfig}`,
614+
state,
615+
});
616+
const serviceNextDescendentData = await getServiceDescendents({
617+
serviceId,
618+
globalConfig,
619+
state,
620+
});
621+
622+
return await Promise.all (serviceNextDescendentData.map((nextDescendent) => deleteServiceNextDescendent({
623+
serviceId,
624+
serviceType: nextDescendent._type._id,
625+
serviceNextDescendentId: nextDescendent._id,
626+
globalConfig,
627+
state,
628+
})
629+
)
630+
)
631+
}
632+
catch (error) {
633+
throw new FrodoError(
634+
`Error deleting ${globalConfig ? 'global' : 'realm'
635+
} full service config ${serviceId}`,
636+
error
637+
);
638+
}
639+
}
593640
/**
594641
* Deletes all services
595642
* @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
@@ -622,7 +669,7 @@ export async function deleteFullServices({
622669
!(
623670
error.response?.status === 403 &&
624671
error.response?.data?.message ===
625-
'This operation is not available in PingOne Advanced Identity Cloud.'
672+
'This operation is not available in PingOne Advanced Identity Cloud.'
626673
)
627674
) {
628675
const message = error.response?.data?.message;
@@ -639,8 +686,7 @@ export async function deleteFullServices({
639686
return deleted;
640687
} catch (error) {
641688
throw new FrodoError(
642-
`Error deleting ${
643-
globalConfig ? 'global' : 'realm'
689+
`Error deleting ${globalConfig ? 'global' : 'realm'
644690
} full service configs`,
645691
error
646692
);
@@ -680,8 +726,7 @@ export async function exportService({
680726
return exportData;
681727
} catch (error) {
682728
throw new FrodoError(
683-
`Error exporting ${
684-
globalConfig ? 'global' : 'realm'
729+
`Error exporting ${globalConfig ? 'global' : 'realm'
685730
} service ${serviceId}`,
686731
error
687732
);
@@ -715,19 +760,17 @@ export async function exportServices({
715760
for (const service of services) {
716761
updateProgressIndicator({
717762
id: indicatorId,
718-
message: `Exporting ${globalConfig ? 'global' : 'realm'} service ${
719-
service._id
720-
}`,
763+
message: `Exporting ${globalConfig ? 'global' : 'realm'} service ${service._id
764+
}`,
721765
state,
722766
});
723767
service.location = globalConfig ? 'global' : state.getRealm();
724768
exportData.service[service._type._id] = service;
725769
}
726770
stopProgressIndicator({
727771
id: indicatorId,
728-
message: `Exported ${services.length} ${
729-
globalConfig ? 'global' : 'realm'
730-
} services.`,
772+
message: `Exported ${services.length} ${globalConfig ? 'global' : 'realm'
773+
} services.`,
731774
state,
732775
});
733776
debugMessage({ message: `ServiceOps.exportServices: end`, state });

0 commit comments

Comments
 (0)