Merge pull request #3253 from specklesystems/fabians/core-ioc-41

chore(server): core IoC #41 - legacyGetStreamUsersFactory
This commit is contained in:
Alessandro Magionami
2024-10-14 11:20:27 +02:00
committed by GitHub
5 changed files with 43 additions and 22 deletions
@@ -65,6 +65,16 @@ export type GetStreamCollaborators = (
type?: StreamRoles
) => Promise<Array<LimitedUserWithStreamRole>>
export type LegacyGetStreamCollaborators = (params: { streamId: string }) => Promise<
{
role: string
id: string
name: string
company: string
avatar: string
}[]
>
export type StoreStream = (
input: StreamCreateInput | ProjectCreateInput,
options?: Partial<{
@@ -1,5 +1,4 @@
import {
getStreamUsers,
getActiveUserStreamFavoriteDate,
getStreamFavoritesCount,
getOwnedFavoritesCount
@@ -36,7 +35,8 @@ import {
getFavoritedStreamsPageFactory,
getStreamCollaboratorsFactory,
canUserFavoriteStreamFactory,
setStreamFavoritedFactory
setStreamFavoritedFactory,
legacyGetStreamUsersFactory
} from '@/modules/core/repositories/streams'
import {
createStreamReturnRecordFactory,
@@ -182,6 +182,7 @@ const favoriteStream = favoriteStreamFactory({
setStreamFavorited: setStreamFavoritedFactory({ db }),
getStream
})
const getStreamUsers = legacyGetStreamUsersFactory({ db })
const getUserStreamsCore = async (
forOtherUser: boolean,
@@ -88,7 +88,8 @@ import {
GetFavoritedStreamsPage,
GetFavoritedStreamsCount,
SetStreamFavorited,
CanUserFavoriteStream
CanUserFavoriteStream,
LegacyGetStreamCollaborators
} from '@/modules/core/domain/streams/operations'
export type { StreamWithOptionalRole, StreamWithCommitId }
@@ -680,7 +681,32 @@ export const getStreamCollaboratorsFactory =
return items
}
// TODO: Inject db
/**
* @deprecated Use getStreamCollaborators instead
*/
export const legacyGetStreamUsersFactory =
(deps: { db: Knex }): LegacyGetStreamCollaborators =>
async ({ streamId }) => {
const query = tables
.streamAcl(deps.db)
.columns({ role: 'stream_acl.role' }, 'id', 'name', 'company', 'avatar')
.select()
.where({ resourceId: streamId })
.rightJoin('users', { 'users.id': 'stream_acl.userId' })
.select<
{
role: string
id: string
name: string
company: string
avatar: string
}[]
>('stream_acl.role', 'name', 'id', 'company', 'avatar')
.orderBy('stream_acl.role')
return await query
}
export const getProjectCollaboratorsFactory =
(deps: { db: Knex }): GetProjectCollaborators =>
async ({ projectId }) => {
@@ -1,4 +1,3 @@
const { StreamAcl } = require('@/modules/core/dbSchema')
const { InvalidArgumentError } = require('@/modules/shared/errors')
/**
@@ -9,21 +8,6 @@ const { InvalidArgumentError } = require('@/modules/shared/errors')
*/
module.exports = {
/**
* @returns {Promise<{role: string, id: string, name: string, company: string, avatar: string}[]>}
*/
async getStreamUsers({ streamId }) {
const query = StreamAcl.knex()
.columns({ role: 'stream_acl.role' }, 'id', 'name', 'company', 'avatar')
.select()
.where({ resourceId: streamId })
.rightJoin('users', { 'users.id': 'stream_acl.userId' })
.select('stream_acl.role', 'name', 'id', 'company', 'avatar')
.orderBy('stream_acl.role')
return await query
},
/**
* Get active user stream favorite date (using dataloader)
* @param {Object} p
@@ -1,6 +1,4 @@
import { expect } from 'chai'
import { getStreamUsers } from '@/modules/core/services/streams'
import { createObject } from '@/modules/core/services/objects'
import { beforeEachContext, truncateTables } from '@/test/hooks'
@@ -22,6 +20,7 @@ import {
deleteStreamFactory,
getStreamFactory,
grantStreamPermissionsFactory,
legacyGetStreamUsersFactory,
markBranchStreamUpdated,
markCommitStreamUpdated,
revokeStreamPermissionsFactory,
@@ -188,6 +187,7 @@ const isStreamCollaborator = isStreamCollaboratorFactory({
getStream
})
const grantPermissionsStream = grantStreamPermissionsFactory({ db })
const getStreamUsers = legacyGetStreamUsersFactory({ db })
describe('Streams @core-streams', () => {
const userOne: BasicTestUser = {