feat(multiregion): apply prepared transactions to projects (#5322)
* feat(multiregion): replace user replication * chore(multiregion): optimise replication * maybe it's this * postgres is fun * once more * chore(multiregion): only replicate test user creation during multiregion tests * feat: improved replicate_query logic * fix: minor * fix: starting issue * feat: included user create and delete specs to multiregion * feat: removed console logs * fix: user defaults * fix: multiregion test helper * fix: update scenarios for users * refactor(multiregion): swap replicateQuery concept to asMultiregionOperation (#5301) feat(multiregion): introduced asMultregionOperator, refactor test to user builder classes * chore: renamings * fix: remove comments * feat: remove user replication * refactor: simplified spec usages * chore: comments * chore: branches and favs * chore: more tests * chore: more tests * fix linting * fix tests * feat: dropping replication * refactor: moved project delete to service * fix: comment * feat: updateStreamFactory and updateProjectFacotry * deleteProjectFactory + replicateFactory * deleteWorkspaceFactory * fix: selector * fix: tests * fix tests, finished createStreamFactory * feat: simplify changes * fix: remove comment * fix: minor strucutres * fix: moveProjectToRegion * fix: moved branch creation outside of multiregion scope * fix: branch creation * fix: tests * fix: ci tests * fix: removed log form test * fix: on specs, no random regionKeys * review fixes * fix: mr comments * feat: removed test --------- Co-authored-by: Charles Driesler <chuck@speckle.systems>
This commit is contained in:
committed by
GitHub
parent
6692fdf4aa
commit
399c998fd7
+49
-19
@@ -14,17 +14,21 @@ import {
|
||||
import { expect } from 'chai'
|
||||
import dayjs from 'dayjs'
|
||||
import { deleteWorkspacesNonCompleteFactory } from '@/modules/workspaces/services/workspaceCreationState'
|
||||
import type { Logger } from '@/observability/logging'
|
||||
import { logger } from '@/observability/logging'
|
||||
import {
|
||||
deleteStreamFactory,
|
||||
getExplicitProjects
|
||||
} from '@/modules/core/repositories/streams'
|
||||
import { getExplicitProjects } from '@/modules/core/repositories/streams'
|
||||
import { deleteSsoProviderFactory } from '@/modules/workspaces/repositories/sso'
|
||||
import { getEventBus } from '@/modules/shared/services/eventBus'
|
||||
import { deleteAllResourceInvitesFactory } from '@/modules/serverinvites/repositories/serverInvites'
|
||||
import { deleteWorkspaceFactory as repoDeleteWorkspaceFactory } from '@/modules/workspaces/repositories/workspaces'
|
||||
import { deleteWorkspaceFactory } from '@/modules/workspaces/services/management'
|
||||
import { queryAllProjectsFactory } from '@/modules/core/services/projects'
|
||||
import {
|
||||
deleteProjectAndCommitsFactory,
|
||||
queryAllProjectsFactory
|
||||
} from '@/modules/core/services/projects'
|
||||
import { deleteProjectFactory } from '@/modules/core/repositories/projects'
|
||||
import { deleteProjectCommitsFactory } from '@/modules/core/repositories/commits'
|
||||
import { asMultiregionalOperation, replicateFactory } from '@/modules/shared/command'
|
||||
import { getAllRegisteredDbs } from '@/modules/multiregion/utils/dbSelector'
|
||||
|
||||
const updateAWorkspaceCreatedAt = async (
|
||||
workspaceId: string,
|
||||
@@ -39,19 +43,45 @@ const updateAWorkspaceCreatedAt = async (
|
||||
describe('WorkspaceCreationState services', () => {
|
||||
const getWorkspacesNonComplete = getWorkspacesNonCompleteFactory({ db })
|
||||
const getWorkspace = getWorkspaceFactory({ db })
|
||||
const deleteWorkspacesNonComplete = deleteWorkspacesNonCompleteFactory({
|
||||
getWorkspacesNonComplete,
|
||||
deleteWorkspace: deleteWorkspaceFactory({
|
||||
deleteWorkspace: repoDeleteWorkspaceFactory({ db }),
|
||||
deleteProject: deleteStreamFactory({ db }),
|
||||
deleteAllResourceInvites: deleteAllResourceInvitesFactory({ db }),
|
||||
queryAllProjects: queryAllProjectsFactory({
|
||||
getExplicitProjects: getExplicitProjects({ db })
|
||||
}),
|
||||
deleteSsoProvider: deleteSsoProviderFactory({ db }),
|
||||
emitWorkspaceEvent: getEventBus().emit
|
||||
})
|
||||
})
|
||||
const deleteWorkspacesNonComplete = async ({ logger }: { logger: Logger }) =>
|
||||
asMultiregionalOperation(
|
||||
({ allDbs, mainDb, emit }) => {
|
||||
const deleteWorkspacesNonComplete = deleteWorkspacesNonCompleteFactory({
|
||||
getWorkspacesNonComplete: getWorkspacesNonCompleteFactory({ db: mainDb }),
|
||||
deleteWorkspace: deleteWorkspaceFactory({
|
||||
deleteWorkspace: async (...input) => {
|
||||
const [res] = await Promise.all(
|
||||
allDbs.map((db) => repoDeleteWorkspaceFactory({ db })(...input))
|
||||
)
|
||||
|
||||
return res
|
||||
},
|
||||
deleteProjectAndCommits: deleteProjectAndCommitsFactory({
|
||||
deleteProject: replicateFactory(allDbs, deleteProjectFactory),
|
||||
deleteProjectCommits: replicateFactory(
|
||||
allDbs,
|
||||
deleteProjectCommitsFactory
|
||||
)
|
||||
}),
|
||||
deleteAllResourceInvites: deleteAllResourceInvitesFactory({
|
||||
db: mainDb
|
||||
}),
|
||||
queryAllProjects: queryAllProjectsFactory({
|
||||
getExplicitProjects: getExplicitProjects({ db: mainDb })
|
||||
}),
|
||||
deleteSsoProvider: deleteSsoProviderFactory({ db: mainDb }),
|
||||
emitWorkspaceEvent: emit
|
||||
})
|
||||
})
|
||||
|
||||
return deleteWorkspacesNonComplete({ logger })
|
||||
},
|
||||
{
|
||||
logger,
|
||||
name: 'deleteWorkspacesNonComplete',
|
||||
dbs: await getAllRegisteredDbs()
|
||||
}
|
||||
)
|
||||
|
||||
let adminUser: BasicTestUser
|
||||
let completeWorkspace: BasicTestWorkspace
|
||||
|
||||
Reference in New Issue
Block a user