UNPKG

@fin.cx/opendata

Version:

A comprehensive TypeScript library that manages open business data for German companies by integrating MongoDB, processing JSONL bulk data, and automating browser interactions for Handelsregister data retrieval.

62 lines (47 loc) 2.07 kB
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<SeedEntryType>; 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(); } }