import { BusinessRecord } from './classes.businessrecord.js'; import { HandelsRegister } from './classes.handelsregister.js'; import { JsonlDataProcessor, type SeedEntryType } from './classes.jsonldata.js'; import * as paths from './paths.js'; import * as plugins from './plugins.js'; export class OpenData { public db: plugins.smartdata.SmartdataDb; private serviceQenv = new plugins.qenv.Qenv(paths.packageDir, paths.nogitDir); public jsonLDataProcessor: JsonlDataProcessor; public handelsregister: HandelsRegister; public CBusinessRecord = plugins.smartdata.setDefaultManagerForDoc(this, BusinessRecord); public async start() { this.db = new plugins.smartdata.SmartdataDb({ mongoDbUrl: await this.serviceQenv.getEnvVarOnDemand('MONGODB_URL'), mongoDbName: await this.serviceQenv.getEnvVarOnDemand('MONGODB_NAME'), mongoDbUser: await this.serviceQenv.getEnvVarOnDemand('MONGODB_USER'), mongoDbPass: await this.serviceQenv.getEnvVarOnDemand('MONGODB_PASS'), }); await this.db.init(); this.jsonLDataProcessor = new JsonlDataProcessor(async (entryArg) => { const businessRecord = new this.CBusinessRecord(); businessRecord.id = await this.CBusinessRecord.getNewId(); businessRecord.data.name = entryArg.name; businessRecord.data.germanParsedRegistration = { court: entryArg.all_attributes.registered_office, number: entryArg.all_attributes._registerNummer, type: entryArg.all_attributes._registerArt as 'HRA' | 'HRB', }; await businessRecord.save(); }); this.handelsregister = new HandelsRegister(this); await this.handelsregister.start(); } public async buildInitialDb() { await this.jsonLDataProcessor.processDataFromUrl(); } public async slowValidateDb() { } public async validateSearchByName() { } public async searchDbByBusinessNameAndPostalCode(businessNameArg: string, postalCodeArg: string) { } public async stop() { await this.db.close(); await this.handelsregister.stop(); } }