diff --git a/src/db/edit/streamListener.ts b/src/db/edit/streamListener.ts index 35a4391e..f6310c47 100644 --- a/src/db/edit/streamListener.ts +++ b/src/db/edit/streamListener.ts @@ -33,7 +33,7 @@ export async function testStreamListener (callback?: (change: ChangeStreamDocume // eslint-disable-next-line @typescript-eslint/no-misused-promises return (await createChangeStream()).on('change', async (change: ChangeStreamDocument) => { await onChange(change) - if (callback !== undefined) callback(change) + if (callback != null) callback(change) }) } diff --git a/src/graphql/organization/OrganizationQueries.ts b/src/graphql/organization/OrganizationQueries.ts index e7d559cd..4087d3f5 100644 --- a/src/graphql/organization/OrganizationQueries.ts +++ b/src/graphql/organization/OrganizationQueries.ts @@ -1,5 +1,5 @@ import type OrganizationDataSource from '../../model/OrganizationDataSource' -import { QueryByIdType, OrganizationGQLFilter, Sort, Context } from '../../types' +import { Context, OrganizationGQLFilter, QueryByIdType, Sort } from '../../types' const OrganizationQueries = { organization: async (_: any, @@ -7,7 +7,7 @@ const OrganizationQueries = { context: Context, info) => { const { dataSources } = context const { organizations }: { organizations: OrganizationDataSource } = dataSources - if (muuid !== undefined) { + if (muuid != null) { return await organizations.findOneOrganizationByOrgId(muuid) } return null diff --git a/src/graphql/resolvers.ts b/src/graphql/resolvers.ts index 6899a473..fdb02ee3 100644 --- a/src/graphql/resolvers.ts +++ b/src/graphql/resolvers.ts @@ -5,19 +5,19 @@ import { gql } from 'apollo-server-express' import { DocumentNode } from 'graphql' import { CommonResolvers, CommonTypeDef } from './common/index.js' -import { HistoryQueries, HistoryFieldResolvers } from '../graphql/history/index.js' -import { QueryByIdType, GQLFilter, Sort, Context } from '../types' +import { HistoryFieldResolvers, HistoryQueries } from '../graphql/history/index.js' +import { Context, GQLFilter, QueryByIdType, Sort } from '../types' import { AreaType, CountByDisciplineType } from '../db/AreaTypes.js' import { ClimbGQLQueryType, ClimbType } from '../db/ClimbTypes.js' import AreaDataSource from '../model/AreaDataSource.js' import { MediaMutations, MediaQueries, MediaResolvers } from './media/index.js' import { PostMutations, PostQueries, PostResolvers } from './posts/index.js' import { XMediaMutations, XMediaQueries, XMediaResolvers } from './xmedia/index.js' -import { AreaQueries, AreaMutations } from './area/index.js' +import { AreaMutations, AreaQueries } from './area/index.js' import { ClimbMutations } from './climb/index.js' import { OrganizationMutations, OrganizationQueries } from './organization/index.js' import { TickMutations, TickQueries } from './tick/index.js' -import { UserQueries, UserMutations, UserResolvers } from './user/index.js' +import { UserMutations, UserQueries, UserResolvers } from './user/index.js' import { getAuthorMetadataFromBaseNode } from '../db/utils/index.js' import { geojsonPointToLatitude, geojsonPointToLongitude } from '../utils/helpers.js' @@ -74,7 +74,7 @@ const resolvers = { { uuid }: QueryByIdType, { dataSources }: Context) => { const { areas } = dataSources - if (uuid !== undefined && uuid !== '') { + if (uuid != null && uuid !== '') { return await areas.findOneClimbByUUID(muid.from(uuid)) } return null diff --git a/src/model/BulkImportDataSource.ts b/src/model/BulkImportDataSource.ts index 6ed62f64..877888d4 100644 --- a/src/model/BulkImportDataSource.ts +++ b/src/model/BulkImportDataSource.ts @@ -40,10 +40,14 @@ export default class BulkImportDataSource extends MutableAreaDataSource { logger.debug('starting bulk import session...') const session = _session ?? (await mongoose.startSession()) try { - return await withTransaction(session, async () => { - logger.info('starting bulk import...', input) + const bulkImportResult = await withTransaction(session, async () => { + logger.info('starting bulk import...') + logger.debug(input) return await this._bulkImportJson({ user, input, climbs, session }) }) ?? result + logger.info(`bulk import complete: added ${bulkImportResult.addedAreas.length} new areas, updated ${bulkImportResult.updatedAreas.length} areas, added or updated ${bulkImportResult.addedOrUpdatedClimbs.length} climbs`) + logger.debug(bulkImportResult) + return bulkImportResult } catch (e) { logger.error('bulk import failed', e) throw e @@ -70,7 +74,7 @@ export default class BulkImportDataSource extends MutableAreaDataSource { addedOrUpdatedClimbs: [] } let area: AreaType | null - if (areaNode.uuid !== undefined && areaNode.uuid !== null) { + if (areaNode.uuid != null) { area = await this.updateAreaWith({ user, areaUuid: muuid.from(areaNode.uuid), @@ -88,7 +92,7 @@ export default class BulkImportDataSource extends MutableAreaDataSource { } else { throw new Error(`area with id ${areaNode.uuid.toUUID().toString()} (${areaNode.areaName ?? 'unknown name'}) not found`) } - } else if (areaNode.areaName !== undefined) { + } else if (areaNode.areaName != null) { area = await this.addAreaWith({ user, areaName: areaNode.areaName, @@ -111,7 +115,7 @@ export default class BulkImportDataSource extends MutableAreaDataSource { } else { throw new Error('areaName or id is required') } - if (areaNode.children !== undefined) { + if (areaNode.children != null) { for (const child of areaNode.children) { const childResult = await addOrUpdateArea(child, area.metadata.area_id) result.updatedAreas.push(...childResult.updatedAreas) @@ -119,7 +123,7 @@ export default class BulkImportDataSource extends MutableAreaDataSource { result.addedOrUpdatedClimbs.push(...childResult.addedOrUpdatedClimbs) } } - if (areaNode.climbs !== undefined) { + if (areaNode.climbs != null) { const addedOrUpdatedClimbs = await Promise.all(await climbs?.addOrUpdateClimbsWith({ userId: user, parentId: area.metadata.area_id, diff --git a/src/model/MutableAreaDataSource.ts b/src/model/MutableAreaDataSource.ts index eefc149d..208671fb 100644 --- a/src/model/MutableAreaDataSource.ts +++ b/src/model/MutableAreaDataSource.ts @@ -28,7 +28,7 @@ import { createInstance as createExperimentalUserDataSource } from '../model/Exp import { sanitizeStrict } from '../utils/sanitize.js' import AreaDataSource from './AreaDataSource.js' import { changelogDataSource } from './ChangeLogDataSource.js' -import { withTransaction } from '../utils/helpers' +import { withTransaction } from '../utils/helpers.js' isoCountries.registerLocale(enJson) diff --git a/src/model/MutableClimbDataSource.ts b/src/model/MutableClimbDataSource.ts index cfc4991c..9ad85a72 100644 --- a/src/model/MutableClimbDataSource.ts +++ b/src/model/MutableClimbDataSource.ts @@ -14,7 +14,7 @@ import { changelogDataSource } from './ChangeLogDataSource.js' import ClimbDataSource from './ClimbDataSource.js' import { createInstance as createExperimentalUserDataSource } from './ExperimentalUserDataSource.js' import MutableAreaDataSource from './MutableAreaDataSource.js' -import { withTransaction } from '../utils/helpers' +import { withTransaction } from '../utils/helpers.js' export interface AddOrUpdateClimbsOptions { userId: MUUID diff --git a/src/server.ts b/src/server.ts index 20f661aa..a3548d91 100644 --- a/src/server.ts +++ b/src/server.ts @@ -20,7 +20,7 @@ import type { DataSources } from 'apollo-server-core/dist/graphqlOptions' import UserDataSource from './model/UserDataSource.js' import express from 'express' import * as http from 'http' -import BulkImportDataSource from './model/BulkImportDataSource' +import BulkImportDataSource from './model/BulkImportDataSource.js' export async function createServer (): Promise<{ app: express.Application, server: ApolloServer }> { const schema = applyMiddleware(