diff --git a/pm2.json b/pm2.json new file mode 100644 index 0000000..41a5114 --- /dev/null +++ b/pm2.json @@ -0,0 +1,23 @@ +{ + "apps" : [ + { + "name": "webapp", + "cwd": "./webapp", + "script": "./webapp/index.js", + "watch": true, + "env": { + "PORT": "4100" + } + }, + + { + "name": "worker1", + "cwd": "./worker", + "script": "./worker/index.js", + "watch": true, + "env": { + "FARMER_URL": "http://localhost:4100" + } + } + ] +} diff --git a/webapp/index.js b/webapp/index.js index 6d62546..094f891 100644 --- a/webapp/index.js +++ b/webapp/index.js @@ -1,7 +1,5 @@ "use strict" -require("process").chdir(__dirname) - var app = require("express")() // Support JSON and URL encoded bodies @@ -11,6 +9,7 @@ app.use(bodyParser.urlencoded({ // to support URL-encoded bodies extended: true })) + // Caching for JSON APIs var apicache = require("apicache").options({ debug: false }).middleware @@ -29,6 +28,7 @@ var options = { // if an error occurred while rendering, show detail or not, default to false traceError: false } + app.set("view engine", "liquid") app.engine("liquid", expressLiquid(options)) app.use(expressLiquid.middleware) @@ -41,6 +41,6 @@ app.set("db", db) app.use(require("./controllers")) // Start server -app.listen(8080, "127.0.0.1", function () { +app.listen(require("process").env.PORT, "127.0.0.1", function () { console.log("Minetest Mod Database listening on port 8080!") }) diff --git a/webapp/models/database.js b/webapp/models/database.js index 6568152..6fe4829 100644 --- a/webapp/models/database.js +++ b/webapp/models/database.js @@ -10,13 +10,14 @@ var sequelize = new Sequelize("database", "", "", { }, // SQLite only - storage: "../db.sqlite" + storage: "db.sqlite" }) var User = sequelize.define("user", { username: { type: Sequelize.STRING(100), unique: true } }) + var Mod = sequelize.define("mod", { basename: Sequelize.STRING(100), type: Sequelize.ENUM("mod", "game", "texturepack"), diff --git a/package.json b/webapp/package.json similarity index 89% rename from package.json rename to webapp/package.json index 52a827c..3f11a8f 100644 --- a/package.json +++ b/webapp/package.json @@ -18,12 +18,11 @@ "homepage": "https://github.com/rubenwardy/minetest-mod-database#readme", "dependencies": { "apicache": "^0.7.4", + "async": "^2.1.4", "body-parser": "^1.15.2", "express": "^4.14.0", "express-liquid": "^0.2.6", - "github": "^8.1.0", - "request": "^2.79.0", - "sequelize": "^3.28.0", + "sequelize": "^3.30.0", "sqlite3": "^3.1.8" } } diff --git a/service/farmerapi.js b/worker/farmerapi.js similarity index 75% rename from service/farmerapi.js rename to worker/farmerapi.js index d6f167d..6b6a5aa 100644 --- a/service/farmerapi.js +++ b/worker/farmerapi.js @@ -1,13 +1,16 @@ "use strict" var request = require("request") -var API_URL = "http://localhost:8080" class FarmerAPI { + constructor(url) { + this.url = url + } + getWork() { - return new Promise(function(resolve, reject) { + return new Promise((resolve, reject) => { request.get({ - url: API_URL + '/workers/job', + url: this.url + '/workers/job', qs: { token: "foobar" }, @@ -23,9 +26,9 @@ class FarmerAPI { } sendResults(results) { - return new Promise(function(resolve, reject) { + return new Promise((resolve, reject) => { request.post({ - url: API_URL + '/workers/job', + url: this.url + '/workers/job', qs: { token: "foobar" }, diff --git a/service/fetchjob.js b/worker/fetchjob.js similarity index 100% rename from service/fetchjob.js rename to worker/fetchjob.js diff --git a/service/index.js b/worker/index.js similarity index 94% rename from service/index.js rename to worker/index.js index 6cfe985..8a6b95d 100644 --- a/service/index.js +++ b/worker/index.js @@ -1,9 +1,8 @@ "use strict" -require("process").chdir(__dirname) - const FarmerAPI = require("./farmerapi") -const api = new FarmerAPI() + +const api = new FarmerAPI(require("process").env.FARMER_URL) const fs = require("fs") const settings = JSON.parse(fs.readFileSync("settings.json", 'utf8')) diff --git a/worker/package.json b/worker/package.json new file mode 100644 index 0000000..41da075 --- /dev/null +++ b/worker/package.json @@ -0,0 +1,22 @@ +{ + "name": "minetest-mod-database-worker", + "version": "0.1.0", + "description": "Minetest Mod Database Worker", + "main": "index.js", + "scripts": {}, + "repository": { + "type": "git", + "url": "git+https://github.com/rubenwardy/minetest-mod-database.git" + }, + "author": "rubenwardy", + "license": "LGPL-2.1+", + "bugs": { + "url": "https://github.com/rubenwardy/minetest-mod-database/issues" + }, + "homepage": "https://github.com/rubenwardy/minetest-mod-database#readme", + "dependencies": { + "bluebird": "^3.4.7", + "github": "^8.1.0", + "request": "^2.79.0" + } +} diff --git a/service/reposervers.js b/worker/reposervers.js similarity index 100% rename from service/reposervers.js rename to worker/reposervers.js diff --git a/service/settings.json.example b/worker/settings.json.example similarity index 100% rename from service/settings.json.example rename to worker/settings.json.example