mirror of
https://github.com/colanode/colanode.git
synced 2025-12-16 11:47:47 +01:00
45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
import { WorkspaceMutationHandlerBase } from '@colanode/client/handlers/mutations/workspace-mutation-handler-base';
|
|
import { MutationHandler } from '@colanode/client/lib/types';
|
|
import { MutationError, MutationErrorCode } from '@colanode/client/mutations';
|
|
import {
|
|
ViewUpdateMutationInput,
|
|
ViewUpdateMutationOutput,
|
|
} from '@colanode/client/mutations/databases/view-update';
|
|
import { DatabaseViewAttributes } from '@colanode/core';
|
|
|
|
export class ViewUpdateMutationHandler
|
|
extends WorkspaceMutationHandlerBase
|
|
implements MutationHandler<ViewUpdateMutationInput>
|
|
{
|
|
async handleMutation(
|
|
input: ViewUpdateMutationInput
|
|
): Promise<ViewUpdateMutationOutput> {
|
|
const workspace = this.getWorkspace(input.userId);
|
|
|
|
const result = await workspace.nodes.updateNode<DatabaseViewAttributes>(
|
|
input.viewId,
|
|
() => {
|
|
return input.view;
|
|
}
|
|
);
|
|
|
|
if (result === 'unauthorized') {
|
|
throw new MutationError(
|
|
MutationErrorCode.ViewUpdateForbidden,
|
|
"You don't have permission to update this view."
|
|
);
|
|
}
|
|
|
|
if (result !== 'success') {
|
|
throw new MutationError(
|
|
MutationErrorCode.ViewUpdateFailed,
|
|
'Something went wrong while updating the view.'
|
|
);
|
|
}
|
|
|
|
return {
|
|
id: input.viewId,
|
|
};
|
|
}
|
|
}
|