Add project command API
This commit is contained in:
@@ -15,6 +15,23 @@ export interface ProjectHistoryStateDto {
|
||||
redoChangeSetId: string | null;
|
||||
}
|
||||
|
||||
export interface ProjectCommandDto {
|
||||
schemaVersion: number;
|
||||
type: string;
|
||||
payload: unknown;
|
||||
}
|
||||
|
||||
export interface ProjectCommandResultDto {
|
||||
revision: {
|
||||
revisionId: string;
|
||||
changeSetId: string;
|
||||
projectId: string;
|
||||
revisionNumber: number;
|
||||
createdAtIso: string;
|
||||
};
|
||||
history: ProjectHistoryStateDto;
|
||||
}
|
||||
|
||||
export interface DistributionBoardDto {
|
||||
id: string;
|
||||
projectId: string;
|
||||
|
||||
@@ -7,6 +7,8 @@ import type {
|
||||
DistributionBoardDto,
|
||||
FloorDto,
|
||||
GlobalDeviceDto,
|
||||
ProjectCommandDto,
|
||||
ProjectCommandResultDto,
|
||||
ProjectDeviceDto,
|
||||
ProjectHistoryStateDto,
|
||||
ProjectDeviceDisconnectResultDto,
|
||||
@@ -61,6 +63,61 @@ export function getProjectHistory(projectId: string) {
|
||||
);
|
||||
}
|
||||
|
||||
export function executeProjectCommand(
|
||||
projectId: string,
|
||||
expectedRevision: number,
|
||||
command: ProjectCommandDto,
|
||||
description?: string
|
||||
) {
|
||||
return request<ProjectCommandResultDto>(
|
||||
`/api/projects/${projectId}/commands`,
|
||||
{
|
||||
method: "POST",
|
||||
body: JSON.stringify({
|
||||
expectedRevision,
|
||||
command,
|
||||
...(description ? { description } : {}),
|
||||
}),
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
export function undoProjectCommand(
|
||||
projectId: string,
|
||||
expectedRevision: number
|
||||
) {
|
||||
return executeProjectHistoryCommand(
|
||||
projectId,
|
||||
expectedRevision,
|
||||
"undo"
|
||||
);
|
||||
}
|
||||
|
||||
export function redoProjectCommand(
|
||||
projectId: string,
|
||||
expectedRevision: number
|
||||
) {
|
||||
return executeProjectHistoryCommand(
|
||||
projectId,
|
||||
expectedRevision,
|
||||
"redo"
|
||||
);
|
||||
}
|
||||
|
||||
function executeProjectHistoryCommand(
|
||||
projectId: string,
|
||||
expectedRevision: number,
|
||||
direction: "undo" | "redo"
|
||||
) {
|
||||
return request<ProjectCommandResultDto>(
|
||||
`/api/projects/${projectId}/history/${direction}`,
|
||||
{
|
||||
method: "POST",
|
||||
body: JSON.stringify({ expectedRevision }),
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
export function createProject(name: string) {
|
||||
return request<ProjectDto>("/api/projects", {
|
||||
method: "POST",
|
||||
|
||||
Reference in New Issue
Block a user