-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathmain.ts
More file actions
61 lines (47 loc) · 1.71 KB
/
Copy pathmain.ts
File metadata and controls
61 lines (47 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
*
* Copyright (c) 2025 - 2026 Ping Identity Corporation. All right reserved.
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*
*/
import { Console, Effect } from 'effect';
import { getUser, handleError, handleSuccess, LoginAndGetClient } from '../utils/index.js';
const deviceBinding = Effect.gen(function* () {
const client = yield* LoginAndGetClient;
const user = yield* getUser;
const query = {
userId: user.sub,
realm: 'alpha',
};
const deviceArr = yield* Effect.promise(() => client.bound.get(query));
if ((Array.isArray(deviceArr) && !deviceArr.length) || 'error' in deviceArr) {
yield* Console.log('No devices found or error occurred', deviceArr);
return yield* Effect.fail(new Error('No devices found or error occurred'));
}
yield* Console.log('GET devices', deviceArr);
const [device] = deviceArr;
yield* Console.log('device', device);
const updatedDevice = yield* Effect.promise(() =>
client.bound.update({
...query,
device: { ...device, deviceName: 'UpdatedDeviceName' },
}),
);
if ('error' in updatedDevice) {
return yield* Effect.fail(new Error(`Failed to update device: ${updatedDevice.error}`));
}
yield* Console.log('updated device', updatedDevice);
const deletedDevice = yield* Effect.promise(() =>
client.bound.delete({
...query,
device: updatedDevice,
}),
);
if (deletedDevice !== null && deletedDevice.error) {
return yield* Effect.fail(new Error(`Failed to delete device: ${deletedDevice.error}`));
}
yield* Console.log('deleted', deletedDevice);
});
Effect.runPromise(deviceBinding).then(handleSuccess).catch(handleError);