UBERF-5321: Fix workspace CLI upgrade (#4534)

Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
This commit is contained in:
Andrey Sobolev 2024-02-06 11:06:18 +07:00 committed by GitHub
parent 99564ddcb7
commit 68d7a5b5b7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 9 deletions

View File

@ -17,7 +17,6 @@
import {
ACCOUNT_DB,
assignWorkspace,
ClientWorkspaceInfo,
confirmEmail,
createAcc,
createWorkspace,
@ -30,7 +29,8 @@ import {
replacePassword,
setAccountAdmin,
setRole,
upgradeWorkspace
upgradeWorkspace,
WorkspaceInfo
} from '@hcengineering/account'
import { setMetadata } from '@hcengineering/platform'
import {
@ -276,14 +276,23 @@ export function devTool (
const workspaces = await listWorkspaces(db, productId)
const withError: string[] = []
async function _upgradeWorkspace (ws: ClientWorkspaceInfo): Promise<void> {
async function _upgradeWorkspace (ws: WorkspaceInfo): Promise<void> {
const t = Date.now()
const logger = cmd.console
? consoleModelLogger
: new FileModelLogger(path.join(cmd.logs, `${ws.workspace}.log`))
console.log('---UPGRADING----', ws.workspace, !cmd.console ? (logger as FileModelLogger).file : '')
try {
await upgradeWorkspace(version, txes, migrateOperations, productId, db, ws.workspace, logger, cmd.force)
await upgradeWorkspace(
version,
txes,
migrateOperations,
productId,
db,
ws.workspaceUrl ?? ws.workspace,
logger,
cmd.force
)
console.log('---UPGRADING-DONE----', ws.workspace, Date.now() - t)
} catch (err: any) {
withError.push(ws.workspace)

View File

@ -576,7 +576,7 @@ export async function createAccount (
/**
* @public
*/
export async function listWorkspaces (db: Db, productId: string): Promise<ClientWorkspaceInfo[]> {
export async function listWorkspaces (db: Db, productId: string): Promise<WorkspaceInfo[]> {
return (await db.collection<Workspace>(WORKSPACE_COLLECTION).find(withProductId(productId, {})).toArray())
.map((it) => ({ ...it, productId }))
.filter((it) => it.disabled !== true)
@ -750,7 +750,7 @@ export async function upgradeWorkspace (
}
const versionStr = versionToString(version)
const currentVersion = await db.collection<Workspace>(WORKSPACE_COLLECTION).findOne({ workspace: workspaceUrl })
const currentVersion = await db.collection<Workspace>(WORKSPACE_COLLECTION).findOne({ workspace: ws.workspace })
console.log(
`${forceUpdate ? 'force-' : ''}upgrade from "${
currentVersion?.version !== undefined ? versionToString(currentVersion.version) : ''
@ -761,13 +761,13 @@ export async function upgradeWorkspace (
return versionStr
}
await db.collection(WORKSPACE_COLLECTION).updateOne(
{ workspace: workspaceUrl },
{ workspace: ws.workspace },
{
$set: { version }
}
)
await (
await upgradeModel(getTransactor(), getWorkspaceId(workspaceUrl, productId), txes, migrationOperation, logger)
await upgradeModel(getTransactor(), getWorkspaceId(ws.workspace, productId), txes, migrationOperation, logger)
).close()
return versionStr
}
@ -881,7 +881,7 @@ export type ClientWorkspaceInfo = Omit<Workspace, '_id' | 'accounts' | 'workspac
/**
* @public
*/
export type WorkspaceInfo = Omit<Workspace, '_id' | 'accounts' | 'workspaceUrl'>
export type WorkspaceInfo = Omit<Workspace, '_id' | 'accounts'>
function mapToClientWorkspace (ws: Workspace): ClientWorkspaceInfo {
const { _id, accounts, ...data } = ws