Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
async updateDatabase() {
// Download and extract the database package from npm
logger.info( `Downloading database update to ${this.tempFolder}` )
await remove( this.tempFolder )
await extract( databasePackage, this.tempFolder )
logger.info( 'Hot-patching database module' )
// Disconnect the Shabad OS database connection
await knex.destroy()
// Move across the updated npm database module
await move( this.tempFolder, DATABASE_FOLDER, { overwrite: true } )
// Reimport the database
//! Relies on knex being reinitialised globally
importFresh( '@shabados/database' )
}
export const fullWordSearch = words => Lines
.query()
.limit( MAX_RESULTS )
.fullWord( words )
export const getBaniLines = baniId => Banis
.query()
.joinEager( 'lines.shabad' )
.orderBy( [ 'line_group', 'l.order_id' ] )
.where( 'banis.id', baniId )
.withTranslations()
.withTransliterations()
.eagerOptions( { minimize: false, aliases: { lines: 'l' } } )
.then( ( [ bani ] ) => bani )
export const getBanis = () => Banis.query()
export const getLanguages = () => Languages.query()
export const getShabad = shabadId => Shabads
.query()
.where( 'shabads.id', shabadId )
.eager( 'lines' )
.withTransliterations()
.withTranslations()
.then( ( [ shabad ] ) => shabad )
export const getSources = () => Sources
.query()
.eager( 'translationSources' )
.then( sources => sources.reduce( (
( acc, { translationSources, id, ...source } ) => ( {
...acc,
[ id ]: {
...source,
translationSources: groupBy(
translationSources,
( { languageId } ) => languageId,
),
},
} ) ), {} ) )
.then( sources => ( {
sources,
recommended: Object.entries( sources ).reduce( (