64 lines
1.5 KiB
TypeScript
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;
|
|
}
|
|
}
|