feat(google-drive): add updated files trigger

This commit is contained in:
Rıdvan Akca
2023-03-30 15:37:57 +03:00
parent 59e495f7d3
commit 4931cbcc34
3 changed files with 94 additions and 1 deletions

View File

@@ -1,5 +1,6 @@
import newFiles from './new-files';
import newFilesInFolder from './new-files-in-folder';
import newFolders from './new-folders';
import updatedFiles from './updated-files';
export default [newFiles, newFilesInFolder, newFolders];
export default [newFiles, newFilesInFolder, newFolders, updatedFiles];

View File

@@ -0,0 +1,52 @@
import defineTrigger from '../../../../helpers/define-trigger';
import updatedFiles from './updated-files';
export default defineTrigger({
name: 'Updated Files',
key: 'updatedFiles',
pollInterval: 15,
description:
'Triggers when a file is updated in a specific folder (but not its subfolder).',
arguments: [
{
label: 'Folder',
key: 'folderId',
type: 'dropdown' as const,
required: false,
description:
'Check a specific folder for updated files. Please note: files located in subfolders of the folder you choose here will NOT trigger this flow. Defaults to the top-level folder if none is picked.',
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listFolders',
},
],
},
},
{
label: 'Include Deleted',
key: 'includeDeleted',
type: 'dropdown' as const,
required: true,
value: true,
description: 'Should this trigger also on files that are deleted?',
options: [
{
label: 'Yes',
value: true,
},
{
label: 'No',
value: false,
},
],
},
],
async run($) {
await updatedFiles($);
},
});

View File

@@ -0,0 +1,40 @@
import { IGlobalVariable } from '@automatisch/types';
const updatedFiles = async ($: IGlobalVariable) => {
let q = `mimeType!='application/vnd.google-apps.folder'`;
if ($.step.parameters.includeDeleted === false) {
q += ` and trashed=${$.step.parameters.includeDeleted}`;
}
if ($.step.parameters.folderId) {
q += ` and '${$.step.parameters.folderId}' in parents`;
} else {
q += ` and parents in 'root'`;
}
const params = {
pageToken: undefined as unknown as string,
orderBy: 'modifiedTime desc',
fields: '*',
pageSize: 1000,
q,
};
do {
const { data } = await $.http.get(`/v3/files`, { params });
params.pageToken = data.nextPageToken;
if (data.files?.length) {
for (const file of data.files) {
$.pushTriggerItem({
raw: file,
meta: {
internalId: `${file.id}-${file.modifiedTime}`,
},
});
}
}
} while (params.pageToken);
};
export default updatedFiles;