refactor(frontend): ♻️ update API folder structure

This commit is contained in:
Hayden 2021-10-23 16:42:20 -08:00
parent 9b79b82c4d
commit a94b9d504f
25 changed files with 83 additions and 36 deletions

21
frontend/api/admin-api.ts Normal file
View File

@ -0,0 +1,21 @@
import { AdminAboutAPI } from "./admin/admin-about";
import { AdminTaskAPI } from "./admin/admin-tasks";
import { ApiRequestInstance } from "~/types/api";
export class AdminAPI {
private static instance: AdminAPI;
public about: AdminAboutAPI;
public serverTasks: AdminTaskAPI;
constructor(requests: ApiRequestInstance) {
if (AdminAPI.instance instanceof AdminAPI) {
return AdminAPI.instance;
}
this.about = new AdminAboutAPI(requests);
this.serverTasks = new AdminTaskAPI(requests);
Object.freeze(this);
AdminAPI.instance = this;
}
}

View File

@ -1,4 +1,4 @@
import { BaseAPI } from "./_base";
import { BaseAPI } from "../_base";
const prefix = "/api";

View File

@ -0,0 +1,18 @@
import { BaseAPI } from "../_base";
import { ServerTask } from "~/api/types/server-task";
const prefix = "/api";
const routes = {
base: `${prefix}/admin/server-tasks`,
};
export class AdminTaskAPI extends BaseAPI {
async testTask() {
return await this.requests.post<ServerTask>(`${routes.base}`, {});
}
async getAll() {
return await this.requests.get<ServerTask[]>(routes.base);
}
}

View File

@ -1,4 +1,4 @@
import { BaseAPI } from "./_base";
import { BaseAPI } from "../_base";
export interface BackupOptions {
recipes?: boolean;

View File

@ -1,4 +1,4 @@
import { BaseCRUDAPI } from "./_base";
import { BaseCRUDAPI } from "../_base";
import { Recipe } from "~/types/api-types/recipe";
const prefix = "/api";

View File

@ -1,4 +1,4 @@
import { BaseAPI } from "./_base";
import { BaseAPI } from "../_base";
const routes = {
base: "/api/admin/email",

View File

@ -1,4 +1,4 @@
import { BaseCRUDAPI } from "./_base";
import { BaseCRUDAPI } from "../_base";
export type EventCategory = "general" | "recipe" | "backup" | "scheduled" | "migration" | "group" | "user";
export type DeclaredTypes = "General" | "Discord" | "Gotify" | "Pushover" | "Home Assistant";

View File

@ -1,4 +1,4 @@
import { BaseAPI } from "./_base";
import { BaseAPI } from "../_base";
export type EventCategory = "general" | "recipe" | "backup" | "scheduled" | "migration" | "group" | "user";

View File

@ -1,4 +1,4 @@
import { BaseCRUDAPI } from "./_base";
import { BaseCRUDAPI } from "../_base";
import { Category } from "./categories";
import { CategoryBase } from "~/types/api-types/recipe";

View File

@ -1,4 +1,4 @@
import { BaseCRUDAPI } from "./_base";
import { BaseCRUDAPI } from "../_base";
const prefix = "/api";

View File

@ -0,0 +1,13 @@
import { BaseAPI } from "../_base";
import { ServerTask } from "~/api/types/server-task";
const prefix = "/api";
const routes = {
base: `${prefix}/groups/server-tasks`,
};
export class GroupServerTaskAPI extends BaseAPI {
async getAll() {
return await this.requests.get<ServerTask[]>(routes.base);
}
}

View File

@ -1,4 +1,4 @@
import { BaseCRUDAPI } from "./_base";
import { BaseCRUDAPI } from "../_base";
const prefix = "/api";

View File

@ -1,4 +1,4 @@
import { BaseCRUDAPI } from "./_base";
import { BaseCRUDAPI } from "../_base";
import { GroupInDB, UserOut } from "~/types/api-types/user";
const prefix = "/api";

View File

@ -1,4 +1,4 @@
import { BaseAPI } from "./_base";
import { BaseAPI } from "../_base";
interface BasePayload {
recipes: string[];

View File

@ -1,4 +1,4 @@
import { BaseCRUDAPI } from "./_base";
import { BaseCRUDAPI } from "../_base";
const prefix = "/api";

View File

@ -1,4 +1,4 @@
import { BaseCRUDAPI } from "./_base";
import { BaseCRUDAPI } from "../_base";
const prefix = "/api";

View File

@ -1,4 +1,4 @@
import { BaseCRUDAPI } from "./_base";
import { BaseCRUDAPI } from "../_base";
import { Recipe, CreateRecipe } from "~/types/api-types/recipe";
const prefix = "/api";

View File

@ -1,4 +1,4 @@
import { BaseCRUDAPI } from "./_base";
import { BaseCRUDAPI } from "../_base";
import { Recipe } from "~/types/api-types/admin";
const prefix = "/api";

View File

@ -1,4 +1,4 @@
import { BaseAPI } from "./_base";
import { BaseAPI } from "../_base";
export class UploadFile extends BaseAPI {
file(url: string, fileObject: any) {

View File

@ -1,4 +1,4 @@
import { BaseAPI } from "./_base";
import { BaseAPI } from "../_base";
export interface RegisterPayload {
group: string;

View File

@ -1,4 +1,4 @@
import { BaseCRUDAPI } from "./_base";
import { BaseCRUDAPI } from "../_base";
import { UserIn, UserOut } from "~/types/api-types/user";
// Interfaces

View File

@ -1,4 +1,4 @@
import { BaseAPI } from "./_base";
import { BaseAPI } from "../_base";
const prefix = "/api";

View File

@ -12,29 +12,14 @@ import { FoodAPI } from "./class-interfaces/recipe-foods";
import { UnitAPI } from "./class-interfaces/recipe-units";
import { CookbookAPI } from "./class-interfaces/group-cookbooks";
import { WebhooksAPI } from "./class-interfaces/group-webhooks";
import { AdminAboutAPI } from "./class-interfaces/admin-about";
import { RegisterAPI } from "./class-interfaces/user-registration";
import { MealPlanAPI } from "./class-interfaces/group-mealplan";
import { EmailAPI } from "./class-interfaces/email";
import { BulkActionsAPI } from "./class-interfaces/recipe-bulk-actions";
import { GroupServerTaskAPI } from "./class-interfaces/group-tasks";
import { AdminAPI } from "./admin-api";
import { ApiRequestInstance } from "~/types/api";
class AdminAPI {
private static instance: AdminAPI;
public about: AdminAboutAPI;
constructor(requests: ApiRequestInstance) {
if (AdminAPI.instance instanceof AdminAPI) {
return AdminAPI.instance;
}
this.about = new AdminAboutAPI(requests);
Object.freeze(this);
AdminAPI.instance = this;
}
}
class Api {
private static instance: Api;
public recipes: RecipeAPI;
@ -54,6 +39,7 @@ class Api {
public mealplans: MealPlanAPI;
public email: EmailAPI;
public bulk: BulkActionsAPI;
public grouperServerTasks: GroupServerTaskAPI;
// Utils
public upload: UploadFile;
@ -77,6 +63,7 @@ class Api {
this.groupWebhooks = new WebhooksAPI(requests);
this.register = new RegisterAPI(requests);
this.mealplans = new MealPlanAPI(requests);
this.grouperServerTasks = new GroupServerTaskAPI(requests);
// Admin
this.events = new EventsAPI(requests);

View File

@ -0,0 +1,8 @@
export interface ServerTask {
id: number;
groupId: number;
callback: string;
createdAt: string;
status: string;
log: string;
}