diff --git a/packages/server/modules/activitystream/services/commentActivity.ts b/packages/server/modules/activitystream/services/commentActivity.ts index 950c22336..1812b80d9 100644 --- a/packages/server/modules/activitystream/services/commentActivity.ts +++ b/packages/server/modules/activitystream/services/commentActivity.ts @@ -13,7 +13,7 @@ import { } from '@/modules/core/graph/generated/graphql' import { getBranchLatestCommits, - getStreamBranchesByName + getStreamBranchesByNameFactory } from '@/modules/core/repositories/branches' import { getAllBranchCommits, @@ -67,7 +67,7 @@ export async function addCommentCreatedActivity(params: { getViewerResourceGroups: getViewerResourceGroupsFactory({ getStreamObjects, getBranchLatestCommits, - getStreamBranchesByName, + getStreamBranchesByName: getStreamBranchesByNameFactory({ db }), getSpecificBranchCommits, getAllBranchCommits }) diff --git a/packages/server/modules/cli/commands/download/commit.ts b/packages/server/modules/cli/commands/download/commit.ts index 2f19023a4..3fda73e73 100644 --- a/packages/server/modules/cli/commands/download/commit.ts +++ b/packages/server/modules/cli/commands/download/commit.ts @@ -4,8 +4,8 @@ import { cliLogger } from '@/logging/logging' import { getStream, getStreamCollaborators } from '@/modules/core/repositories/streams' import { getBranchLatestCommits, - getStreamBranchByName, - getStreamBranchesByName + getStreamBranchByNameFactory, + getStreamBranchesByNameFactory } from '@/modules/core/repositories/branches' import { getUser } from '@/modules/core/repositories/users' import { createCommitByBranchId } from '@/modules/core/services/commit/management' @@ -88,7 +88,7 @@ const command: CommandModule< getViewerResourceGroups: getViewerResourceGroupsFactory({ getStreamObjects, getBranchLatestCommits, - getStreamBranchesByName, + getStreamBranchesByName: getStreamBranchesByNameFactory({ db }), getSpecificBranchCommits, getAllBranchCommits }) @@ -115,7 +115,7 @@ const command: CommandModule< const downloadCommit = downloadCommitFactory({ getStream, - getStreamBranchByName, + getStreamBranchByName: getStreamBranchByNameFactory({ db }), getStreamCollaborators, getUser, createCommitByBranchId, diff --git a/packages/server/modules/cli/commands/download/project.ts b/packages/server/modules/cli/commands/download/project.ts index 29154d06e..d896f5c38 100644 --- a/packages/server/modules/cli/commands/download/project.ts +++ b/packages/server/modules/cli/commands/download/project.ts @@ -5,8 +5,8 @@ import { downloadCommitFactory } from '@/modules/cross-server-sync/services/comm import { getStream, getStreamCollaborators } from '@/modules/core/repositories/streams' import { getBranchLatestCommits, - getStreamBranchByName, - getStreamBranchesByName + getStreamBranchByNameFactory, + getStreamBranchesByNameFactory } from '@/modules/core/repositories/branches' import { getUser } from '@/modules/core/repositories/users' import { createCommitByBranchId } from '@/modules/core/services/commit/management' @@ -84,7 +84,7 @@ const command: CommandModule< getViewerResourceGroups: getViewerResourceGroupsFactory({ getStreamObjects, getBranchLatestCommits, - getStreamBranchesByName, + getStreamBranchesByName: getStreamBranchesByNameFactory({ db }), getSpecificBranchCommits, getAllBranchCommits }) @@ -108,6 +108,7 @@ const command: CommandModule< addReplyAddedActivity }) + const getStreamBranchByName = getStreamBranchByNameFactory({ db }) const downloadProject = downloadProjectFactory({ downloadCommit: downloadCommitFactory({ getStream, diff --git a/packages/server/modules/comments/graph/resolvers/comments.ts b/packages/server/modules/comments/graph/resolvers/comments.ts index b1f9b3adc..c98304bfa 100644 --- a/packages/server/modules/comments/graph/resolvers/comments.ts +++ b/packages/server/modules/comments/graph/resolvers/comments.ts @@ -94,7 +94,7 @@ import { getStreamObjects } from '@/modules/core/repositories/objects' import { adminOverrideEnabled } from '@/modules/shared/helpers/envHelper' import { getBranchLatestCommits, - getStreamBranchesByName + getStreamBranchesByNameFactory } from '@/modules/core/repositories/branches' const streamResourceCheck = streamResourceCheckFactory({ @@ -177,7 +177,7 @@ const getViewerResourceItemsUngrouped = getViewerResourceItemsUngroupedFactory({ getViewerResourceGroups: getViewerResourceGroupsFactory({ getStreamObjects, getBranchLatestCommits, - getStreamBranchesByName, + getStreamBranchesByName: getStreamBranchesByNameFactory({ db }), getSpecificBranchCommits, getAllBranchCommits }) diff --git a/packages/server/modules/core/domain/branches/operations.ts b/packages/server/modules/core/domain/branches/operations.ts index e47c08f42..a74e8ea88 100644 --- a/packages/server/modules/core/domain/branches/operations.ts +++ b/packages/server/modules/core/domain/branches/operations.ts @@ -1,5 +1,5 @@ import { Branch } from '@/modules/core/domain/branches/types' -import { Optional } from '@speckle/shared' +import { Nullable, Optional } from '@speckle/shared' export type GenerateBranchId = () => string @@ -16,3 +16,16 @@ export type GetBranchById = ( streamId: string }> ) => Promise> + +export type GetStreamBranchesByName = ( + streamId: string, + names: string[], + options?: Partial<{ + startsWithName: boolean + }> +) => Promise + +export type GetStreamBranchByName = ( + streamId: string, + name: string +) => Promise> diff --git a/packages/server/modules/core/graph/resolvers/branches.js b/packages/server/modules/core/graph/resolvers/branches.js index 8e5ac21c1..bb441f6c2 100644 --- a/packages/server/modules/core/graph/resolvers/branches.js +++ b/packages/server/modules/core/graph/resolvers/branches.js @@ -8,7 +8,6 @@ const { } = require('@/modules/shared/utils/subscriptions') const { authorizeResolver } = require('@/modules/shared') -const { getBranchByNameAndStreamId } = require('@/modules/core/services/branches') const { createBranchAndNotify, updateBranchAndNotify, @@ -20,7 +19,10 @@ const { const { getUserById } = require('../../services/users') const { Roles } = require('@speckle/shared') -const { getBranchByIdFactory } = require('@/modules/core/repositories/branches') +const { + getBranchByIdFactory, + getStreamBranchByNameFactory +} = require('@/modules/core/repositories/branches') const { db } = require('@/db/knex') // subscription events @@ -29,6 +31,7 @@ const BRANCH_UPDATED = BranchPubsubEvents.BranchUpdated const BRANCH_DELETED = BranchPubsubEvents.BranchDeleted const getBranchById = getBranchByIdFactory({ db }) +const getStreamBranchByName = getStreamBranchByNameFactory({ db }) /** @type {import('@/modules/core/graph/generated/graphql').Resolvers} */ module.exports = { @@ -45,10 +48,7 @@ module.exports = { // When getting a branch by name, if not found, we try to do a 'hail mary' attempt // and get it by id as well (this would be coming from a FE2 url). - const branchByName = await getBranchByNameAndStreamId({ - streamId: parent.id, - name: args.name - }) + const branchByName = await getStreamBranchByName(parent.id, args.name) if (branchByName) return branchByName const branchByIdRes = await getBranchById(args.name) diff --git a/packages/server/modules/core/graph/resolvers/models.ts b/packages/server/modules/core/graph/resolvers/models.ts index dd09e7a2c..8d76c2d40 100644 --- a/packages/server/modules/core/graph/resolvers/models.ts +++ b/packages/server/modules/core/graph/resolvers/models.ts @@ -25,7 +25,7 @@ import { import { getBranchLatestCommits, getModelTreeItems, - getStreamBranchesByName + getStreamBranchesByNameFactory } from '@/modules/core/repositories/branches' import { BranchNotFoundError } from '@/modules/core/errors/branch' import { CommitNotFoundError } from '@/modules/core/errors/commit' @@ -34,11 +34,12 @@ import { getAllBranchCommits, getSpecificBranchCommits } from '@/modules/core/repositories/commits' +import { db } from '@/db/knex' const getViewerResourceGroups = getViewerResourceGroupsFactory({ getStreamObjects, getBranchLatestCommits, - getStreamBranchesByName, + getStreamBranchesByName: getStreamBranchesByNameFactory({ db }), getSpecificBranchCommits, getAllBranchCommits }) diff --git a/packages/server/modules/core/loaders.ts b/packages/server/modules/core/loaders.ts index ada16a508..f8d91458d 100644 --- a/packages/server/modules/core/loaders.ts +++ b/packages/server/modules/core/loaders.ts @@ -46,7 +46,7 @@ import { getBranchesByIdsFactory, getBranchLatestCommits, getStreamBranchCounts, - getStreamBranchesByName + getStreamBranchesByNameFactory } from '@/modules/core/repositories/branches' import { CommentRecord } from '@/modules/comments/helpers/types' import { metaHelpers } from '@/modules/core/helpers/meta' @@ -106,6 +106,7 @@ const getCommentReplyCounts = getCommentReplyCountsFactory({ db }) const getCommentReplyAuthorIds = getCommentReplyAuthorIdsFactory({ db }) const getCommentParents = getCommentParentsFactory({ db }) const getBranchesByIds = getBranchesByIdsFactory({ db }) +const getStreamBranchesByName = getStreamBranchesByNameFactory({ db }) /** * TODO: Lazy load DataLoaders to reduce memory usage diff --git a/packages/server/modules/core/repositories/branches.ts b/packages/server/modules/core/repositories/branches.ts index 174133438..200c9cd8e 100644 --- a/packages/server/modules/core/repositories/branches.ts +++ b/packages/server/modules/core/repositories/branches.ts @@ -18,7 +18,9 @@ import { getMaximumProjectModelsPerPage } from '@/modules/shared/helpers/envHelp import { GenerateBranchId, GetBranchById, - GetBranchesByIds + GetBranchesByIds, + GetStreamBranchByName, + GetStreamBranchesByName } from '@/modules/core/domain/branches/operations' const tables = { @@ -48,45 +50,50 @@ export const getBranchByIdFactory = return branch as Optional } -export async function getStreamBranchesByName( - streamId: string, - names: string[], - options?: Partial<{ - /** - * Set to true if you want to find branches that start with specified names as prefixes - */ - startsWithName: boolean - }> -): Promise { - if (!streamId || !names?.length) return [] - const { startsWithName } = options || {} +export const getStreamBranchesByNameFactory = + (deps: { db: Knex }): GetStreamBranchesByName => + async ( + streamId: string, + names: string[], + options?: Partial<{ + /** + * Set to true if you want to find branches that start with specified names as prefixes + */ + startsWithName: boolean + }> + ): Promise => { + if (!streamId || !names?.length) return [] + const { startsWithName } = options || {} - const q = Branches.knex() - .where(Branches.col.streamId, streamId) - .andWhere((w1) => { - w1.where( - knex.raw('LOWER(??) ilike ANY(?)', [ - Branches.col.name, - names.map((n) => n.toLowerCase() + (startsWithName ? '%' : '')) - ]) - ) + const q = tables + .branches(deps.db) + .where(Branches.col.streamId, streamId) + .andWhere((w1) => { + w1.where( + knex.raw('LOWER(??) ilike ANY(?)', [ + Branches.col.name, + names.map((n) => n.toLowerCase() + (startsWithName ? '%' : '')) + ]) + ) - if (!options?.startsWithName) { - // There are some edge cases with branches that have backwards slashes in their name that break the query, - // hence the extra condition - w1.orWhereIn(Branches.col.name, names) - } - }) + if (!options?.startsWithName) { + // There are some edge cases with branches that have backwards slashes in their name that break the query, + // hence the extra condition + w1.orWhereIn(Branches.col.name, names) + } + }) - return await q -} + return await q + } -export async function getStreamBranchByName(streamId: string, name: string) { - if (!streamId || !name) return null +export const getStreamBranchByNameFactory = + (deps: { db: Knex }): GetStreamBranchByName => + async (streamId: string, name: string) => { + if (!streamId || !name) return null - const [first] = await getStreamBranchesByName(streamId, [name]) - return first || null -} + const [first] = await getStreamBranchesByNameFactory(deps)(streamId, [name]) + return first || null + } export function getBatchedStreamBranches( streamId: string, diff --git a/packages/server/modules/core/services/branch/management.ts b/packages/server/modules/core/services/branch/management.ts index 1a4b8b56e..23976d69e 100644 --- a/packages/server/modules/core/services/branch/management.ts +++ b/packages/server/modules/core/services/branch/management.ts @@ -22,7 +22,7 @@ import { createBranch, deleteBranchById, getBranchByIdFactory, - getStreamBranchByName, + getStreamBranchByNameFactory, updateBranch } from '@/modules/core/repositories/branches' import { getStream, markBranchStreamUpdated } from '@/modules/core/repositories/streams' @@ -40,7 +40,10 @@ export async function createBranchAndNotify( creatorId: string ) { const streamId = isBranchCreateInput(input) ? input.streamId : input.projectId - const existingBranch = await getStreamBranchByName(streamId, input.name) + const existingBranch = await getStreamBranchByNameFactory({ db })( + streamId, + input.name + ) if (existingBranch) { throw new BranchCreateError('A branch with this name already exists') } diff --git a/packages/server/modules/core/services/branches.js b/packages/server/modules/core/services/branches.js index c520ea2c3..bc90e24a1 100644 --- a/packages/server/modules/core/services/branches.js +++ b/packages/server/modules/core/services/branches.js @@ -1,7 +1,6 @@ 'use strict' const knex = require('@/db/knex') const { - getStreamBranchByName, getStreamBranchCount, createBranch: createBranchInDb } = require('@/modules/core/repositories/branches') @@ -59,10 +58,6 @@ module.exports = { return await getStreamBranchCount(streamId) }, - async getBranchByNameAndStreamId({ streamId, name }) { - return await getStreamBranchByName(streamId, name) - }, - /** * @deprecated Use 'deleteBranchAndNotify' */ diff --git a/packages/server/modules/core/services/commit/batchCommitActions.ts b/packages/server/modules/core/services/commit/batchCommitActions.ts index 2f5b2c30b..4a9b0243c 100644 --- a/packages/server/modules/core/services/commit/batchCommitActions.ts +++ b/packages/server/modules/core/services/commit/batchCommitActions.ts @@ -1,3 +1,4 @@ +import { db } from '@/db/knex' import { addCommitDeletedActivity, addCommitMovedActivity @@ -15,7 +16,7 @@ import { import { Roles } from '@/modules/core/helpers/mainConstants' import { createBranch, - getStreamBranchByName + getStreamBranchByNameFactory } from '@/modules/core/repositories/branches' import { deleteCommits, @@ -104,7 +105,7 @@ async function validateCommitsMove( } const stream = streams[0] - const branch = await getStreamBranchByName(stream.id, targetBranch) + const branch = await getStreamBranchByNameFactory({ db })(stream.id, targetBranch) if ( !branch && diff --git a/packages/server/modules/core/services/commit/management.ts b/packages/server/modules/core/services/commit/management.ts index 663efe3ad..f10cbd3d6 100644 --- a/packages/server/modules/core/services/commit/management.ts +++ b/packages/server/modules/core/services/commit/management.ts @@ -21,7 +21,7 @@ import { import { CommitRecord } from '@/modules/core/helpers/types' import { getBranchByIdFactory, - getStreamBranchByName, + getStreamBranchByNameFactory, markCommitBranchUpdated } from '@/modules/core/repositories/branches' import { @@ -188,7 +188,7 @@ export async function createCommitByBranchName( const { notify = true } = options || {} const branchName = params.branchName.toLowerCase() - let myBranch = await getStreamBranchByName(streamId, branchName) + let myBranch = await getStreamBranchByNameFactory({ db })(streamId, branchName) if (!myBranch) { myBranch = (await getBranchByIdFactory({ db })(branchName)) || null } @@ -272,7 +272,7 @@ export async function updateCommitAndNotify( if (newBranchName) { try { const [newBranch, oldBranch] = await Promise.all([ - getStreamBranchByName(streamId, newBranchName), + getStreamBranchByNameFactory({ db })(streamId, newBranchName), getCommitBranch(commitId) ]) diff --git a/packages/server/modules/core/services/commit/viewerResources.ts b/packages/server/modules/core/services/commit/viewerResources.ts index 1016b3d43..bdb123f5d 100644 --- a/packages/server/modules/core/services/commit/viewerResources.ts +++ b/packages/server/modules/core/services/commit/viewerResources.ts @@ -6,6 +6,7 @@ import { GetViewerResourcesForComments, GetViewerResourcesFromLegacyIdentifiers } from '@/modules/comments/domain/operations' +import { GetStreamBranchesByName } from '@/modules/core/domain/branches/operations' import { ResourceIdentifier, ResourceIdentifierInput, @@ -15,10 +16,7 @@ import { ViewerUpdateTrackingTarget } from '@/modules/core/graph/generated/graphql' import { CommitRecord } from '@/modules/core/helpers/types' -import { - getBranchLatestCommits, - getStreamBranchesByName -} from '@/modules/core/repositories/branches' +import { getBranchLatestCommits } from '@/modules/core/repositories/branches' import { getAllBranchCommits, getCommitsAndTheirBranchIds, @@ -76,7 +74,7 @@ const getObjectResourceGroupsFactory = } type GetVersionResourceGroupsIncludingAllVersionsFactoryDeps = { - getStreamBranchesByName: typeof getStreamBranchesByName + getStreamBranchesByName: GetStreamBranchesByName getAllBranchCommits: typeof getAllBranchCommits } @@ -158,7 +156,7 @@ const getVersionResourceGroupsIncludingAllVersionsFactory = } type GetVersionResourceGroupsLoadedVersionsOnlyDeps = { - getStreamBranchesByName: typeof getStreamBranchesByName + getStreamBranchesByName: GetStreamBranchesByName getSpecificBranchCommits: typeof getSpecificBranchCommits getBranchLatestCommits: typeof getBranchLatestCommits } diff --git a/packages/server/modules/core/services/commits.js b/packages/server/modules/core/services/commits.js index ed5d3b852..92bc510a4 100644 --- a/packages/server/modules/core/services/commits.js +++ b/packages/server/modules/core/services/commits.js @@ -1,11 +1,10 @@ 'use strict' const knex = require('@/db/knex') +const { getStreamBranchByNameFactory } = require('@/modules/core/repositories/branches') const Commits = () => knex('commits') const StreamCommits = () => knex('stream_commits') -const { getBranchByNameAndStreamId } = require('./branches') - const { getStreamCommitCount, getPaginatedBranchCommits, @@ -128,10 +127,8 @@ module.exports = { async getCommitsTotalCountByBranchName({ streamId, branchName }) { branchName = branchName.toLowerCase() - const myBranch = await getBranchByNameAndStreamId({ - streamId, - name: branchName - }) + const getStreamBranchByName = getStreamBranchByNameFactory({ db: knex }) + const myBranch = await getStreamBranchByName(streamId, branchName) if (!myBranch) throw new Error(`Failed to find branch with name ${branchName}.`) @@ -147,10 +144,8 @@ module.exports = { async getCommitsByBranchName({ streamId, branchName, limit, cursor }) { branchName = branchName.toLowerCase() - const myBranch = await getBranchByNameAndStreamId({ - streamId, - name: branchName - }) + const getStreamBranchByName = getStreamBranchByNameFactory({ db: knex }) + const myBranch = await getStreamBranchByName(streamId, branchName) if (!myBranch) throw new Error(`Failed to find branch with name ${branchName}.`) diff --git a/packages/server/modules/core/tests/branches.spec.js b/packages/server/modules/core/tests/branches.spec.js index ec80f1a7a..82e353ead 100644 --- a/packages/server/modules/core/tests/branches.spec.js +++ b/packages/server/modules/core/tests/branches.spec.js @@ -15,16 +15,19 @@ const { createBranch, updateBranch, getBranchesByStreamId, - getBranchByNameAndStreamId, deleteBranchById } = require('../services/branches') const { createCommitByBranchName } = require('../services/commits') const { deleteBranchAndNotify } = require('@/modules/core/services/branch/management') -const { getBranchByIdFactory } = require('@/modules/core/repositories/branches') +const { + getBranchByIdFactory, + getStreamBranchByNameFactory +} = require('@/modules/core/repositories/branches') const Commits = () => knex('commits') const getBranchById = getBranchByIdFactory({ db: knex }) +const getStreamBranchByName = getStreamBranchByNameFactory({ db: knex }) describe('Branches @core-branches', () => { const user = { @@ -130,22 +133,13 @@ describe('Branches @core-branches', () => { authorId: user.id }) - const b = await getBranchByNameAndStreamId({ - streamId: stream.id, - name: 'casesensitive' - }) + const b = await getStreamBranchByName(stream.id, 'casesensitive') expect(b.name).to.equal('casesensitive') - const bb = await getBranchByNameAndStreamId({ - streamId: stream.id, - name: 'CaseSensitive' - }) + const bb = await getStreamBranchByName(stream.id, 'CaseSensitive') expect(bb.name).to.equal('casesensitive') - const bbb = await getBranchByNameAndStreamId({ - streamId: stream.id, - name: 'CASESENSITIVE' - }) + const bbb = await getStreamBranchByName(stream.id, 'CASESENSITIVE') expect(bbb.name).to.equal('casesensitive') // cleanup @@ -219,7 +213,7 @@ describe('Branches @core-branches', () => { }) it('Should NOT delete the main branch', async () => { - const b = await getBranchByNameAndStreamId({ streamId: stream.id, name: 'main' }) + const b = await getStreamBranchByName(stream.id, 'main') try { await deleteBranchById({ id: b.id, streamId: stream.id, userId: user.id }) assert.fail() diff --git a/packages/server/modules/core/tests/streams.spec.ts b/packages/server/modules/core/tests/streams.spec.ts index 6841c4bef..53dbefa42 100644 --- a/packages/server/modules/core/tests/streams.spec.ts +++ b/packages/server/modules/core/tests/streams.spec.ts @@ -8,11 +8,7 @@ import { grantPermissionsStream } from '@/modules/core/services/streams' -import { - createBranch, - getBranchByNameAndStreamId, - deleteBranchById -} from '@/modules/core/services/branches' +import { createBranch, deleteBranchById } from '@/modules/core/services/branches' import { createObject } from '@/modules/core/services/objects' import { createCommitByBranchName } from '@/modules/core/services/commits' @@ -54,6 +50,10 @@ import { ServerAndContext } from '@/test/graphqlHelper' import { buildApolloServer } from '@/app' +import { getStreamBranchByNameFactory } from '@/modules/core/repositories/branches' +import { db } from '@/db/knex' + +const getStreamBranchByName = getStreamBranchByNameFactory({ db }) describe('Streams @core-streams', () => { const userOne: BasicTestUser = { @@ -328,10 +328,7 @@ describe('Streams @core-streams', () => { // await sleep(100) - const b = await getBranchByNameAndStreamId({ - streamId: updatableStream.id, - name: 'dim/lol' - }) + const b = await getStreamBranchByName(updatableStream.id, 'dim/lol') await deleteBranchById({ id: b!.id, streamId: updatableStream.id, diff --git a/packages/server/modules/cross-server-sync/index.ts b/packages/server/modules/cross-server-sync/index.ts index 0dab3bd40..cbc69518c 100644 --- a/packages/server/modules/cross-server-sync/index.ts +++ b/packages/server/modules/cross-server-sync/index.ts @@ -20,8 +20,8 @@ import { } from '@/modules/comments/services/management' import { getBranchLatestCommits, - getStreamBranchByName, - getStreamBranchesByName + getStreamBranchByNameFactory, + getStreamBranchesByNameFactory } from '@/modules/core/repositories/branches' import { getAllBranchCommits, @@ -64,7 +64,7 @@ const crossServerSyncModule: SpeckleModule = { getViewerResourceGroups: getViewerResourceGroupsFactory({ getStreamObjects, getBranchLatestCommits, - getStreamBranchesByName, + getStreamBranchesByName: getStreamBranchesByNameFactory({ db }), getSpecificBranchCommits, getAllBranchCommits }) @@ -88,6 +88,7 @@ const crossServerSyncModule: SpeckleModule = { addReplyAddedActivity }) + const getStreamBranchByName = getStreamBranchByNameFactory({ db }) const ensureOnboardingProject = ensureOnboardingProjectFactory({ getOnboardingBaseStream, getFirstAdmin, diff --git a/packages/server/modules/cross-server-sync/services/commit.ts b/packages/server/modules/cross-server-sync/services/commit.ts index b86bbe1eb..5068ff3ec 100644 --- a/packages/server/modules/cross-server-sync/services/commit.ts +++ b/packages/server/modules/cross-server-sync/services/commit.ts @@ -2,7 +2,6 @@ import fetch from 'cross-fetch' import { ApolloClient, NormalizedCacheObject, gql } from '@apollo/client/core' import { getFrontendOrigin } from '@/modules/shared/helpers/envHelper' import { CreateCommentInput } from '@/test/graphql/generated/graphql' -import { getStreamBranchByName } from '@/modules/core/repositories/branches' import { getStream, getStreamCollaborators } from '@/modules/core/repositories/streams' import { Roles, timeoutAt } from '@speckle/shared' import { createObject } from '@/modules/core/services/objects' @@ -31,6 +30,7 @@ import { CreateCommentReplyAndNotify, CreateCommentThreadAndNotify } from '@/modules/comments/domain/operations' +import { GetStreamBranchByName } from '@/modules/core/domain/branches/operations' type LocalResources = Awaited>> type LocalResourcesWithCommit = LocalResources & { newCommitId: string } @@ -219,7 +219,7 @@ const parseIncomingUrl = async (url: string, token?: string) => { type GetLocalResourcesDeps = { getStream: typeof getStream - getStreamBranchByName: typeof getStreamBranchByName + getStreamBranchByName: GetStreamBranchByName getStreamCollaborators: typeof getStreamCollaborators getUser: typeof getUser } diff --git a/packages/server/modules/cross-server-sync/services/project.ts b/packages/server/modules/cross-server-sync/services/project.ts index 7fc1eb1b7..ca4fc27ce 100644 --- a/packages/server/modules/cross-server-sync/services/project.ts +++ b/packages/server/modules/cross-server-sync/services/project.ts @@ -12,11 +12,11 @@ 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 { getStreamBranchByName } from '@/modules/core/repositories/branches' import { DownloadCommit, DownloadProject } from '@/modules/cross-server-sync/domain/operations' +import { GetStreamBranchByName } from '@/modules/core/domain/branches/operations' type ProjectMetadata = Awaited> @@ -112,7 +112,7 @@ const getProjectMetadata = async (params: { } type EnsureBranchDeps = { - getStreamBranchByName: typeof getStreamBranchByName + getStreamBranchByName: GetStreamBranchByName createBranchAndNotify: typeof createBranchAndNotify } diff --git a/packages/server/modules/fileuploads/index.ts b/packages/server/modules/fileuploads/index.ts index f37c867bf..8009edc93 100644 --- a/packages/server/modules/fileuploads/index.ts +++ b/packages/server/modules/fileuploads/index.ts @@ -10,15 +10,15 @@ import { } from '@/modules/fileuploads/repositories/fileUploads' import { db } from '@/db/knex' import { publish } from '@/modules/shared/utils/subscriptions' -import { getStreamBranchByName } from '@/modules/core/repositories/branches' import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { streamWritePermissionsPipelineFactory } from '@/modules/shared/authz' import { getStream } from '@/modules/core/repositories/streams' import { getRolesFactory } from '@/modules/shared/repositories/roles' import { getAutomationProjectFactory } from '@/modules/automate/repositories/automations' +import { getStreamBranchByNameFactory } from '@/modules/core/repositories/branches' const insertNewUploadAndNotify = insertNewUploadAndNotifyFactory({ - getStreamBranchByName, + getStreamBranchByName: getStreamBranchByNameFactory({ db }), saveUploadFile: saveUploadFileFactory({ db }), publish }) @@ -114,7 +114,7 @@ export const init: SpeckleModule['init'] = async (app, isInitial) => { const listenForImportUpdates = listenForImportUpdatesFactory({ getFileInfo: getFileInfoFactory({ db }), publish, - getStreamBranchByName + getStreamBranchByName: getStreamBranchByNameFactory({ db }) }) listenForImportUpdates() diff --git a/packages/server/modules/fileuploads/services/management.ts b/packages/server/modules/fileuploads/services/management.ts index 8f89472da..64070459a 100644 --- a/packages/server/modules/fileuploads/services/management.ts +++ b/packages/server/modules/fileuploads/services/management.ts @@ -1,9 +1,9 @@ +import { GetStreamBranchByName } from '@/modules/core/domain/branches/operations' import { ProjectFileImportUpdatedMessageType, ProjectPendingModelsUpdatedMessageType, ProjectPendingVersionsUpdatedMessageType } from '@/modules/core/graph/generated/graphql' -import { getStreamBranchByName } from '@/modules/core/repositories/branches' import { SaveUploadFile } from '@/modules/fileuploads/domain/operations' import { SaveUploadFileInput } from '@/modules/fileuploads/repositories/fileUploads' import { @@ -13,7 +13,7 @@ import { export const insertNewUploadAndNotifyFactory = (deps: { - getStreamBranchByName: typeof getStreamBranchByName + getStreamBranchByName: GetStreamBranchByName saveUploadFile: SaveUploadFile publish: PublishSubscription }) => diff --git a/packages/server/modules/fileuploads/services/resultListener.ts b/packages/server/modules/fileuploads/services/resultListener.ts index 10d3ba48d..b50c30b60 100644 --- a/packages/server/modules/fileuploads/services/resultListener.ts +++ b/packages/server/modules/fileuploads/services/resultListener.ts @@ -9,16 +9,16 @@ import { ProjectPendingModelsUpdatedMessageType, ProjectPendingVersionsUpdatedMessageType } from '@/modules/core/graph/generated/graphql' -import { getStreamBranchByName } from '@/modules/core/repositories/branches' import { addBranchCreatedActivity } from '@/modules/activitystream/services/branchActivity' import { trim } from 'lodash' import { GetFileInfo } from '@/modules/fileuploads/domain/operations' +import { GetStreamBranchByName } from '@/modules/core/domain/branches/operations' const branchCreatedPayloadRegexp = /^(.+):::(.+):::(.+):::(.+)$/i type OnFileImportProcessedDeps = { getFileInfo: GetFileInfo - getStreamBranchByName: typeof getStreamBranchByName + getStreamBranchByName: GetStreamBranchByName publish: PublishSubscription }