1
0
Fork 0
mirror of https://github.com/mealie-recipes/mealie.git synced 2025-08-02 20:15:24 +02:00

Feature/database backups (#1040)

* add annotations to docs

* alchemy data dumper

* initial tests

* sourcery refactor

* db backups/restore

* potential postgres fix

* potential postgres fix

* this is terrible

* potential pg fix

* cleanup

* remove unused import

* fix comparison

* generate frontend types

* update timestamp and add directory filter

* rewrite to new admin-api

* update backup routers

* add file_token response helper

* update imports

* remove test_backup
This commit is contained in:
Hayden 2022-03-13 15:42:22 -08:00 committed by GitHub
parent 2d1ef7173d
commit 8eefa05393
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
32 changed files with 756 additions and 229 deletions

View file

@ -2,26 +2,23 @@ import { AdminAboutAPI } from "./admin/admin-about";
import { AdminTaskAPI } from "./admin/admin-tasks";
import { AdminUsersApi } from "./admin/admin-users";
import { AdminGroupsApi } from "./admin/admin-groups";
import { AdminBackupsApi } from "./admin/admin-backups";
import { ApiRequestInstance } from "~/types/api";
export class AdminAPI {
private static instance: AdminAPI;
public about: AdminAboutAPI;
public serverTasks: AdminTaskAPI;
public users: AdminUsersApi;
public groups: AdminGroupsApi;
public backups: AdminBackupsApi;
constructor(requests: ApiRequestInstance) {
if (AdminAPI.instance instanceof AdminAPI) {
return AdminAPI.instance;
}
this.about = new AdminAboutAPI(requests);
this.serverTasks = new AdminTaskAPI(requests);
this.users = new AdminUsersApi(requests);
this.groups = new AdminGroupsApi(requests);
this.backups = new AdminBackupsApi(requests);
Object.freeze(this);
AdminAPI.instance = this;
}
}

View file

@ -0,0 +1,33 @@
import { BaseAPI } from "../_base";
import { AllBackups } from "~/types/api-types/admin";
import { ErrorResponse, FileTokenResponse, SuccessResponse } from "~/types/api-types/response";
const prefix = "/api";
const routes = {
base: `${prefix}/admin/backups`,
item: (name: string) => `${prefix}/admin/backups/${name}`,
restore: (name: string) => `${prefix}/admin/backups/${name}/restore`,
};
export class AdminBackupsApi extends BaseAPI {
async getAll() {
return await this.requests.get<AllBackups>(routes.base);
}
async create() {
return await this.requests.post<SuccessResponse | ErrorResponse>(routes.base, {});
}
async get(fileName: string) {
return await this.requests.get<FileTokenResponse>(routes.item(fileName));
}
async delete(fileName: string) {
return await this.requests.delete<SuccessResponse | ErrorResponse>(routes.item(fileName));
}
async restore(fileName: string) {
return await this.requests.post<SuccessResponse | ErrorResponse>(routes.restore(fileName), {});
}
}

View file

@ -3,7 +3,7 @@ import { BaseAPI } from "../_base";
const prefix = "/api";
interface DownloadData {
fileToken: string,
fileToken: string;
}
export class UtilsAPI extends BaseAPI {