Files
myDrive/backend/db/utils/googleFolderUtils/index.ts
T
2020-11-25 16:09:23 -05:00

101 lines
3.0 KiB
TypeScript

import {UserInterface} from "../../../models/user";
import env from "../../../enviroment/env";
import { google } from "googleapis";
import getGoogleAuth from "../../../db/googleAuth";
import createQueryGoogle, {googleQueryType} from "../../../utils/createQueryGoogle";
import createQueryGoogleFolder from "../../../utils/createQueryGoogleFolder";
const fields = 'id, name, createdTime, parents, mimeType'
class GoogleFolderUtils {
constructor() {
}
getList = async(query: googleQueryType, user: UserInterface) => {
const oauth2Client = await getGoogleAuth(user);
const drive = google.drive({version:"v3", auth: oauth2Client});
const limit = query.limit;
let parent = query.parent === "/" ? "root" : query.parent;
const {orderBy, queryBuilder} = createQueryGoogleFolder(query, parent);
const folders = await drive.files.list({pageSize: limit, fields: `files(${fields})`, q: queryBuilder, orderBy});
return folders;
}
getInfo = async(id: string, user: UserInterface) => {
const oauth2Client = await getGoogleAuth(user);
const drive = google.drive({version:"v3", auth: oauth2Client});
const folder = await drive.files.get({fileId: id, fields: fields});
return folder;
}
renameFolder = async(folderID: string, title: string, user: UserInterface) => {
const oauth2Client = await getGoogleAuth(user);
const drive = google.drive({version:"v3", auth: oauth2Client});
await drive.files.update({fileId: folderID, requestBody: {name:title}});
}
removeFolder = async(folderID: string, user: UserInterface) => {
const oauth2Client = await getGoogleAuth(user);
const drive = google.drive({version:"v3", auth: oauth2Client});
await drive.files.delete({fileId:folderID});
}
uploadFolder = async(name: string, parent: string, user: UserInterface) => {
parent = parent === "/" ? "root" : parent;
const oauth2Client = await getGoogleAuth(user);
const drive = google.drive({version:"v3", auth: oauth2Client});
const folderMetadata = {
name,
mimeType: 'application/vnd.google-apps.folder',
parents: [parent]
}
const createdFolder = await drive.files.create({
requestBody: folderMetadata,
fields: fields
})
return createdFolder;
}
moveFolder = async(fileID: string, parentID: string, user: UserInterface) => {
const oauth2Client = await getGoogleAuth(user);
const drive = google.drive({version:"v3", auth: oauth2Client});
const previousFile = await drive.files.get({
fileId: fileID,
fields: fields
})
const previousParent = previousFile.data.parents![0];
await drive.files.update({
fileId: fileID,
addParents: parentID,
removeParents: previousParent,
fields: fields
})
}
}
export default GoogleFolderUtils;