@gmetrixr/rjson
Version:
(R)ecursive Json
88 lines (87 loc) • 3.79 kB
JavaScript
import { R, createRecord, RT, rtp, r } from "../../../r";
/**
* Changes the older deployment settings format into a RecordNode format
* The check of whether its a record already or not must have been already done by now.
* (if deployment_version isn't detected, that means its the older version)
*/
class Migration {
execute(olderDeployment) {
var _a, _b, _c, _d;
const deploymentJson = createRecord(RT.deployment, R.SINGLE_RECORD_ID);
const deploymentF = r.record(deploymentJson);
if (olderDeployment.geolock !== undefined) {
if (olderDeployment.geolock.enabled === true) {
deploymentF.set(rtp.deployment.geolock_enabled, true);
const lat = (_a = olderDeployment.geolock.lat) !== null && _a !== void 0 ? _a : 0;
const lng = (_b = olderDeployment.geolock.lng) !== null && _b !== void 0 ? _b : 0;
const range = (_c = olderDeployment.geolock.range) !== null && _c !== void 0 ? _c : 0;
const address = (_d = olderDeployment.geolock.address) !== null && _d !== void 0 ? _d : "";
deploymentF.set(rtp.deployment.geolock_coordinates, [lat, lng]);
deploymentF.set(rtp.deployment.geolock_range, range);
deploymentF.set(rtp.deployment.geolock_address, address);
}
}
if (olderDeployment.track_location === true) {
deploymentF.set(rtp.deployment.track_location, true);
}
if (olderDeployment.enable_multiplayer_mode === true) {
deploymentF.set(rtp.deployment.enable_multiplayer, true);
}
if (olderDeployment.enable_audio === true) {
deploymentF.set(rtp.deployment.multiplayer_audio_enabled, true);
}
if (olderDeployment.enable_chat === true) {
deploymentF.set(rtp.deployment.multiplayer_chat_enabled, true);
}
if (olderDeployment.enable_screenshare === true) {
deploymentF.set(rtp.deployment.multiplayer_screenshare_enabled, true);
}
if (olderDeployment.enable_discussion === true) {
deploymentF.set(rtp.deployment.multiplayer_comments_enabled, true);
}
if (olderDeployment.enable_room_instance === true) {
deploymentF.set(rtp.deployment.enable_room_instance, true);
}
if (olderDeployment.room_instance_count !== undefined) {
deploymentF.set(rtp.deployment.enable_room_instance, olderDeployment.room_instance_count);
}
if (olderDeployment.room_instance_member_limit !== undefined) {
deploymentF.set(rtp.deployment.room_instance_member_limit, olderDeployment.room_instance_member_limit);
}
if (olderDeployment.room_instance_overspill_message !== undefined) {
deploymentF.set(rtp.deployment.room_instance_overspill_message, olderDeployment.room_instance_overspill_message);
}
deploymentF.set(rtp.deployment.deployment_version, 1);
return deploymentJson;
}
}
const migration = new Migration();
export default migration;
/**
* Older structure
export interface DeploymentSettings {
geolock?: {
enabled?: boolean;
lat?: number | null;
lng?: number | null;
range?: number | null;
address?: string | null;
} | null;
meta?: {
tags: string[] | null;
title: string | null;
description: string | null;
thumbnail: string | null
} | null;
track_location?: boolean;
enable_discussion?: boolean;
enable_multiplayer_mode?: boolean;
enable_audio?: boolean;
enable_screenshare?: boolean;
enable_chat?: boolean;
enable_room_instance?: boolean;
room_instance_count?: number;
room_instance_member_limit?: number;
room_instance_overspill_message?: string;
}
*/