diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..cb82aea --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +# Set to ignore everything except /src and package.json +* +!src +!package.json \ No newline at end of file diff --git a/.gitignore b/.gitignore index ccb9a92..a088ee1 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ node_modules credentials.json download_tests build -FileShare \ No newline at end of file +file_share +postgres/db_data diff --git a/docker-compose.yml b/docker-compose.yml index 87c052f..0d555c4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,7 @@ version: "3.8" services: + server: build: context: . @@ -9,55 +10,22 @@ services: volumes: - ./src/build:/ffs/ - /ffs/node_modules - - ./FileShare:/ffs/FileShare/ + - ./file_share:/ffs/file_share/ + - ${LOCAL_DIR_GANTRY}:/ffs/file_share/Gantry/ + - ${LOCAL_DIR_MILL}:/ffs/file_share/Mill/ + - ${LOCAL_DIR_LATHE}:/ffs/file_share/Lathe/ + - ${LOCAL_DIR_WATERJET}:/ffs/file_share/Waterjet/ ports: - - ${PORT}:${PORT} + - ${PORT_SERVER}:${PORT_SERVER} command: "node server.js" - # task_runner_gantry: - # build: - # context: . - # dockerfile: Dockerfile - # env_file: ./.env - # volumes: - # - ./src/build:/ffs/ - # - /ffs/node_modules - # - ${LOCAL_DIR_GANTRY}:/ffs/FileShare/Gantry - # network_mode: host - # command: "node taskRunner.js gantry" - # - # task_runner_lathe: - # build: - # context: . - # dockerfile: Dockerfile - # env_file: ./.env - # volumes: - # - ./src/build:/ffs/ - # - /ffs/node_modules - # - ${LOCAL_DIR_LATHE}:/ffs/FileShare/Lathe - # network_mode: host - # command: "node taskRunner.js lathe" - - # task_runner_mill: - # build: - # context: . - # dockerfile: Dockerfile - # env_file: ./.env - # volumes: - # - ./src/build:/ffs/ - # - /ffs/node_modules - # - ${LOCAL_DIR_MILL}:/ffs/FileShare/Mill - # network_mode: host - # command: "node taskRunner.js mill" - - # task_runner_waterjet: - # build: - # context: . - # dockerfile: Dockerfile - # env_file: ./.env - # volumes: - # - ./src/build:/ffs/ - # - /ffs/node_modules - # - ${LOCAL_DIR_WATERJET}:/ffs/FileShare/Waterjet - # network_mode: host - # command: "node taskRunner.js waterjet" \ No newline at end of file + # access through `psql -h localhost -p 5432 -d filesync -U user`, password is 'pass' + # to be able to build after the initializing the db, you may need to run `sudo chown -R $USER db_data/` + database: + image: 'postgres:13' + env_file: ./.env + volumes: + - ./postgres/db_data/:/var/lib/postgresql/data/ + - ./postgres/sql/create_tables.sql:/docker-entrypoint-initdb.d/create_tables.sql + ports: + - ${PORT_DB}:${PORT_DB} \ No newline at end of file diff --git a/environment.d.ts b/environment.d.ts index 507be66..6dd4467 100644 --- a/environment.d.ts +++ b/environment.d.ts @@ -4,7 +4,8 @@ declare global { FORGE_CLIENT_ID: string; FORGE_CLIENT_SECRET: string; FORGE_CALLBACK_URL: string; - PORT: string; + PORT_SERVER: string; + WEBHOOK_TOKEN: string; } } } diff --git a/postgres/sql/create_tables.sql b/postgres/sql/create_tables.sql new file mode 100644 index 0000000..f5ea731 --- /dev/null +++ b/postgres/sql/create_tables.sql @@ -0,0 +1,23 @@ +CREATE TABLE IF NOT EXISTS fusion ( + fusion_id varchar(250) NOT NULL, + file_name varchar(250) NOT NULL, + username varchar(250) NOT NULL, + size int NOT NULL, + version int NOT NULL, + PRIMARY KEY (fusion_id) +); + +CREATE TABLE IF NOT EXISTS local ( + file_name varchar(250) NOT NULL, + fusion_id varchar(250) NOT NULL, + PRIMARY KEY (file_name) +); + +CREATE TABLE IF NOT EXISTS archive ( + fusion_id varchar(250) NOT NULL, + file_name varchar(250) NOT NULL, + username varchar(250) NOT NULL, + size int NOT NULL, + version int NOT NULL, + PRIMARY KEY (fusion_id) +); \ No newline at end of file diff --git a/src/config.ts b/src/config.ts index 19eb40f..fc0654f 100644 --- a/src/config.ts +++ b/src/config.ts @@ -53,9 +53,9 @@ export const folderIDtoLocal: any = { "urn:adsk.wipprod:fs.folder:co.vJLXAKGbQQayeljr-nwztQ": "/Waterjet" } -export const port = process.env.PORT; +export const port = process.env.PORT_SERVER; export const forgeClientId = process.env.FORGE_CLIENT_ID; export const forgeClientSecret = process.env.FORGE_CLIENT_SECRET; export const forgeCallbackURL = process.env.FORGE_CALLBACK_URL; export const hookCallbackURL = `${process.env.HOOK_CALLBACK_HOSTNAME}/hook`; -export const webhookToken: any = process.env.WEBHOOK_TOKEN; \ No newline at end of file +export const webhookToken = process.env.WEBHOOK_TOKEN; \ No newline at end of file diff --git a/src/old/taskRunner.ts b/src/old/taskRunner.ts index 0a84cb5..7f6c65b 100644 --- a/src/old/taskRunner.ts +++ b/src/old/taskRunner.ts @@ -23,7 +23,7 @@ const projectID = "" const folderID = config.folderMap[process.argv[2]].fusionID; const localPath = config.folderMap[process.argv[2]].local; -const localDir = __dirname + '/FileShare' + localPath; +const localDir = __dirname + '/file_share' + localPath; console.log(folderID, localDir); diff --git a/src/server.ts b/src/server.ts index 3d726fb..213ad64 100644 --- a/src/server.ts +++ b/src/server.ts @@ -16,7 +16,7 @@ const downloader = require('./downloader'); * - FORGE_CLIENT_ID * - FORGE CLIENT_SECRET * - FORGE_CALLBACK_URL - * - PORT (defaults to 3000) + * - PORT_SERVER (defaults to 3000) * * These are all configured in config.js * @@ -143,7 +143,7 @@ const createServer = () => { const itemID = body.payload.lineageUrn; //TODO: check if extension is in the name const fileName = body.payload.name; - const destination = __dirname + '/FileShare' + config.folderIDtoLocal[body.payload.parentFolderUrn]; + const destination = __dirname + '/file_share' + config.folderIDtoLocal[body.payload.parentFolderUrn]; downloader.download(config.projectID, itemID, fileName, destination, credentials); } @@ -155,7 +155,7 @@ const createServer = () => { res.status(err.statusCode).json(err); }); - const server = app.listen(config.port, () => { console.log(`Server listening on port ${PORT}`); }); + const server = app.listen(PORT, () => { console.log(`Server listening on port ${PORT}`); }); return server; } diff --git a/src/webhooks.ts b/src/webhooks.ts index b847c82..a070ae7 100644 --- a/src/webhooks.ts +++ b/src/webhooks.ts @@ -16,7 +16,7 @@ import * as config from './config'; * */ -const FileShareID = "urn:adsk.wipprod:fs.folder:co.T0n0mYQeS16K0lq1VuuYVQ" +const fileShareID = "urn:adsk.wipprod:fs.folder:co.T0n0mYQeS16K0lq1VuuYVQ" /** * Function to manage hook lifecycle @@ -78,7 +78,7 @@ const createHook = (event: string, credentials: any) => { autoReactivateHook: "true", callbackUrl: config.hookCallbackURL, scope: { - folder: FileShareID + folder: fileShareID } } }).then((res: any) => {