SmartHomeDashboard/Server/Source/LocalDatabase.ts

64 lines
1.5 KiB
TypeScript

import { Config, cfg } from "./Config";
import { request_data } from "./DataRequester";
export class Database {
private db: Datapoint[] = [];
constructor() {
let groups = Object.keys(cfg);
groups.forEach(group => {
let members = Object.keys(cfg[group]);
members.forEach(member => {
if((member != "text") && (member != "uri")) {
this.add(cfg[group][member])
}
});
});
}
add(id: string, value?: string, type?: string): void {
let found: boolean = false;
this.db.forEach(element => {
if(element.id == id) {
element.value = value;
element.type = type
found = true;
}
});
if(!found) {
this.db.push(new Datapoint(id, value, type));
}
}
get(id: string): string {
for(const el of this.db) {
if(el.id == id) {
return el.value;
}
}
return null;
}
start(): void {
setInterval(this.cyclic_requets, 1000, this);
}
cyclic_requets(self: &Database): void {
self.db.forEach(element => {
request_data(element.id, self)
});
}
}
class Datapoint {
id: string;
value: string;
type: string;
constructor(id: string, value: string, type: string) {
this.id = id;
this.type = type;
this.value = value;
}
}