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;
 | 
						|
    }
 | 
						|
}
 |