vscode-appwrite/src/commands/registerCommands.ts
Alex Weininger 6cbf15379c
Feature: functions (#15)
* Basic functions create tag and create execution feature

* Detailed function support, create tag still broken

* create tag and pick folder

* edit changelog and bump extension version

* fix linting
2021-05-29 10:32:38 -05:00

139 lines
7 KiB
TypeScript

import { commands, ExtensionContext } from "vscode";
import { AppwriteTree } from "../extensionVariables";
import { refreshAllViews, refreshTree } from "../utils/refreshTree";
import { connectAppwrite } from "./connectAppwrite";
import { createCollection } from "./database/createCollection";
import { createPermission } from "./database/permissions/createPermission";
import { createRule } from "./database/createRule";
import { deleteCollection } from "./database/deleteCollection";
import { deleteDocument } from "./database/deleteDocument";
import { deletePermission } from "./database/permissions/deletePermission";
import { viewDocumentAsJson } from "./database/openDocument";
import { refreshCollection } from "./database/refreshCollection";
import { refreshCollectionsList } from "./database/refreshCollectionsList";
import { removeRule } from "./database/removeRule";
import { viewCollectionAsJson } from "./database/viewCollectionAsJson";
import { openDocumentation } from "./openDocumentation";
import { copyUserEmail } from "./users/copyUserEmail";
import { copyUserId } from "./users/copyUserId";
import { createUser } from "./users/createUser";
import { deleteUser } from "./users/deleteUser";
import { getUserLogs } from "./users/getUserLogs";
import { openUserInConsole } from "./users/openUserInConsole";
import { refreshUsersList } from "./users/refreshUsersList";
import { viewUserPrefs } from "./users/viewUserPrefs";
import { editPermission } from "./database/permissions/editPermission";
import { setActiveProject } from "./project/setActiveProject";
import { removeProject } from "./project/removeProject";
import { createTag } from './functions/createTag';
import { createExecution } from './functions/createExecution';
import { activateTag } from './functions/activateTag';
import { editValue } from './common/editValue';
import { deleteFunction } from './functions/deleteFunction';
import { createFunction } from './functions/createFunction';
import { createFunctionVar } from './functions/createFunctionVar';
import { deleteFunctionVar } from './functions/deleteFunctionVar';
import { deleteTag } from './functions/deleteTag';
import { viewExecutionErrors } from './functions/viewExecutionErrors';
import { viewExecutionOutput } from './functions/viewExecutionOutput';
import { copyExecutionErrors } from './functions/copyExecutionErrors';
import { copyExecutionOutput } from './functions/copyExecutionOutput';
import { openExecutionsInBrowser } from './functions/openExecutionsInBrowser';
import { openFunctionSettingsInBrowser } from './functions/openFunctionSettingsInBrowser';
import { openFunctionTagsInBrowser } from './functions/openFunctionTagsInBrowser';
class CommandRegistrar {
constructor(private readonly context: ExtensionContext) {}
registerCommand(commandId: string, callback: (...args: any[]) => any): void {
const disposable = commands.registerCommand(commandId, callback);
this.context.subscriptions.push(disposable);
}
}
export function registerCommands(context: ExtensionContext): void {
const registrar = new CommandRegistrar(context);
const registerCommand = (
commandId: string,
callback?: (...args: any[]) => any,
refresh?: keyof AppwriteTree | (keyof AppwriteTree)[] | "all"
) => {
registrar.registerCommand(`vscode-appwrite.${commandId}`, async (...args: any[]) => {
await callback?.(...args);
if (refresh !== undefined) {
if (refresh === "all") {
refreshAllViews();
} else if (typeof refresh === "string") {
refreshTree(refresh);
} else {
refreshTree(...refresh);
}
}
});
};
/** Common **/
registerCommand("editValue", editValue);
/** General **/
registerCommand("Connect", connectAppwrite, "all");
/** Users **/
registerCommand("openUserInConsole", openUserInConsole);
registerCommand("viewUserPrefs", viewUserPrefs);
registerCommand("copyUserId", copyUserId);
registerCommand("copyUserEmail", copyUserEmail);
registerCommand("CreateUser", createUser);
registerCommand("refreshUsersList", refreshUsersList);
registerCommand("DeleteUser", deleteUser);
registerCommand("OpenUsersDocumentation", () => openDocumentation("users"));
registerCommand("GetUserLogs", getUserLogs);
/** Database **/
registerCommand("OpenDatabaseDocumentation", () => openDocumentation("database"));
registerCommand("viewDocumentAsJson", viewDocumentAsJson);
registerCommand("viewCollectionAsJson", viewCollectionAsJson);
registerCommand("createRule", createRule);
registerCommand("removeRule", removeRule);
registerCommand("deleteDocument", deleteDocument, "database");
registerCommand("deleteCollection", deleteCollection, "database");
registerCommand("refreshCollection", refreshCollection);
registerCommand("refreshCollectionsList", refreshCollectionsList);
registerCommand("createCollection", createCollection, "database");
registerCommand("createPermission", createPermission, "database");
registerCommand("deletePermission", deletePermission, "database");
registerCommand("editPermission", editPermission, "database");
/** Health **/
registerCommand("refreshHealth", undefined, "health");
registerCommand("openHealthDocumentation", () => openDocumentation("health"));
/** Storage **/
registerCommand("refreshStorage", undefined, "storage");
registerCommand("openStorageDocumentation", () => openDocumentation("storage"));
/** Projects **/
registerCommand("addProject", connectAppwrite, "all");
registerCommand("setActiveProject", setActiveProject, "all");
registerCommand("refreshProjects", undefined, "projects");
registerCommand("removeProject", removeProject, "all");
/** Functions **/
registerCommand("refreshFunctions", undefined, "functions");
registerCommand("CreateExecution", createExecution, "functions");
registerCommand("CreateTag", createTag, "functions");
registerCommand("activateTag", activateTag, "functions");
registerCommand("deleteTag", deleteTag, "functions");
registerCommand("deleteFunction", deleteFunction, "functions");
registerCommand("openFunctionsDocumentation", () => openDocumentation("functions"));
registerCommand("createFunction", createFunction, "functions");
registerCommand("createFunctionVar", createFunctionVar, "functions");
registerCommand("deleteFunctionVar", deleteFunctionVar, "functions");
registerCommand("viewExecutionErrors", viewExecutionErrors);
registerCommand("viewExecutionOutput", viewExecutionOutput);
registerCommand("copyExecutionOutput", copyExecutionOutput);
registerCommand("copyExecutionErrors", copyExecutionErrors);
registerCommand("openExecutionsInBrowser", openExecutionsInBrowser);
registerCommand("openFunctionTagsInBrowser", openFunctionTagsInBrowser);
registerCommand("openFunctionSettingsInBrowser", openFunctionSettingsInBrowser);
}