feat: add platform desired state manager
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
import * as plugins from '../plugins.js';
|
||||
import type { CloudlyPlatformManager } from './classes.platformmanager.js';
|
||||
|
||||
@plugins.smartdata.managed()
|
||||
export class PlatformBinding extends plugins.smartdata.SmartDataDbDoc<
|
||||
PlatformBinding,
|
||||
plugins.servezoneInterfaces.platform.IPlatformBinding,
|
||||
CloudlyPlatformManager
|
||||
> {
|
||||
public static async upsertBinding(
|
||||
bindingArg: plugins.servezoneInterfaces.platform.IPlatformBinding,
|
||||
) {
|
||||
const existingBinding =
|
||||
bindingArg.id &&
|
||||
(await this.getInstance({
|
||||
id: bindingArg.id,
|
||||
}));
|
||||
const binding = existingBinding || new PlatformBinding();
|
||||
const timestamp = Date.now();
|
||||
|
||||
Object.assign(binding, {
|
||||
...bindingArg,
|
||||
id: bindingArg.id || (await this.getNewId()),
|
||||
status: bindingArg.status || 'requested',
|
||||
desiredState: bindingArg.desiredState || 'enabled',
|
||||
createdAt: bindingArg.createdAt || existingBinding?.createdAt || timestamp,
|
||||
updatedAt: timestamp,
|
||||
});
|
||||
await binding.save();
|
||||
return binding;
|
||||
}
|
||||
|
||||
@plugins.smartdata.unI()
|
||||
public id!: string;
|
||||
|
||||
@plugins.smartdata.svDb()
|
||||
public serviceId!: string;
|
||||
|
||||
@plugins.smartdata.svDb()
|
||||
public capability!: plugins.servezoneInterfaces.platform.TPlatformCapability;
|
||||
|
||||
@plugins.smartdata.svDb()
|
||||
public desiredState!: plugins.servezoneInterfaces.platform.TPlatformDesiredState;
|
||||
|
||||
@plugins.smartdata.svDb()
|
||||
public status!: plugins.servezoneInterfaces.platform.TPlatformBindingStatus;
|
||||
|
||||
@plugins.smartdata.svDb()
|
||||
public providerConfigId?: string;
|
||||
|
||||
@plugins.smartdata.svDb()
|
||||
public config?: { [key: string]: plugins.servezoneInterfaces.platform.TPlatformConfigValue };
|
||||
|
||||
@plugins.smartdata.svDb()
|
||||
public endpoints?: plugins.servezoneInterfaces.platform.IPlatformServiceEndpoint[];
|
||||
|
||||
@plugins.smartdata.svDb()
|
||||
public credentials?: plugins.servezoneInterfaces.platform.IPlatformCredentialRef[];
|
||||
|
||||
@plugins.smartdata.svDb()
|
||||
public createdAt?: number;
|
||||
|
||||
@plugins.smartdata.svDb()
|
||||
public updatedAt?: number;
|
||||
|
||||
@plugins.smartdata.svDb()
|
||||
public errorText?: string;
|
||||
}
|
||||
Reference in New Issue
Block a user