From f92b6b37d46519970e875fc67d16cc820c134fbc Mon Sep 17 00:00:00 2001 From: Kristaps Fabians Geikins Date: Thu, 26 Sep 2024 16:35:16 +0300 Subject: [PATCH] chore(server): core IoC 9 - createBranchAndNotifyFactory --- .../modules/cli/commands/download/project.ts | 10 +++- .../core/domain/branches/operations.ts | 14 +++++ .../modules/core/graph/resolvers/branches.js | 15 ++++-- .../modules/core/graph/resolvers/models.ts | 10 +++- .../modules/core/repositories/branches.ts | 47 +++++++++-------- .../core/services/branch/management.ts | 51 ++++++++++--------- .../server/modules/core/services/branches.js | 13 +---- .../services/commit/batchCommitActions.ts | 4 +- .../core/services/streams/management.ts | 4 +- .../modules/core/tests/batchCommits.spec.ts | 5 +- .../modules/core/tests/branches.spec.js | 41 ++++++++------- .../server/modules/core/tests/commits.spec.js | 20 +++++++- .../server/modules/core/tests/streams.spec.ts | 8 ++- .../server/modules/core/tests/users.spec.js | 30 +++++++---- .../server/modules/cross-server-sync/index.ts | 10 +++- .../cross-server-sync/services/project.ts | 8 +-- .../test/speckle-helpers/branchHelper.ts | 14 +++-- 17 files changed, 193 insertions(+), 111 deletions(-) diff --git a/packages/server/modules/cli/commands/download/project.ts b/packages/server/modules/cli/commands/download/project.ts index 270d5c8b9..47135be06 100644 --- a/packages/server/modules/cli/commands/download/project.ts +++ b/packages/server/modules/cli/commands/download/project.ts @@ -4,6 +4,7 @@ import { downloadProjectFactory } from '@/modules/cross-server-sync/services/pro import { downloadCommitFactory } from '@/modules/cross-server-sync/services/commit' import { getStream, getStreamCollaborators } from '@/modules/core/repositories/streams' import { + createBranchFactory, getBranchLatestCommitsFactory, getStreamBranchByNameFactory, getStreamBranchesByNameFactory @@ -17,7 +18,7 @@ import { createCommentThreadAndNotifyFactory } from '@/modules/comments/services/management' import { createStreamReturnRecord } from '@/modules/core/services/streams/management' -import { createBranchAndNotify } from '@/modules/core/services/branch/management' +import { createBranchAndNotifyFactory } from '@/modules/core/services/branch/management' import { CommentsEmitter } from '@/modules/comments/events/emitter' import { addCommentCreatedActivity, @@ -41,6 +42,7 @@ import { } from '@/modules/comments/repositories/comments' import { getBlobsFactory } from '@/modules/blobstorage/repositories' import { validateInputAttachmentsFactory } from '@/modules/comments/services/commentTextService' +import { addBranchCreatedActivity } from '@/modules/activitystream/services/branchActivity' const command: CommandModule< unknown, @@ -124,7 +126,11 @@ const command: CommandModule< createStreamReturnRecord, getUser, getStreamBranchByName, - createBranchAndNotify + createBranchAndNotify: createBranchAndNotifyFactory({ + getStreamBranchByName, + createBranch: createBranchFactory({ db }), + addBranchCreatedActivity + }) }) await downloadProject(argv, { logger: cliLogger }) } diff --git a/packages/server/modules/core/domain/branches/operations.ts b/packages/server/modules/core/domain/branches/operations.ts index a0d74a77f..92a59a978 100644 --- a/packages/server/modules/core/domain/branches/operations.ts +++ b/packages/server/modules/core/domain/branches/operations.ts @@ -1,6 +1,8 @@ import { Branch, ModelTreeItem } from '@/modules/core/domain/branches/types' import { BranchLatestCommit } from '@/modules/core/domain/commits/types' import { + BranchCreateInput, + CreateModelInput, ModelsTreeItemCollection, ProjectModelsArgs, ProjectModelsTreeArgs @@ -117,3 +119,15 @@ export type GetModelTreeItemsTotalCount = ( parentModelName: string }> ) => Promise + +export type StoreBranch = (params: { + name: string + description: string | null + streamId: string + authorId: string +}) => Promise + +export type CreateBranchAndNotify = ( + input: BranchCreateInput | CreateModelInput, + creatorId: string +) => Promise diff --git a/packages/server/modules/core/graph/resolvers/branches.js b/packages/server/modules/core/graph/resolvers/branches.js index bb441f6c2..429731da3 100644 --- a/packages/server/modules/core/graph/resolvers/branches.js +++ b/packages/server/modules/core/graph/resolvers/branches.js @@ -9,9 +9,9 @@ const { const { authorizeResolver } = require('@/modules/shared') const { - createBranchAndNotify, updateBranchAndNotify, - deleteBranchAndNotify + deleteBranchAndNotify, + createBranchAndNotifyFactory } = require('@/modules/core/services/branch/management') const { getPaginatedStreamBranches @@ -21,9 +21,13 @@ const { getUserById } = require('../../services/users') const { Roles } = require('@speckle/shared') const { getBranchByIdFactory, - getStreamBranchByNameFactory + getStreamBranchByNameFactory, + createBranchFactory } = require('@/modules/core/repositories/branches') const { db } = require('@/db/knex') +const { + addBranchCreatedActivity +} = require('@/modules/activitystream/services/branchActivity') // subscription events const BRANCH_CREATED = BranchPubsubEvents.BranchCreated @@ -32,6 +36,11 @@ const BRANCH_DELETED = BranchPubsubEvents.BranchDeleted const getBranchById = getBranchByIdFactory({ db }) const getStreamBranchByName = getStreamBranchByNameFactory({ db }) +const createBranchAndNotify = createBranchAndNotifyFactory({ + getStreamBranchByName, + createBranch: createBranchFactory({ db }), + addBranchCreatedActivity +}) /** @type {import('@/modules/core/graph/generated/graphql').Resolvers} */ module.exports = { diff --git a/packages/server/modules/core/graph/resolvers/models.ts b/packages/server/modules/core/graph/resolvers/models.ts index 1faa3bc34..39402e515 100644 --- a/packages/server/modules/core/graph/resolvers/models.ts +++ b/packages/server/modules/core/graph/resolvers/models.ts @@ -1,7 +1,7 @@ import { Roles } from '@speckle/shared' import { Resolvers } from '@/modules/core/graph/generated/graphql' import { - createBranchAndNotify, + createBranchAndNotifyFactory, deleteBranchAndNotify, updateBranchAndNotify } from '@/modules/core/services/branch/management' @@ -23,6 +23,7 @@ import { ProjectSubscriptions } from '@/modules/shared/utils/subscriptions' import { + createBranchFactory, getBranchLatestCommitsFactory, getModelTreeItemsFactory, getModelTreeItemsFilteredFactory, @@ -30,6 +31,7 @@ import { getModelTreeItemsTotalCountFactory, getPaginatedProjectModelsItemsFactory, getPaginatedProjectModelsTotalCountFactory, + getStreamBranchByNameFactory, getStreamBranchesByNameFactory } from '@/modules/core/repositories/branches' import { BranchNotFoundError } from '@/modules/core/errors/branch' @@ -40,6 +42,7 @@ import { getSpecificBranchCommits } from '@/modules/core/repositories/commits' import { db } from '@/db/knex' +import { addBranchCreatedActivity } from '@/modules/activitystream/services/branchActivity' const getViewerResourceGroups = getViewerResourceGroupsFactory({ getStreamObjects, @@ -64,6 +67,11 @@ const getProjectTopLevelModelsTree = getProjectTopLevelModelsTreeFactory({ getModelTreeItems, getModelTreeItemsTotalCount: getModelTreeItemsTotalCountFactory({ db }) }) +const createBranchAndNotify = createBranchAndNotifyFactory({ + getStreamBranchByName: getStreamBranchByNameFactory({ db }), + createBranch: createBranchFactory({ db }), + addBranchCreatedActivity +}) export = { User: { diff --git a/packages/server/modules/core/repositories/branches.ts b/packages/server/modules/core/repositories/branches.ts index 7a61193cf..cde66b623 100644 --- a/packages/server/modules/core/repositories/branches.ts +++ b/packages/server/modules/core/repositories/branches.ts @@ -28,7 +28,8 @@ import { GetPaginatedProjectModelsTotalCount, GetStreamBranchByName, GetStreamBranchesByName, - GetStructuredProjectModels + GetStructuredProjectModels, + StoreBranch } from '@/modules/core/domain/branches/operations' import { BranchLatestCommit } from '@/modules/core/domain/commits/types' import { ModelTreeItem } from '@/modules/core/domain/branches/types' @@ -640,30 +641,32 @@ export const validateBranchName = (name: string) => { ) } -export async function createBranch(params: { - name: string - description: string | null - streamId: string - authorId: string -}) { - const { streamId, authorId, name, description } = params +export const createBranchFactory = + (deps: { db: Knex }): StoreBranch => + async (params: { + name: string + description: string | null + streamId: string + authorId: string + }) => { + const { streamId, authorId, name, description } = params - const branch: Omit = { - id: generateBranchId(), - streamId, - authorId, - name: name.toLowerCase(), - description + const branch: Omit = { + id: generateBranchId(), + streamId, + authorId, + name: name.toLowerCase(), + description + } + + validateBranchName(branch.name) + + const results = await tables.branches(deps.db).insert(branch, '*') + const newBranch = results[0] as BranchRecord + + return newBranch } - validateBranchName(branch.name) - - const results = await Branches.knex().insert(branch, '*') - const newBranch = results[0] as BranchRecord - - return newBranch -} - export async function updateBranch(branchId: string, branch: Partial) { if (branch.name) { validateBranchName(branch.name) diff --git a/packages/server/modules/core/services/branch/management.ts b/packages/server/modules/core/services/branch/management.ts index 23976d69e..90bcf66f0 100644 --- a/packages/server/modules/core/services/branch/management.ts +++ b/packages/server/modules/core/services/branch/management.ts @@ -19,10 +19,8 @@ import { } from '@/modules/core/graph/generated/graphql' import { BranchRecord } from '@/modules/core/helpers/types' import { - createBranch, deleteBranchById, getBranchByIdFactory, - getStreamBranchByNameFactory, updateBranch } from '@/modules/core/repositories/branches' import { getStream, markBranchStreamUpdated } from '@/modules/core/repositories/streams' @@ -30,35 +28,40 @@ import { has } from 'lodash' import { isBranchDeleteInput, isBranchUpdateInput } from '@/modules/core/helpers/branch' import { ModelsEmitter } from '@/modules/core/events/modelsEmitter' import { db } from '@/db/knex' +import { + CreateBranchAndNotify, + GetStreamBranchByName, + StoreBranch +} from '@/modules/core/domain/branches/operations' const isBranchCreateInput = ( i: BranchCreateInput | CreateModelInput ): i is BranchCreateInput => has(i, 'streamId') -export async function createBranchAndNotify( - input: BranchCreateInput | CreateModelInput, - creatorId: string -) { - const streamId = isBranchCreateInput(input) ? input.streamId : input.projectId - const existingBranch = await getStreamBranchByNameFactory({ db })( - streamId, - input.name - ) - if (existingBranch) { - throw new BranchCreateError('A branch with this name already exists') +export const createBranchAndNotifyFactory = + (deps: { + getStreamBranchByName: GetStreamBranchByName + createBranch: StoreBranch + addBranchCreatedActivity: typeof addBranchCreatedActivity + }): CreateBranchAndNotify => + async (input: BranchCreateInput | CreateModelInput, creatorId: string) => { + const streamId = isBranchCreateInput(input) ? input.streamId : input.projectId + const existingBranch = await deps.getStreamBranchByName(streamId, input.name) + if (existingBranch) { + throw new BranchCreateError('A branch with this name already exists') + } + + const branch = await deps.createBranch({ + name: input.name, + description: input.description ?? null, + streamId: isBranchCreateInput(input) ? input.streamId : input.projectId, + authorId: creatorId + }) + await deps.addBranchCreatedActivity({ branch }) + + return branch } - const branch = await createBranch({ - name: input.name, - description: input.description ?? null, - streamId: isBranchCreateInput(input) ? input.streamId : input.projectId, - authorId: creatorId - }) - await addBranchCreatedActivity({ branch }) - - return branch -} - export async function updateBranchAndNotify( input: BranchUpdateInput | UpdateModelInput, userId: string diff --git a/packages/server/modules/core/services/branches.js b/packages/server/modules/core/services/branches.js index bc90e24a1..9672acdc1 100644 --- a/packages/server/modules/core/services/branches.js +++ b/packages/server/modules/core/services/branches.js @@ -1,9 +1,6 @@ 'use strict' const knex = require('@/db/knex') -const { - getStreamBranchCount, - createBranch: createBranchInDb -} = require('@/modules/core/repositories/branches') +const { getStreamBranchCount } = require('@/modules/core/repositories/branches') const { updateBranchAndNotify, deleteBranchAndNotify @@ -12,14 +9,6 @@ const { const Branches = () => knex('branches') module.exports = { - /** - * @deprecated Use `createBranchAndNotify` or use the repository function directly - */ - async createBranch({ name, description, streamId, authorId }) { - const branch = await createBranchInDb({ name, description, streamId, authorId }) - return branch.id - }, - /** * @deprecated Use 'updateBranchAndNotify' */ diff --git a/packages/server/modules/core/services/commit/batchCommitActions.ts b/packages/server/modules/core/services/commit/batchCommitActions.ts index 4a9b0243c..7616e0aa4 100644 --- a/packages/server/modules/core/services/commit/batchCommitActions.ts +++ b/packages/server/modules/core/services/commit/batchCommitActions.ts @@ -15,7 +15,7 @@ import { } from '@/modules/core/graph/generated/graphql' import { Roles } from '@/modules/core/helpers/mainConstants' import { - createBranch, + createBranchFactory, getStreamBranchByNameFactory } from '@/modules/core/repositories/branches' import { @@ -150,7 +150,7 @@ export async function batchMoveCommits( try { const finalBranch = branch || - (await createBranch({ + (await createBranchFactory({ db })({ name: targetBranch, streamId: stream.id, authorId: userId, diff --git a/packages/server/modules/core/services/streams/management.ts b/packages/server/modules/core/services/streams/management.ts index 44e3b2514..117ed123b 100644 --- a/packages/server/modules/core/services/streams/management.ts +++ b/packages/server/modules/core/services/streams/management.ts @@ -20,7 +20,6 @@ import { getStream, updateStream } from '@/modules/core/repositories/streams' -import { createBranch } from '@/modules/core/services/branches' import { createAndSendInviteFactory } from '@/modules/serverinvites/services/creation' import { StreamInvalidAccessError, @@ -55,6 +54,7 @@ import { collectAndValidateCoreTargetsFactory } from '@/modules/serverinvites/se import { buildCoreInviteEmailContentsFactory } from '@/modules/serverinvites/services/coreEmailContents' import { getEventBus } from '@/modules/shared/services/eventBus' import { ProjectInviteResourceType } from '@/modules/serverinvites/domain/constants' +import { createBranchFactory } from '@/modules/core/repositories/branches' export async function createStreamReturnRecord( params: (StreamCreateInput | ProjectCreateInput) & { @@ -80,7 +80,7 @@ export async function createStreamReturnRecord( const streamId = stream.id // Create a default main branch - await createBranch({ + await createBranchFactory({ db })({ name: 'main', description: 'default branch', streamId, diff --git a/packages/server/modules/core/tests/batchCommits.spec.ts b/packages/server/modules/core/tests/batchCommits.spec.ts index 9746dc8e7..8bb2afcb2 100644 --- a/packages/server/modules/core/tests/batchCommits.spec.ts +++ b/packages/server/modules/core/tests/batchCommits.spec.ts @@ -1,8 +1,9 @@ import { buildApolloServer } from '@/app' +import { db } from '@/db/knex' import { Commits, Streams, Users } from '@/modules/core/dbSchema' import { Roles } from '@/modules/core/helpers/mainConstants' +import { createBranchFactory } from '@/modules/core/repositories/branches' import { getCommits } from '@/modules/core/repositories/commits' -import { createBranch } from '@/modules/core/services/branches' import { addOrUpdateStreamCollaborator } from '@/modules/core/services/streams/streamAccessService' import { BasicTestUser, createTestUsers } from '@/test/authHelper' import { deleteCommits, moveCommits } from '@/test/graphql/commits' @@ -23,6 +24,8 @@ enum BatchActionType { Delete } +const createBranch = createBranchFactory({ db }) + const cleanup = async () => { await truncateTables([Streams.name, Users.name, Commits.name]) } diff --git a/packages/server/modules/core/tests/branches.spec.js b/packages/server/modules/core/tests/branches.spec.js index 82e353ead..c6409ac2d 100644 --- a/packages/server/modules/core/tests/branches.spec.js +++ b/packages/server/modules/core/tests/branches.spec.js @@ -12,7 +12,6 @@ const { createUser } = require('../services/users') const { createStream } = require('../services/streams') const { createObject } = require('../services/objects') const { - createBranch, updateBranch, getBranchesByStreamId, deleteBranchById @@ -22,12 +21,14 @@ const { createCommitByBranchName } = require('../services/commits') const { deleteBranchAndNotify } = require('@/modules/core/services/branch/management') const { getBranchByIdFactory, - getStreamBranchByNameFactory + getStreamBranchByNameFactory, + createBranchFactory } = require('@/modules/core/repositories/branches') const Commits = () => knex('commits') const getBranchById = getBranchByIdFactory({ db: knex }) const getStreamBranchByName = getStreamBranchByNameFactory({ db: knex }) +const createBranch = createBranchFactory({ db: knex }) describe('Branches @core-branches', () => { const user = { @@ -57,11 +58,13 @@ describe('Branches @core-branches', () => { const branch = { name: 'dim/dev' } it('Should create a branch', async () => { - branch.id = await createBranch({ - ...branch, - streamId: stream.id, - authorId: user.id - }) + branch.id = ( + await createBranch({ + ...branch, + streamId: stream.id, + authorId: user.id + }) + ).id expect(branch.id).to.be.not.null expect(branch.id).to.be.a.string }) @@ -127,11 +130,13 @@ describe('Branches @core-branches', () => { }) it('Branch names should be case insensitive (always lowercase)', async () => { - const id = await createBranch({ - name: 'CaseSensitive', - streamId: stream.id, - authorId: user.id - }) + const id = ( + await createBranch({ + name: 'CaseSensitive', + streamId: stream.id, + authorId: user.id + }) + ).id const b = await getStreamBranchByName(stream.id, 'casesensitive') expect(b.name).to.equal('casesensitive') @@ -192,11 +197,13 @@ describe('Branches @core-branches', () => { it('Deleting a branch should delete the commit', async () => { const branchName = 'pasta' - const branchId = await createBranch({ - name: branchName, - streamId: stream.id, - authorId: user.id - }) + const branchId = ( + await createBranch({ + name: branchName, + streamId: stream.id, + authorId: user.id + }) + ).id const tempCommit = await createCommitByBranchName({ streamId: stream.id, diff --git a/packages/server/modules/core/tests/commits.spec.js b/packages/server/modules/core/tests/commits.spec.js index 168816498..89bb51113 100644 --- a/packages/server/modules/core/tests/commits.spec.js +++ b/packages/server/modules/core/tests/commits.spec.js @@ -6,7 +6,6 @@ const { beforeEachContext } = require('@/test/hooks') const { createUser } = require('../services/users') const { createStream } = require('../services/streams') const { createObject } = require('../services/objects') -const { createBranch } = require('../services/branches') const { createCommitByBranchName, @@ -19,8 +18,25 @@ const { getCommitsTotalCountByStreamId, getCommitsByUserId } = require('../services/commits') -const { createBranchAndNotify } = require('@/modules/core/services/branch/management') +const { + createBranchAndNotifyFactory +} = require('@/modules/core/services/branch/management') const cryptoRandomString = require('crypto-random-string') +const { + createBranchFactory, + getStreamBranchByNameFactory +} = require('@/modules/core/repositories/branches') +const { db } = require('@/db/knex') +const { + addBranchCreatedActivity +} = require('@/modules/activitystream/services/branchActivity') + +const createBranch = createBranchFactory({ db }) +const createBranchAndNotify = createBranchAndNotifyFactory({ + createBranch, + getStreamBranchByName: getStreamBranchByNameFactory({ db }), + addBranchCreatedActivity +}) describe('Commits @core-commits', () => { const user = { diff --git a/packages/server/modules/core/tests/streams.spec.ts b/packages/server/modules/core/tests/streams.spec.ts index 53dbefa42..2a9d91a16 100644 --- a/packages/server/modules/core/tests/streams.spec.ts +++ b/packages/server/modules/core/tests/streams.spec.ts @@ -8,7 +8,7 @@ import { grantPermissionsStream } from '@/modules/core/services/streams' -import { createBranch, deleteBranchById } from '@/modules/core/services/branches' +import { deleteBranchById } from '@/modules/core/services/branches' import { createObject } from '@/modules/core/services/objects' import { createCommitByBranchName } from '@/modules/core/services/commits' @@ -50,10 +50,14 @@ import { ServerAndContext } from '@/test/graphqlHelper' import { buildApolloServer } from '@/app' -import { getStreamBranchByNameFactory } from '@/modules/core/repositories/branches' +import { + createBranchFactory, + getStreamBranchByNameFactory +} from '@/modules/core/repositories/branches' import { db } from '@/db/knex' const getStreamBranchByName = getStreamBranchByNameFactory({ db }) +const createBranch = createBranchFactory({ db }) describe('Streams @core-streams', () => { const userOne: BasicTestUser = { diff --git a/packages/server/modules/core/tests/users.spec.js b/packages/server/modules/core/tests/users.spec.js index 11285c7ed..403e9de93 100644 --- a/packages/server/modules/core/tests/users.spec.js +++ b/packages/server/modules/core/tests/users.spec.js @@ -27,7 +27,7 @@ const { getStream } = require('../services/streams') -const { createBranch, getBranchesByStreamId } = require('../services/branches') +const { getBranchesByStreamId } = require('../services/branches') const { createCommitByBranchName, @@ -40,6 +40,10 @@ const { createObject } = require('../services/objects') const { beforeEachContext } = require('@/test/hooks') const { Scopes, Roles } = require('@speckle/shared') const { createRandomEmail } = require('../helpers/testHelpers') +const { createBranchFactory } = require('@/modules/core/repositories/branches') +const { db } = require('@/db/knex') + +const createBranch = createBranchFactory({ db }) describe('Actors & Tokens @user-services', () => { const myTestActor = { @@ -127,18 +131,22 @@ describe('Actors & Tokens @user-services', () => { // create a branch for ballmer on the multiowner stream const branch = { name: 'ballmer/dev' } - branch.id = await createBranch({ - ...branch, - streamId: multiOwnerStream.id, - authorId: ballmerUserId - }) + branch.id = ( + await createBranch({ + ...branch, + streamId: multiOwnerStream.id, + authorId: ballmerUserId + }) + ).id const branchSecond = { name: 'steve/jobs' } - branchSecond.id = await createBranch({ - ...branchSecond, - streamId: multiOwnerStream.id, - authorId: myTestActor.id - }) + branchSecond.id = ( + await createBranch({ + ...branchSecond, + streamId: multiOwnerStream.id, + authorId: myTestActor.id + }) + ).id // create an object and a commit around it on the multiowner stream const objId = await createObject({ diff --git a/packages/server/modules/cross-server-sync/index.ts b/packages/server/modules/cross-server-sync/index.ts index d4dfaae9f..2dd398fc4 100644 --- a/packages/server/modules/cross-server-sync/index.ts +++ b/packages/server/modules/cross-server-sync/index.ts @@ -1,5 +1,6 @@ import { db } from '@/db/knex' import { moduleLogger, crossServerSyncLogger } from '@/logging/logging' +import { addBranchCreatedActivity } from '@/modules/activitystream/services/branchActivity' import { addCommentCreatedActivity, addReplyAddedActivity @@ -19,6 +20,7 @@ import { createCommentThreadAndNotifyFactory } from '@/modules/comments/services/management' import { + createBranchFactory, getBranchLatestCommitsFactory, getStreamBranchByNameFactory, getStreamBranchesByNameFactory @@ -35,7 +37,7 @@ import { markOnboardingBaseStream } from '@/modules/core/repositories/streams' import { getFirstAdmin, getUser } from '@/modules/core/repositories/users' -import { createBranchAndNotify } from '@/modules/core/services/branch/management' +import { createBranchAndNotifyFactory } from '@/modules/core/services/branch/management' import { createCommitByBranchId } from '@/modules/core/services/commit/management' import { getViewerResourceGroupsFactory, @@ -107,7 +109,11 @@ const crossServerSyncModule: SpeckleModule = { createStreamReturnRecord, getUser, getStreamBranchByName, - createBranchAndNotify + createBranchAndNotify: createBranchAndNotifyFactory({ + createBranch: createBranchFactory({ db }), + getStreamBranchByName, + addBranchCreatedActivity + }) }), markOnboardingBaseStream }) diff --git a/packages/server/modules/cross-server-sync/services/project.ts b/packages/server/modules/cross-server-sync/services/project.ts index ca4fc27ce..bdbd7b91f 100644 --- a/packages/server/modules/cross-server-sync/services/project.ts +++ b/packages/server/modules/cross-server-sync/services/project.ts @@ -11,12 +11,14 @@ import { CrossSyncProjectMetadataQuery } from '@/modules/cross-server-sync/graph import { omit } from 'lodash' import { getFrontendOrigin } from '@/modules/shared/helpers/envHelper' import { createStreamReturnRecord } from '@/modules/core/services/streams/management' -import { createBranchAndNotify } from '@/modules/core/services/branch/management' import { DownloadCommit, DownloadProject } from '@/modules/cross-server-sync/domain/operations' -import { GetStreamBranchByName } from '@/modules/core/domain/branches/operations' +import { + CreateBranchAndNotify, + GetStreamBranchByName +} from '@/modules/core/domain/branches/operations' type ProjectMetadata = Awaited> @@ -113,7 +115,7 @@ const getProjectMetadata = async (params: { type EnsureBranchDeps = { getStreamBranchByName: GetStreamBranchByName - createBranchAndNotify: typeof createBranchAndNotify + createBranchAndNotify: CreateBranchAndNotify } const ensureBranchFactory = diff --git a/packages/server/test/speckle-helpers/branchHelper.ts b/packages/server/test/speckle-helpers/branchHelper.ts index fdd71959e..895a8e18b 100644 --- a/packages/server/test/speckle-helpers/branchHelper.ts +++ b/packages/server/test/speckle-helpers/branchHelper.ts @@ -1,4 +1,5 @@ -import { createBranch } from '@/modules/core/services/branches' +import { db } from '@/db/knex' +import { createBranchFactory } from '@/modules/core/repositories/branches' import { BasicTestUser } from '@/test/authHelper' import { BasicTestStream } from '@/test/speckle-helpers/streamHelper' import { omit } from 'lodash' @@ -30,10 +31,13 @@ export async function createTestBranch(params: { branch.streamId = stream.id branch.authorId = owner.id - const id = await createBranch({ - ...omit(branch, ['id']), - description: branch.description || null - }) + const createBranch = createBranchFactory({ db }) + const id = ( + await createBranch({ + ...omit(branch, ['id']), + description: branch.description || null + }) + ).id branch.id = id }