@budibase/server
Version:
Budibase Web Server
65 lines (59 loc) • 1.67 kB
text/typescript
import {
CreateAppBackupResponse,
ImportAppBackupResponse,
} from "@budibase/types"
import { Expectations, TestAPI } from "./base"
export class BackupAPI extends TestAPI {
exportBasicBackup = async (appId: string, expectations?: Expectations) => {
const exp = {
...expectations,
headers: {
...expectations?.headers,
"Content-Type": "application/gzip",
},
}
return await this._post<Buffer>(`/api/backups/export`, {
query: { appId },
expectations: exp,
})
}
createBackup = async (appId: string, expectations?: Expectations) => {
return await this._post<CreateAppBackupResponse>(
`/api/apps/${appId}/backups`,
{ expectations }
)
}
waitForBackupToComplete = async (appId: string, backupId: string) => {
for (let i = 0; i < 10; i++) {
await new Promise(resolve => setTimeout(resolve, 1000))
const response = await this._requestRaw(
"get",
`/api/apps/${appId}/backups/${backupId}/file`
)
if (response.status === 200) {
return
}
}
throw new Error("Backup did not complete")
}
importBackup = async (
appId: string,
backupId: string,
expectations?: Expectations
): Promise<ImportAppBackupResponse> => {
return await this._post<ImportAppBackupResponse>(
`/api/apps/${appId}/backups/${backupId}/import`,
{ expectations }
)
}
clearBackupErrors = async (
appId: string,
backupId?: string,
expectations?: Expectations
) => {
return await this._delete<{ message: string }>(`/api/backups/logs`, {
body: { appId, backupId },
expectations,
})
}
}