diff --git a/packages/apollo-collaboration-server/src/changes/changes.module.ts b/packages/apollo-collaboration-server/src/changes/changes.module.ts index bf8612080..55889d3bb 100644 --- a/packages/apollo-collaboration-server/src/changes/changes.module.ts +++ b/packages/apollo-collaboration-server/src/changes/changes.module.ts @@ -6,6 +6,7 @@ import idValidator from 'mongoose-id-validator' import { AssembliesModule } from '../assemblies/assemblies.module' import { CountersModule } from '../counters/counters.module' +import { ChecksModule } from '../checks/checks.module' import { FeaturesModule } from '../features/features.module' import { FilesModule } from '../files/files.module' import { JBrowseModule } from '../jbrowse/jbrowse.module' @@ -37,6 +38,7 @@ import { ChangesService } from './changes.service' FilesModule, UsersModule, CountersModule, + ChecksModule, MessagesModule, JBrowseModule, ], diff --git a/packages/apollo-collaboration-server/src/changes/changes.service.ts b/packages/apollo-collaboration-server/src/changes/changes.service.ts index 71b9704e9..bb2b003ed 100644 --- a/packages/apollo-collaboration-server/src/changes/changes.service.ts +++ b/packages/apollo-collaboration-server/src/changes/changes.service.ts @@ -9,6 +9,8 @@ import { AssemblyDocument, Change, ChangeDocument, + Check, + CheckDocument, Feature, FeatureDocument, File, @@ -68,6 +70,8 @@ export class ChangesService { private readonly jbrowseConfigModel: Model, @InjectModel(Change.name) private readonly changeModel: Model, + @InjectModel(Check.name) + private readonly checkModel: Model, private readonly filesService: FilesService, private readonly countersService: CountersService, private readonly pluginsService: PluginsService, @@ -123,6 +127,7 @@ export class ChangesService { fileModel: this.fileModel, userModel: this.userModel, jbrowseConfigModel: this.jbrowseConfigModel, + checkModel: this.checkModel, session, filesService: this.filesService, counterService: this.countersService, diff --git a/packages/apollo-collaboration-server/src/checks/checks.module.ts b/packages/apollo-collaboration-server/src/checks/checks.module.ts index b2854844f..a083f817d 100644 --- a/packages/apollo-collaboration-server/src/checks/checks.module.ts +++ b/packages/apollo-collaboration-server/src/checks/checks.module.ts @@ -97,7 +97,7 @@ import { SequenceModule } from '../sequence/sequence.module' ]), ], - exports: [ChecksService], + exports: [ChecksService, MongooseModule], controllers: [ChecksController], }) export class ChecksModule {} diff --git a/packages/apollo-collaboration-server/src/operations/operations.module.ts b/packages/apollo-collaboration-server/src/operations/operations.module.ts index af2ea63ad..3385f00ca 100644 --- a/packages/apollo-collaboration-server/src/operations/operations.module.ts +++ b/packages/apollo-collaboration-server/src/operations/operations.module.ts @@ -1,6 +1,7 @@ import { Module, forwardRef } from '@nestjs/common' import { AssembliesModule } from '../assemblies/assemblies.module' +import { ChecksModule } from '../checks/checks.module' import { CountersModule } from '../counters/counters.module' import { FeaturesModule } from '../features/features.module' import { FilesModule } from '../files/files.module' @@ -22,6 +23,7 @@ import { OperationsService } from './operations.service' CountersModule, MessagesModule, JBrowseModule, + ChecksModule, ], providers: [OperationsService], exports: [OperationsService], diff --git a/packages/apollo-collaboration-server/src/operations/operations.service.ts b/packages/apollo-collaboration-server/src/operations/operations.service.ts index f7604b693..0efeb1f2b 100644 --- a/packages/apollo-collaboration-server/src/operations/operations.service.ts +++ b/packages/apollo-collaboration-server/src/operations/operations.service.ts @@ -2,6 +2,8 @@ import { Operation, operationRegistry } from '@apollo-annotation/common' import { Assembly, AssemblyDocument, + Check, + CheckDocument, Feature, FeatureDocument, File, @@ -40,6 +42,8 @@ export class OperationsService { private readonly refSeqModel: Model, @InjectModel(RefSeqChunk.name) private readonly refSeqChunkModel: Model, + @InjectModel(Check.name) + private readonly checkModel: Model, private readonly filesService: FilesService, private readonly countersService: CountersService, private readonly pluginsService: PluginsService, @@ -53,6 +57,7 @@ export class OperationsService { ): Promise> { const { assemblyModel, + checkModel, connection, countersService, featureModel, @@ -79,6 +84,7 @@ export class OperationsService { fileModel, userModel, jbrowseConfigModel, + checkModel, session, filesService, counterService: countersService, diff --git a/packages/apollo-common/src/Operation.ts b/packages/apollo-common/src/Operation.ts index 6a42a63ad..ea8dba2aa 100644 --- a/packages/apollo-common/src/Operation.ts +++ b/packages/apollo-common/src/Operation.ts @@ -12,6 +12,7 @@ import { RefSeqDocument, JBrowseConfigDocument, UserDocument, + CheckDocument, } from '@apollo-annotation/schemas' import type { LoggerService } from '@nestjs/common' import type { ClientSession, Model } from 'mongoose' @@ -36,6 +37,7 @@ export interface ServerDataStore { assemblyModel: Model refSeqModel: Model refSeqChunkModel: Model + checkModel: Model fileModel: Model userModel: Model jbrowseConfigModel: Model diff --git a/packages/apollo-shared/src/Changes/AddAssemblyAndFeaturesFromFileChange.ts b/packages/apollo-shared/src/Changes/AddAssemblyAndFeaturesFromFileChange.ts index 9ac764cf0..3f08a57f0 100644 --- a/packages/apollo-shared/src/Changes/AddAssemblyAndFeaturesFromFileChange.ts +++ b/packages/apollo-shared/src/Changes/AddAssemblyAndFeaturesFromFileChange.ts @@ -65,7 +65,7 @@ export class AddAssemblyAndFeaturesFromFileChange extends FromFileBaseChange { * @returns */ async executeOnServer(backend: ServerDataStore) { - const { assemblyModel, fileModel, filesService, user } = backend + const { assemblyModel, checkModel, fileModel, filesService, user } = backend const { assembly, changes, logger } = this for (const change of changes) { const { assemblyName, fileIds } = change @@ -89,9 +89,12 @@ export class AddAssemblyAndFeaturesFromFileChange extends FromFileBaseChange { if (assemblyDoc) { throw new Error(`Assembly "${assemblyName}" already exists`) } + // get checks + const checkDocs = await checkModel.find({ default: true }).exec() + const checks = checkDocs.map((checkDoc) => checkDoc._id.toHexString()) // Add assembly const [newAssemblyDoc] = await assemblyModel.create([ - { _id: assembly, name: assemblyName, user, status: -1, fileId }, + { _id: assembly, name: assemblyName, user, status: -1, fileId, checks }, ]) logger.debug?.( `Added new assembly "${assemblyName}", docId "${newAssemblyDoc._id.toHexString()}"`, diff --git a/packages/apollo-shared/src/Changes/AddAssemblyFromExternalChange.ts b/packages/apollo-shared/src/Changes/AddAssemblyFromExternalChange.ts index 913d821ba..b311f7da8 100644 --- a/packages/apollo-shared/src/Changes/AddAssemblyFromExternalChange.ts +++ b/packages/apollo-shared/src/Changes/AddAssemblyFromExternalChange.ts @@ -67,7 +67,7 @@ export class AddAssemblyFromExternalChange extends AssemblySpecificChange { * @returns */ async executeOnServer(backend: ServerDataStore) { - const { assemblyModel, refSeqModel, user } = backend + const { assemblyModel, checkModel, refSeqModel, user } = backend const { assembly, changes, logger } = this const { CHUNK_SIZE } = process.env const customChunkSize = CHUNK_SIZE && Number(CHUNK_SIZE) @@ -97,6 +97,8 @@ export class AddAssemblyFromExternalChange extends AssemblySpecificChange { if (assemblyDoc) { throw new Error(`Assembly "${assemblyName}" already exists`) } + const checkDocs = await checkModel.find({ default: true }).exec() + const checks = checkDocs.map((checkDoc) => checkDoc._id.toHexString()) const [newAssemblyDoc] = await assemblyModel.create([ { _id: assembly, @@ -104,6 +106,7 @@ export class AddAssemblyFromExternalChange extends AssemblySpecificChange { user, status: -1, externalLocation, + checks, }, ]) logger.debug?.( diff --git a/packages/apollo-shared/src/Changes/AddAssemblyFromFileChange.ts b/packages/apollo-shared/src/Changes/AddAssemblyFromFileChange.ts index 8a9636494..50b5ebed6 100644 --- a/packages/apollo-shared/src/Changes/AddAssemblyFromFileChange.ts +++ b/packages/apollo-shared/src/Changes/AddAssemblyFromFileChange.ts @@ -88,8 +88,14 @@ export class AddAssemblyFromFileChange extends FromFileBaseChange { } const { fa, fai, gzi } = fileIds - const { assemblyModel, fileModel, filesService, refSeqModel, user } = - backend + const { + assemblyModel, + checkModel, + fileModel, + filesService, + refSeqModel, + user, + } = backend const faDoc = await fileModel.findById(fa) const faChecksum = faDoc?.checksum @@ -122,6 +128,8 @@ export class AddAssemblyFromFileChange extends FromFileBaseChange { if (assemblyDoc) { throw new Error(`Assembly "${assemblyName}" already exists`) } + const checkDocs = await checkModel.find({ default: true }).exec() + const checks = checkDocs.map((checkDoc) => checkDoc._id.toHexString()) const [newAssemblyDoc] = await assemblyModel.create([ { _id: this.assembly, @@ -129,6 +137,7 @@ export class AddAssemblyFromFileChange extends FromFileBaseChange { user, status: -1, fileIds, + checks, }, ]) this.logger.debug?.( @@ -157,7 +166,7 @@ export class AddAssemblyFromFileChange extends FromFileBaseChange { assemblyName: string, fileId: string, ) { - const { assemblyModel, fileModel, user } = backend + const { assemblyModel, checkModel, fileModel, user } = backend // Get file checksum const fileDoc = await fileModel.findById(fileId).exec() if (!fileDoc) { @@ -172,6 +181,8 @@ export class AddAssemblyFromFileChange extends FromFileBaseChange { if (assemblyDoc) { throw new Error(`Assembly "${assemblyName}" already exists`) } + const checkDocs = await checkModel.find({ default: true }).exec() + const checks = checkDocs.map((checkDoc) => checkDoc._id.toHexString()) // Add assembly const [newAssemblyDoc] = await assemblyModel.create([ { @@ -180,6 +191,7 @@ export class AddAssemblyFromFileChange extends FromFileBaseChange { user, status: -1, fileIds: { fa: fileId }, + checks, }, ]) this.logger.debug?.(