summaryrefslogtreecommitdiffstats
path: root/src/dataservices/folder.service.ts
blob: 224263e1004ef4a3c1f0e48a1bf2f221bb55437e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import { AxiosResponse } from 'axios'
import axios from '@nextcloud/axios'

import { API_ROUTES } from '../types/ApiRoutes'

export class FolderService {

	/**
	 * Retrieves all of the folders from the Nextcloud News backend
	 *
	 * @return {AxiosResponse} Folders contained in data.folders property
	 */
	static fetchAllFolders(): Promise<AxiosResponse> {
		return axios.get(API_ROUTES.FOLDER)
	}

	/**
	 * Creates a new Folder in the Nextcloud News backend
	 *
	 * @param param0 Folder data
	 * @param param0.name {String} New Folder Name
	 * @return {AxiosResponse} Folder info from backend in data.folders[0] property
	 */
	static createFolder({ name }: { name: string }): Promise<AxiosResponse> {
		return axios.post(API_ROUTES.FOLDER, { folderName: name })
	}

	/**
	 * Update a folder name
	 *
	 * @param param0 Folder data
	 * @param param0.id {Number} ID number of folder to update
	 * @param param0.name {String} name to set for folder
	 * @return {AxiosResponse} Null value is returned on success
	 */
	static renameFolder({ id, name }: { id: number, name?: string }): Promise<AxiosResponse> {
		return axios.post(API_ROUTES.FOLDER + `/${id}/rename`, {
			folderName: name,
		})
	}

	/**
	 * Deletes a folder in the Nextcloud News backend (by id number)
	 *
	 * @param param0 Folder data
	 * @param param0.id {number} id of folder to delete
	 * @return {AxiosResponse}
	 */
	static deleteFolder({ id }: { id: number }): Promise<AxiosResponse> {
		return axios.delete(API_ROUTES.FOLDER + '/' + id)
	}

}