diff --git a/packages/server/modules/cli/commands/download/commit.ts b/packages/server/modules/cli/commands/download/commit.ts index 137ed821c..994a356af 100644 --- a/packages/server/modules/cli/commands/download/commit.ts +++ b/packages/server/modules/cli/commands/download/commit.ts @@ -4,7 +4,7 @@ import { cliLogger } from '@/logging/logging' import { getStreamCollaboratorsFactory, getStreamFactory, - markCommitStreamUpdated + markCommitStreamUpdatedFactory } from '@/modules/core/repositories/streams' import { getBranchByIdFactory, @@ -94,6 +94,7 @@ const command: CommandModule< } }, handler: async (argv) => { + const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) const getStream = getStreamFactory({ db }) const getObject = getObjectFactory({ db }) const getStreamObjects = getStreamObjectsFactory({ db }) diff --git a/packages/server/modules/cli/commands/download/project.ts b/packages/server/modules/cli/commands/download/project.ts index e74025201..6ab5f5d39 100644 --- a/packages/server/modules/cli/commands/download/project.ts +++ b/packages/server/modules/cli/commands/download/project.ts @@ -6,7 +6,7 @@ import { createStreamFactory, getStreamCollaboratorsFactory, getStreamFactory, - markCommitStreamUpdated + markCommitStreamUpdatedFactory } from '@/modules/core/repositories/streams' import { createBranchFactory, @@ -106,6 +106,7 @@ const command: CommandModule< handler: async (argv) => { const getStream = getStreamFactory({ db }) const getObject = getObjectFactory({ db }) + const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) const getStreamObjects = getStreamObjectsFactory({ db }) const markCommentViewed = markCommentViewedFactory({ db }) diff --git a/packages/server/modules/comments/tests/comments.graph.spec.js b/packages/server/modules/comments/tests/comments.graph.spec.js index ea62ec190..c68393c99 100644 --- a/packages/server/modules/comments/tests/comments.graph.spec.js +++ b/packages/server/modules/comments/tests/comments.graph.spec.js @@ -48,11 +48,11 @@ const { createBranchFactory } = require('@/modules/core/repositories/branches') const { - markCommitStreamUpdated, getStreamFactory, createStreamFactory, updateStreamFactory, - grantStreamPermissionsFactory + grantStreamPermissionsFactory, + markCommitStreamUpdatedFactory } = require('@/modules/core/repositories/streams') const { VersionsEmitter } = require('@/modules/core/events/versionsEmitter') const { getObjectFactory } = require('@/modules/core/repositories/objects') @@ -89,6 +89,7 @@ const { addCommitCreatedActivityFactory } = require('@/modules/activitystream/services/commitActivity') +const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) const streamResourceCheck = streamResourceCheckFactory({ checkStreamResourceAccess: checkStreamResourceAccessFactory({ db }) }) diff --git a/packages/server/modules/comments/tests/comments.spec.js b/packages/server/modules/comments/tests/comments.spec.js index 1173eca3a..7280b65eb 100644 --- a/packages/server/modules/comments/tests/comments.spec.js +++ b/packages/server/modules/comments/tests/comments.spec.js @@ -55,9 +55,9 @@ const { db } = require('@/db/knex') const { getBlobsFactory } = require('@/modules/blobstorage/repositories') const { CommentsEmitter } = require('@/modules/comments/events/emitter') const { - markCommitStreamUpdated, getStreamFactory, - createStreamFactory + createStreamFactory, + markCommitStreamUpdatedFactory } = require('@/modules/core/repositories/streams') const { createCommitByBranchIdFactory, @@ -154,6 +154,7 @@ const getComments = getCommentsLegacyFactory({ db }) const getResourceCommentCount = getResourceCommentCountFactory({ db }) const getStreamCommentCount = getStreamCommentCountFactory({ db }) +const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) const getObject = getObjectFactory({ db }) const createCommitByBranchId = createCommitByBranchIdFactory({ createCommit: createCommitFactory({ db }), diff --git a/packages/server/modules/core/domain/streams/operations.ts b/packages/server/modules/core/domain/streams/operations.ts index d16e9acf9..f721999fe 100644 --- a/packages/server/modules/core/domain/streams/operations.ts +++ b/packages/server/modules/core/domain/streams/operations.ts @@ -184,6 +184,8 @@ export type GetUserStreamsCount = ( export type MarkBranchStreamUpdated = (branchId: string) => Promise +export type MarkCommitStreamUpdated = (commitId: string) => Promise + export type GetBatchUserFavoriteData = (params: { userId: string streamIds: string[] diff --git a/packages/server/modules/core/graph/resolvers/commits.js b/packages/server/modules/core/graph/resolvers/commits.js index 485276c54..7e89e89c3 100644 --- a/packages/server/modules/core/graph/resolvers/commits.js +++ b/packages/server/modules/core/graph/resolvers/commits.js @@ -54,10 +54,10 @@ const { } = require('@/modules/core/repositories/commits') const { db } = require('@/db/knex') const { - markCommitStreamUpdated, getStreamFactory, getStreamsFactory, - getCommitStreamFactory + getCommitStreamFactory, + markCommitStreamUpdatedFactory } = require('@/modules/core/repositories/streams') const { markCommitBranchUpdatedFactory, @@ -83,6 +83,7 @@ const COMMIT_CREATED = CommitPubsubEvents.CommitCreated const COMMIT_UPDATED = CommitPubsubEvents.CommitUpdated const COMMIT_DELETED = CommitPubsubEvents.CommitDeleted +const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) const getCommitStream = getCommitStreamFactory({ db }) const getStream = getStreamFactory({ db }) const getStreams = getStreamsFactory({ db }) diff --git a/packages/server/modules/core/graph/resolvers/versions.ts b/packages/server/modules/core/graph/resolvers/versions.ts index 0c6ed901d..6f593d19c 100644 --- a/packages/server/modules/core/graph/resolvers/versions.ts +++ b/packages/server/modules/core/graph/resolvers/versions.ts @@ -44,7 +44,7 @@ import { getCommitStreamFactory, getStreamFactory, getStreamsFactory, - markCommitStreamUpdated + markCommitStreamUpdatedFactory } from '@/modules/core/repositories/streams' import { VersionsEmitter } from '@/modules/core/events/versionsEmitter' import { @@ -55,6 +55,7 @@ import { import { getObjectFactory } from '@/modules/core/repositories/objects' import { saveActivityFactory } from '@/modules/activitystream/repositories' +const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) const getCommitStream = getCommitStreamFactory({ db }) const getStream = getStreamFactory({ db }) const getStreams = getStreamsFactory({ db }) diff --git a/packages/server/modules/core/repositories/streams.ts b/packages/server/modules/core/repositories/streams.ts index 22e89b057..6a4f632cc 100644 --- a/packages/server/modules/core/repositories/streams.ts +++ b/packages/server/modules/core/repositories/streams.ts @@ -96,7 +96,8 @@ import { UserStreamsQueryCountParams, GetUserStreamsPage, GetUserStreamsCount, - MarkBranchStreamUpdated + MarkBranchStreamUpdated, + MarkCommitStreamUpdated } from '@/modules/core/domain/streams/operations' export type { StreamWithOptionalRole, StreamWithCommitId } @@ -1003,17 +1004,20 @@ export const markBranchStreamUpdatedFactory = return updates > 0 } -export async function markCommitStreamUpdated(commitId: string) { - const q = Streams.knex() - .whereIn(Streams.col.id, (w) => { - w.select(StreamCommits.col.streamId) - .from(StreamCommits.name) - .where(StreamCommits.col.commitId, commitId) - }) - .update(Streams.withoutTablePrefix.col.updatedAt, new Date()) - const updates = await q - return updates > 0 -} +export const markCommitStreamUpdatedFactory = + (deps: { db: Knex }): MarkCommitStreamUpdated => + async (commitId: string) => { + const q = tables + .streams(deps.db) + .whereIn(Streams.col.id, (w) => { + w.select(StreamCommits.col.streamId) + .from(StreamCommits.name) + .where(StreamCommits.col.commitId, commitId) + }) + .update(Streams.withoutTablePrefix.col.updatedAt, new Date()) + const updates = await q + return updates > 0 + } export const upsertProjectRoleFactory = ({ db }: { db: Knex }): UpsertProjectRole => diff --git a/packages/server/modules/core/services/commit/management.ts b/packages/server/modules/core/services/commit/management.ts index 95a226446..2de25d30d 100644 --- a/packages/server/modules/core/services/commit/management.ts +++ b/packages/server/modules/core/services/commit/management.ts @@ -27,7 +27,11 @@ import { UpdateCommitAndNotify } from '@/modules/core/domain/commits/operations' import { GetObject } from '@/modules/core/domain/objects/operations' -import { GetCommitStream, GetStream } from '@/modules/core/domain/streams/operations' +import { + GetCommitStream, + GetStream, + MarkCommitStreamUpdated +} from '@/modules/core/domain/streams/operations' import { CommitCreateError, CommitDeleteError, @@ -46,7 +50,6 @@ import { } from '@/modules/core/graph/generated/graphql' import { CommitRecord } from '@/modules/core/helpers/types' import { getCommitFactory } from '@/modules/core/repositories/commits' -import { markCommitStreamUpdated } from '@/modules/core/repositories/streams' import { ensureError, MaybeNullOrUndefined, Nullable, Roles } from '@speckle/shared' import { has } from 'lodash' @@ -88,7 +91,7 @@ export const createCommitByBranchIdFactory = getBranchById: GetBranchById insertStreamCommits: InsertStreamCommits insertBranchCommits: InsertBranchCommits - markCommitStreamUpdated: typeof markCommitStreamUpdated + markCommitStreamUpdated: MarkCommitStreamUpdated markCommitBranchUpdated: MarkCommitBranchUpdated versionsEventEmitter: VersionsEventEmitter addCommitCreatedActivity: AddCommitCreatedActivity @@ -259,7 +262,7 @@ export const updateCommitAndNotifyFactory = switchCommitBranch: SwitchCommitBranch updateCommit: UpdateCommit addCommitUpdatedActivity: AddCommitUpdatedActivity - markCommitStreamUpdated: typeof markCommitStreamUpdated + markCommitStreamUpdated: MarkCommitStreamUpdated markCommitBranchUpdated: MarkCommitBranchUpdated }): UpdateCommitAndNotify => async (params: CommitUpdateInput | UpdateVersionInput, userId: string) => { @@ -358,7 +361,7 @@ export const updateCommitAndNotifyFactory = export const deleteCommitAndNotifyFactory = (deps: { getCommit: GetCommit - markCommitStreamUpdated: typeof markCommitStreamUpdated + markCommitStreamUpdated: MarkCommitStreamUpdated markCommitBranchUpdated: MarkCommitBranchUpdated deleteCommit: DeleteCommit addCommitDeletedActivity: typeof addCommitDeletedActivity diff --git a/packages/server/modules/core/tests/branches.spec.js b/packages/server/modules/core/tests/branches.spec.js index c24201e3a..42d356c5c 100644 --- a/packages/server/modules/core/tests/branches.spec.js +++ b/packages/server/modules/core/tests/branches.spec.js @@ -29,10 +29,10 @@ const { addBranchDeletedActivity } = require('@/modules/activitystream/services/branchActivity') const { - markCommitStreamUpdated, getStreamFactory, createStreamFactory, - markBranchStreamUpdatedFactory + markBranchStreamUpdatedFactory, + markCommitStreamUpdatedFactory } = require('@/modules/core/repositories/streams') const { ModelsEmitter } = require('@/modules/core/events/modelsEmitter') const { @@ -81,6 +81,7 @@ const { const db = knex const Commits = () => knex('commits') +const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) const markBranchStreamUpdated = markBranchStreamUpdatedFactory({ db }) const getStream = getStreamFactory({ db: knex }) const getBranchById = getBranchByIdFactory({ db: knex }) diff --git a/packages/server/modules/core/tests/commits.spec.js b/packages/server/modules/core/tests/commits.spec.js index 4deb4f457..ca78612d2 100644 --- a/packages/server/modules/core/tests/commits.spec.js +++ b/packages/server/modules/core/tests/commits.spec.js @@ -44,10 +44,10 @@ const { updateCommitAndNotifyFactory } = require('@/modules/core/services/commit/management') const { - markCommitStreamUpdated, getStreamFactory, getCommitStreamFactory, - createStreamFactory + createStreamFactory, + markCommitStreamUpdatedFactory } = require('@/modules/core/repositories/streams') const { addCommitDeletedActivity, @@ -84,6 +84,7 @@ const { const { saveActivityFactory } = require('@/modules/activitystream/repositories') const { publish } = require('@/modules/shared/utils/subscriptions') +const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) const getCommitStream = getCommitStreamFactory({ db }) const getStream = getStreamFactory({ db }) const createBranch = createBranchFactory({ db }) diff --git a/packages/server/modules/core/tests/streams.spec.ts b/packages/server/modules/core/tests/streams.spec.ts index d38c0ecb5..dbdda0a62 100644 --- a/packages/server/modules/core/tests/streams.spec.ts +++ b/packages/server/modules/core/tests/streams.spec.ts @@ -22,7 +22,7 @@ import { grantStreamPermissionsFactory, legacyGetStreamUsersFactory, markBranchStreamUpdatedFactory, - markCommitStreamUpdated, + markCommitStreamUpdatedFactory, revokeStreamPermissionsFactory, updateStreamFactory } from '@/modules/core/repositories/streams' @@ -96,6 +96,7 @@ import { } from '@/modules/core/services/streams/access' import { authorizeResolver } from '@/modules/shared' +const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) const markBranchStreamUpdated = markBranchStreamUpdatedFactory({ db }) const getStream = getStreamFactory({ db }) const getStreamBranchByName = getStreamBranchByNameFactory({ db }) diff --git a/packages/server/modules/core/tests/users.spec.js b/packages/server/modules/core/tests/users.spec.js index 31e584713..1fb07625a 100644 --- a/packages/server/modules/core/tests/users.spec.js +++ b/packages/server/modules/core/tests/users.spec.js @@ -48,10 +48,10 @@ const { createCommitByBranchNameFactory } = require('@/modules/core/services/commit/management') const { - markCommitStreamUpdated, getStreamFactory, createStreamFactory, - grantStreamPermissionsFactory + grantStreamPermissionsFactory, + markCommitStreamUpdatedFactory } = require('@/modules/core/repositories/streams') const { VersionsEmitter } = require('@/modules/core/events/versionsEmitter') const { getObjectFactory } = require('@/modules/core/repositories/objects') @@ -87,6 +87,7 @@ const { addCommitCreatedActivityFactory } = require('@/modules/activitystream/services/commitActivity') +const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) const getStream = getStreamFactory({ db }) const createBranch = createBranchFactory({ db }) const getCommit = getCommitFactory({ db }) diff --git a/packages/server/modules/cross-server-sync/index.ts b/packages/server/modules/cross-server-sync/index.ts index 5a5971248..16b4afa48 100644 --- a/packages/server/modules/cross-server-sync/index.ts +++ b/packages/server/modules/cross-server-sync/index.ts @@ -48,7 +48,7 @@ import { getOnboardingBaseStreamFactory, getStreamCollaboratorsFactory, getStreamFactory, - markCommitStreamUpdated, + markCommitStreamUpdatedFactory, markOnboardingBaseStream } from '@/modules/core/repositories/streams' import { getFirstAdmin, getUser, getUsers } from '@/modules/core/repositories/users' @@ -82,6 +82,7 @@ const crossServerSyncModule: SpeckleModule = { finalize() { crossServerSyncLogger.info('⬇️ Ensuring base onboarding stream asynchronously...') + const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) const getStream = getStreamFactory({ db }) const getObject = getObjectFactory({ db }) const getStreamObjects = getStreamObjectsFactory({ db }) diff --git a/packages/server/modules/stats/tests/stats.spec.ts b/packages/server/modules/stats/tests/stats.spec.ts index eba8b180c..255a8c6da 100644 --- a/packages/server/modules/stats/tests/stats.spec.ts +++ b/packages/server/modules/stats/tests/stats.spec.ts @@ -38,7 +38,7 @@ import { import { createStreamFactory, getStreamFactory, - markCommitStreamUpdated + markCommitStreamUpdatedFactory } from '@/modules/core/repositories/streams' import { VersionsEmitter } from '@/modules/core/events/versionsEmitter' import { getObjectFactory } from '@/modules/core/repositories/objects' @@ -62,6 +62,7 @@ import { saveActivityFactory } from '@/modules/activitystream/repositories' import { publish } from '@/modules/shared/utils/subscriptions' import { addCommitCreatedActivityFactory } from '@/modules/activitystream/services/commitActivity' +const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) const getObject = getObjectFactory({ db }) const createCommitByBranchId = createCommitByBranchIdFactory({ createCommit: createCommitFactory({ db }), diff --git a/packages/server/test/speckle-helpers/commitHelper.ts b/packages/server/test/speckle-helpers/commitHelper.ts index 0ddf50924..5f491363b 100644 --- a/packages/server/test/speckle-helpers/commitHelper.ts +++ b/packages/server/test/speckle-helpers/commitHelper.ts @@ -13,7 +13,7 @@ import { insertStreamCommitsFactory } from '@/modules/core/repositories/commits' import { getObjectFactory } from '@/modules/core/repositories/objects' -import { markCommitStreamUpdated } from '@/modules/core/repositories/streams' +import { markCommitStreamUpdatedFactory } from '@/modules/core/repositories/streams' import { createCommitByBranchIdFactory, createCommitByBranchNameFactory @@ -23,6 +23,7 @@ import { publish } from '@/modules/shared/utils/subscriptions' import { BasicTestUser } from '@/test/authHelper' import { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) const getObject = getObjectFactory({ db }) const createCommitByBranchId = createCommitByBranchIdFactory({ createCommit: createCommitFactory({ db }),