From f976a929a937e0766871c51d65161111a3d79f6d Mon Sep 17 00:00:00 2001 From: Kristaps Fabians Geikins Date: Mon, 14 Oct 2024 15:55:37 +0300 Subject: [PATCH] chore(server): core IoC #47 - markBranchStreamUpdatedFactory --- .../modules/core/domain/streams/operations.ts | 2 ++ .../modules/core/graph/resolvers/branches.js | 5 ++-- .../modules/core/graph/resolvers/models.ts | 3 +- .../modules/core/repositories/streams.ts | 28 +++++++++++-------- .../core/services/branch/management.ts | 9 +++--- .../modules/core/tests/branches.spec.js | 6 ++-- .../server/modules/core/tests/streams.spec.ts | 3 +- 7 files changed, 34 insertions(+), 22 deletions(-) diff --git a/packages/server/modules/core/domain/streams/operations.ts b/packages/server/modules/core/domain/streams/operations.ts index f08ba3e8a..d16e9acf9 100644 --- a/packages/server/modules/core/domain/streams/operations.ts +++ b/packages/server/modules/core/domain/streams/operations.ts @@ -182,6 +182,8 @@ export type GetUserStreamsCount = ( params: UserStreamsQueryCountParams ) => Promise +export type MarkBranchStreamUpdated = (branchId: string) => Promise + export type GetBatchUserFavoriteData = (params: { userId: string streamIds: string[] diff --git a/packages/server/modules/core/graph/resolvers/branches.js b/packages/server/modules/core/graph/resolvers/branches.js index caccf8bfa..0c26f422d 100644 --- a/packages/server/modules/core/graph/resolvers/branches.js +++ b/packages/server/modules/core/graph/resolvers/branches.js @@ -33,8 +33,8 @@ const { addBranchDeletedActivity } = require('@/modules/activitystream/services/branchActivity') const { - markBranchStreamUpdated, - getStreamFactory + getStreamFactory, + markBranchStreamUpdatedFactory } = require('@/modules/core/repositories/streams') const { ModelsEmitter } = require('@/modules/core/events/modelsEmitter') @@ -43,6 +43,7 @@ const BRANCH_CREATED = BranchPubsubEvents.BranchCreated const BRANCH_UPDATED = BranchPubsubEvents.BranchUpdated const BRANCH_DELETED = BranchPubsubEvents.BranchDeleted +const markBranchStreamUpdated = markBranchStreamUpdatedFactory({ db }) const getStream = getStreamFactory({ db }) const getBranchById = getBranchByIdFactory({ db }) const getStreamBranchByName = getStreamBranchByNameFactory({ db }) diff --git a/packages/server/modules/core/graph/resolvers/models.ts b/packages/server/modules/core/graph/resolvers/models.ts index f17e9c903..fe7bea5ee 100644 --- a/packages/server/modules/core/graph/resolvers/models.ts +++ b/packages/server/modules/core/graph/resolvers/models.ts @@ -54,10 +54,11 @@ import { } from '@/modules/activitystream/services/branchActivity' import { getStreamFactory, - markBranchStreamUpdated + markBranchStreamUpdatedFactory } from '@/modules/core/repositories/streams' import { ModelsEmitter } from '@/modules/core/events/modelsEmitter' +const markBranchStreamUpdated = markBranchStreamUpdatedFactory({ db }) const getStream = getStreamFactory({ db }) const getStreamObjects = getStreamObjectsFactory({ db }) const getViewerResourceGroups = getViewerResourceGroupsFactory({ diff --git a/packages/server/modules/core/repositories/streams.ts b/packages/server/modules/core/repositories/streams.ts index f0bfbe75c..22e89b057 100644 --- a/packages/server/modules/core/repositories/streams.ts +++ b/packages/server/modules/core/repositories/streams.ts @@ -95,7 +95,8 @@ import { UserStreamsQueryParams, UserStreamsQueryCountParams, GetUserStreamsPage, - GetUserStreamsCount + GetUserStreamsCount, + MarkBranchStreamUpdated } from '@/modules/core/domain/streams/operations' export type { StreamWithOptionalRole, StreamWithCommitId } @@ -987,17 +988,20 @@ export const updateProjectFactory = return updatedStream } -export async function markBranchStreamUpdated(branchId: string) { - const q = Streams.knex() - .whereIn(Streams.col.id, (w) => { - w.select(Branches.col.streamId) - .from(Branches.name) - .where(Branches.col.id, branchId) - }) - .update(Streams.withoutTablePrefix.col.updatedAt, new Date()) - const updates = await q - return updates > 0 -} +export const markBranchStreamUpdatedFactory = + (deps: { db: Knex }): MarkBranchStreamUpdated => + async (branchId: string) => { + const q = tables + .streams(deps.db) + .whereIn(Streams.col.id, (w) => { + w.select(Branches.col.streamId) + .from(Branches.name) + .where(Branches.col.id, branchId) + }) + .update(Streams.withoutTablePrefix.col.updatedAt, new Date()) + const updates = await q + return updates > 0 + } export async function markCommitStreamUpdated(commitId: string) { const q = Streams.knex() diff --git a/packages/server/modules/core/services/branch/management.ts b/packages/server/modules/core/services/branch/management.ts index 033e7bcae..968d4aef4 100644 --- a/packages/server/modules/core/services/branch/management.ts +++ b/packages/server/modules/core/services/branch/management.ts @@ -18,8 +18,6 @@ import { UpdateModelInput } from '@/modules/core/graph/generated/graphql' import { BranchRecord } from '@/modules/core/helpers/types' - -import { markBranchStreamUpdated } from '@/modules/core/repositories/streams' import { has } from 'lodash' import { isBranchDeleteInput, isBranchUpdateInput } from '@/modules/core/helpers/branch' import { ModelsEmitter, ModelsEventsEmitter } from '@/modules/core/events/modelsEmitter' @@ -33,7 +31,10 @@ import { UpdateBranch, UpdateBranchAndNotify } from '@/modules/core/domain/branches/operations' -import { GetStream } from '@/modules/core/domain/streams/operations' +import { + GetStream, + MarkBranchStreamUpdated +} from '@/modules/core/domain/streams/operations' const isBranchCreateInput = ( i: BranchCreateInput | CreateModelInput @@ -113,7 +114,7 @@ export const deleteBranchAndNotifyFactory = getStream: GetStream getBranchById: GetBranchById modelsEventsEmitter: ModelsEventsEmitter - markBranchStreamUpdated: typeof markBranchStreamUpdated + markBranchStreamUpdated: MarkBranchStreamUpdated addBranchDeletedActivity: typeof addBranchDeletedActivity deleteBranchById: DeleteBranchById }): DeleteBranchAndNotify => diff --git a/packages/server/modules/core/tests/branches.spec.js b/packages/server/modules/core/tests/branches.spec.js index 43d38537c..c24201e3a 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 { - markBranchStreamUpdated, markCommitStreamUpdated, getStreamFactory, - createStreamFactory + createStreamFactory, + markBranchStreamUpdatedFactory } = require('@/modules/core/repositories/streams') const { ModelsEmitter } = require('@/modules/core/events/modelsEmitter') const { @@ -80,6 +80,8 @@ const { const db = knex const Commits = () => knex('commits') + +const markBranchStreamUpdated = markBranchStreamUpdatedFactory({ db }) const getStream = getStreamFactory({ db: knex }) const getBranchById = getBranchByIdFactory({ db: knex }) const getStreamBranchByName = getStreamBranchByNameFactory({ db: knex }) diff --git a/packages/server/modules/core/tests/streams.spec.ts b/packages/server/modules/core/tests/streams.spec.ts index 96ce4a41e..d38c0ecb5 100644 --- a/packages/server/modules/core/tests/streams.spec.ts +++ b/packages/server/modules/core/tests/streams.spec.ts @@ -21,7 +21,7 @@ import { getStreamFactory, grantStreamPermissionsFactory, legacyGetStreamUsersFactory, - markBranchStreamUpdated, + markBranchStreamUpdatedFactory, markCommitStreamUpdated, revokeStreamPermissionsFactory, updateStreamFactory @@ -96,6 +96,7 @@ import { } from '@/modules/core/services/streams/access' import { authorizeResolver } from '@/modules/shared' +const markBranchStreamUpdated = markBranchStreamUpdatedFactory({ db }) const getStream = getStreamFactory({ db }) const getStreamBranchByName = getStreamBranchByNameFactory({ db }) const createBranch = createBranchFactory({ db })