cleaned up google folder route and added db util
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
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;
|
||||
@@ -14,10 +14,10 @@ import getBusboyData from "../ChunkService/utils/getBusboyData";
|
||||
import axios from "axios";
|
||||
import awaitUploadGoogle from "../ChunkService/utils/awaitUploadGoogle";
|
||||
import {googleQueryType} from "../../utils/createQueryGoogle";
|
||||
import GoogleDbUtils from "../../db/utils/googleFileUtils";
|
||||
import GoogleDbFileUtils from "../../db/utils/googleFileUtils";
|
||||
import sortGoogleMongoQuickFiles from "../../utils/sortGoogleMongoQuickFiles";
|
||||
|
||||
const googleDbUtils = new GoogleDbUtils();
|
||||
const googleDbFileUtils = new GoogleDbFileUtils();
|
||||
|
||||
interface RequestType extends Request {
|
||||
user?: UserInterface,
|
||||
@@ -37,7 +37,7 @@ class GoogleFileService {
|
||||
|
||||
getList = async(user: UserInterface, query: googleQueryType) => {
|
||||
|
||||
const files = await googleDbUtils.getList(query, user);
|
||||
const files = await googleDbFileUtils.getList(query, user);
|
||||
|
||||
const nextPageToken = files.data.nextPageToken;
|
||||
|
||||
@@ -50,7 +50,7 @@ class GoogleFileService {
|
||||
|
||||
getMongoGoogleList = async(user: UserInterface, query: googleQueryType) => {
|
||||
|
||||
const files = await googleDbUtils.getList(query, user);
|
||||
const files = await googleDbFileUtils.getList(query, user);
|
||||
|
||||
const nextPageToken = files.data.nextPageToken;
|
||||
|
||||
@@ -67,7 +67,7 @@ class GoogleFileService {
|
||||
|
||||
getFileInfo = async(user: UserInterface, id: string) => {
|
||||
|
||||
const file = await googleDbUtils.getFileInfo(id, user);
|
||||
const file = await googleDbFileUtils.getFileInfo(id, user);
|
||||
|
||||
const userID = user._id;
|
||||
const convertedFile = convertDriveToMongo(file.data, userID);
|
||||
@@ -77,7 +77,7 @@ class GoogleFileService {
|
||||
|
||||
getGoogleMongoQuickList = async(user: UserInterface) => {
|
||||
|
||||
const files = await googleDbUtils.getQuickList(user);
|
||||
const files = await googleDbFileUtils.getQuickList(user);
|
||||
|
||||
const userID = user._id
|
||||
const convertedFiles = convertDriveListToMongoList(files.data.files, userID);
|
||||
@@ -91,7 +91,7 @@ class GoogleFileService {
|
||||
|
||||
getGoogleMongoSuggestedList = async(user: UserInterface, searchQuery: string) => {
|
||||
|
||||
const {files, folders} = await googleDbUtils.getSuggestedList(searchQuery, user);
|
||||
const {files, folders} = await googleDbFileUtils.getSuggestedList(searchQuery, user);
|
||||
|
||||
const userID = user._id;
|
||||
|
||||
@@ -108,17 +108,17 @@ class GoogleFileService {
|
||||
|
||||
renameFile = async(user: UserInterface, fileID: string, title: string) => {
|
||||
|
||||
await googleDbUtils.renameFile(fileID, title, user);
|
||||
await googleDbFileUtils.renameFile(fileID, title, user);
|
||||
}
|
||||
|
||||
removeFile = async(user: UserInterface, fileID: string) => {
|
||||
|
||||
await googleDbUtils.removeFile(fileID, user);
|
||||
await googleDbFileUtils.removeFile(fileID, user);
|
||||
}
|
||||
|
||||
downloadFile = async(user: UserInterface, fileID: string, res: Response) => {
|
||||
|
||||
const {fileMetadata, drive} = await googleDbUtils.getDownloadFileMetadata(fileID, user);
|
||||
const {fileMetadata, drive} = await googleDbFileUtils.getDownloadFileMetadata(fileID, user);
|
||||
|
||||
res.set('Content-Type', 'binary/octet-stream');
|
||||
res.set('Content-Disposition', 'attachment; filename="' + fileMetadata.data.name! + '"');
|
||||
@@ -147,7 +147,7 @@ class GoogleFileService {
|
||||
|
||||
downloadDoc = async(user: UserInterface, fileID: string, res: Response) => {
|
||||
|
||||
const {fileMetadata, drive} = await googleDbUtils.getDownloadFileMetadata(fileID, user);
|
||||
const {fileMetadata, drive} = await googleDbFileUtils.getDownloadFileMetadata(fileID, user);
|
||||
|
||||
res.set('Content-Type', 'binary/octet-stream');
|
||||
res.set('Content-Disposition', 'attachment; filename="' + fileMetadata.data.name! + ".pdf" + '"');
|
||||
@@ -172,7 +172,7 @@ class GoogleFileService {
|
||||
|
||||
getThumbnail = async(user: UserInterface, fileID: string, res: Response) => {
|
||||
|
||||
const {fileMetadata, drive} = await googleDbUtils.getDownloadFileMetadata(fileID, user);
|
||||
const {fileMetadata, drive} = await googleDbFileUtils.getDownloadFileMetadata(fileID, user);
|
||||
|
||||
res.set('Content-Type', 'binary/octet-stream');
|
||||
res.set('Content-Disposition', 'attachment; filename="' + fileMetadata.data.name! + '"');
|
||||
@@ -200,7 +200,7 @@ class GoogleFileService {
|
||||
|
||||
getFullThumbnail = async(user: UserInterface, fileID: string, res: Response) => {
|
||||
|
||||
const {fileMetadata, drive} = await googleDbUtils.getDownloadFileMetadata(fileID, user);
|
||||
const {fileMetadata, drive} = await googleDbFileUtils.getDownloadFileMetadata(fileID, user);
|
||||
|
||||
res.set('Content-Type', 'binary/octet-stream');
|
||||
res.set('Content-Disposition', 'attachment; filename="' + fileMetadata.data.name! + '"');
|
||||
@@ -232,7 +232,7 @@ class GoogleFileService {
|
||||
const currentUUID = uuid.v4();
|
||||
tempStorage[tempUUID] = currentUUID;
|
||||
|
||||
const {fileMetadata, drive} = await googleDbUtils.getDownloadFileMetadata(fileID, user);
|
||||
const {fileMetadata, drive} = await googleDbFileUtils.getDownloadFileMetadata(fileID, user);
|
||||
|
||||
const fileSize = +fileMetadata.data.size!
|
||||
|
||||
@@ -346,19 +346,19 @@ class GoogleFileService {
|
||||
|
||||
moveFile = async(user: UserInterface, fileID: string, parentID: string) => {
|
||||
|
||||
await googleDbUtils.moveFile(fileID, parentID, user);
|
||||
await googleDbFileUtils.moveFile(fileID, parentID, user);
|
||||
}
|
||||
|
||||
makeFilePublic = async(user: UserInterface, fileID: string) => {
|
||||
|
||||
const publicURL = await googleDbUtils.makeFilePublic(fileID, user);
|
||||
const publicURL = await googleDbFileUtils.makeFilePublic(fileID, user);
|
||||
|
||||
return publicURL;
|
||||
}
|
||||
|
||||
removePublicLink = async(user: UserInterface, fileID: string) => {
|
||||
|
||||
await googleDbUtils.removePublicLink(fileID, user);
|
||||
await googleDbFileUtils.removePublicLink(fileID, user);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,10 @@ import createQueryGoogleFolder from "../../utils/createQueryGoogleFolder";
|
||||
import FolderService from "../FolderService";
|
||||
import sortGoogleMongoFolderList from "../../utils/sortGoogleMongoFolderList";
|
||||
import convertDriveFolderToMongoFolder from "../../utils/convertDriveFolderToMongoFolder";
|
||||
import createQueryGoogle, {googleQueryType} from "../../utils/createQueryGoogle";
|
||||
import GoogleDbFolderUtils from "../../db/utils/googleFolderUtils";
|
||||
|
||||
const googleDbFolderUtils = new GoogleDbFolderUtils();
|
||||
|
||||
const folderService = new FolderService();
|
||||
|
||||
@@ -17,62 +21,41 @@ class GoogleFolderService {
|
||||
|
||||
}
|
||||
|
||||
getList = async(user: UserInterface, query: any) => {
|
||||
getList = async(user: UserInterface, query: googleQueryType) => {
|
||||
|
||||
const oauth2Client = await getGoogleAuth(user);
|
||||
|
||||
const limit: any = query.limit as any;
|
||||
|
||||
let parent = query.parent === "/" ? "root" : query.parent;
|
||||
|
||||
const {orderBy, queryBuilder} = createQueryGoogleFolder(query, parent);
|
||||
|
||||
const drive = google.drive({version:"v3", auth: oauth2Client});
|
||||
const files = await drive.files.list({pageSize: limit, fields: `files(${fields})`, q: queryBuilder, orderBy});
|
||||
const folders = await googleDbFolderUtils.getList(query, user);
|
||||
|
||||
const userID = user._id;
|
||||
|
||||
const convertedFiles = convertDriveFoldersToMongoFolders(files.data.files, userID);
|
||||
const convertedFolders = convertDriveFoldersToMongoFolders(folders.data.files, userID);
|
||||
|
||||
return convertedFiles;
|
||||
return convertedFolders;
|
||||
}
|
||||
|
||||
getGoogleMongoList = async(user: UserInterface, query: any) => {
|
||||
|
||||
const oauth2Client = await getGoogleAuth(user);
|
||||
|
||||
const limit: any = query.limit as any;
|
||||
|
||||
let parent = query.parent === "/" ? "root" : query.parent;
|
||||
|
||||
const {orderBy, queryBuilder} = createQueryGoogleFolder(query, parent)
|
||||
|
||||
const drive = google.drive({version:"v3", auth: oauth2Client});
|
||||
const files = await drive.files.list({pageSize: limit, fields: `files(${fields})`, q: queryBuilder, orderBy});
|
||||
const googleFolderList = await googleDbFolderUtils.getList(query, user);
|
||||
|
||||
const userID = user._id;
|
||||
|
||||
const convertedFiles = convertDriveFoldersToMongoFolders(files.data.files, userID);
|
||||
const convertedFolders = convertDriveFoldersToMongoFolders(googleFolderList.data.files, userID);
|
||||
|
||||
const folderList = await folderService.getFolderList(user, query);
|
||||
|
||||
const mongoGoogleList = sortGoogleMongoFolderList([...convertedFiles, ...folderList], query);
|
||||
const mongoGoogleList = sortGoogleMongoFolderList([...convertedFolders, ...folderList], query);
|
||||
|
||||
return mongoGoogleList;
|
||||
}
|
||||
|
||||
getInfo = async(user: UserInterface, id: string) => {
|
||||
|
||||
const oauth2Client = await getGoogleAuth(user);
|
||||
|
||||
const drive = google.drive({version:"v3", auth: oauth2Client});
|
||||
const file = await drive.files.get({fileId: id, fields: fields});
|
||||
const folder = await googleDbFolderUtils.getInfo(id, user);
|
||||
|
||||
const userID = user._id;
|
||||
|
||||
const convertedFile = convertDriveFolderToMongoFolder(file.data, userID);
|
||||
const convertedFolder = convertDriveFolderToMongoFolder(folder.data, userID);
|
||||
|
||||
return convertedFile;
|
||||
return convertedFolder;
|
||||
}
|
||||
|
||||
getSubFolderList = async(user: UserInterface, id: string) => {
|
||||
@@ -173,40 +156,20 @@ class GoogleFolderService {
|
||||
return folderList;
|
||||
}
|
||||
|
||||
renameFolder = async(user: UserInterface, fileID: string, title: string) => {
|
||||
renameFolder = async(user: UserInterface, folderID: string, title: string) => {
|
||||
|
||||
const oauth2Client = await getGoogleAuth(user);
|
||||
const drive = google.drive({version:"v3", auth: oauth2Client});
|
||||
|
||||
await drive.files.update({fileId: fileID, requestBody: {name:title}})
|
||||
await googleDbFolderUtils.renameFolder(folderID, title, user);
|
||||
}
|
||||
|
||||
removeFolder = async(user: UserInterface, fileID: string) => {
|
||||
removeFolder = async(user: UserInterface, folderID: string) => {
|
||||
|
||||
const oauth2Client = await getGoogleAuth(user);
|
||||
const drive = google.drive({version:"v3", auth: oauth2Client});
|
||||
|
||||
await drive.files.delete({fileId:fileID});
|
||||
await googleDbFolderUtils.removeFolder(folderID, user);
|
||||
}
|
||||
|
||||
upload = async(user: UserInterface, name: string, parent: string, ) => {
|
||||
upload = async(user: UserInterface, name: string, parent: string) => {
|
||||
|
||||
const createdFolder = await googleDbFolderUtils.uploadFolder(name, parent, user);
|
||||
|
||||
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
|
||||
})
|
||||
|
||||
const userID = user._id;
|
||||
|
||||
const convertedFolder = convertDriveFolderToMongoFolder(createdFolder.data, userID)
|
||||
@@ -216,23 +179,8 @@ class GoogleFolderService {
|
||||
|
||||
moveFolder = async(user: UserInterface, fileID: string, parentID: string) => {
|
||||
|
||||
const oauth2Client = await getGoogleAuth(user);
|
||||
await googleDbFolderUtils.moveFolder(fileID, parentID, 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
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user