import {InstallPrefs} from "app/common/Install"; import {ApiError} from "app/common/ApiError"; import {InstallProperties, installPropertyKeys} from "app/common/InstallAPI"; import {nativeValues} from "app/gen-server/lib/values"; import {BaseEntity, Column, Entity, PrimaryColumn} from "typeorm"; @Entity({name: 'activations'}) export class Activation extends BaseEntity { @PrimaryColumn() public id: string; @Column({name: 'key', type: 'text', nullable: true}) public key: string|null; @Column({type: nativeValues.jsonEntityType, nullable: true}) public prefs: InstallPrefs|null; @Column({name: 'created_at', default: () => "CURRENT_TIMESTAMP"}) public createdAt: Date; @Column({name: 'updated_at', default: () => "CURRENT_TIMESTAMP"}) public updatedAt: Date; public checkProperties(props: any): props is Partial { for (const key of Object.keys(props)) { if (!installPropertyKeys.includes(key)) { throw new ApiError(`Unrecognized property ${key}`, 400); } } return true; } public updateFromProperties(props: Partial) { if (props.prefs === undefined) { return; } if (props.prefs === null) { this.prefs = null; } else { this.prefs = this.prefs || {}; if (props.prefs.telemetry !== undefined) { this.prefs.telemetry = this.prefs.telemetry || {}; if (props.prefs.telemetry.telemetryLevel !== undefined) { this.prefs.telemetry.telemetryLevel = props.prefs.telemetry.telemetryLevel; } } for (const key of Object.keys(this.prefs) as Array) { if (this.prefs[key] === null) { delete this.prefs[key]; } } if (Object.keys(this.prefs).length === 0) { this.prefs = null; } } } }