From 0fd9e82a380a5e3d8153cde2440cb1c7ce1347e0 Mon Sep 17 00:00:00 2001 From: cha0s Date: Fri, 3 Jul 2020 18:41:40 -0500 Subject: [PATCH] feat: add sequelize + mariadb --- .gitignore | 1 + .neutrinorc.server.js | 42 +++++++++++++- package.json | 2 + yarn.lock | 132 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 176 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 43be918..f90b0a2 100644 --- a/.gitignore +++ b/.gitignore @@ -119,3 +119,4 @@ dist build /resources +/var/lib diff --git a/.neutrinorc.server.js b/.neutrinorc.server.js index 29fe8ab..74af7bb 100644 --- a/.neutrinorc.server.js +++ b/.neutrinorc.server.js @@ -1,3 +1,4 @@ +const {join} = require('path'); const {spawn} = require('child_process'); const copy = require('@neutrinojs/copy'); @@ -7,7 +8,37 @@ const {DefinePlugin} = require('webpack'); const {afterPlatform, initial} = require('./middleware'); if (!process.argv.find((arg) => arg === 'production')) { - spawn('docker', ['run', '-p', '11346:6379', 'redis'], {stdio: 'inherit'}); + spawn( + 'docker', + [ + 'run', + '--name', + 'perseadev_redis', + '-p', + '11346:6379', + 'redis' + ], + {stdio: 'inherit'} + ); + spawn( + 'docker', + [ + 'run', + '--name', + 'perseadev_mariadb', + '-p', + '11347:6379', + '-v', + [ + join(__dirname, 'var/lib/mariadb'), + '/var/lib/mysql', + ].join(':'), + '-e', + 'MYSQL_ROOT_PASSWORD=UNSAFE_DEV_PASSWORD', + 'mariadb:10', + ], + {stdio: 'inherit'} + ); } module.exports = { @@ -44,3 +75,12 @@ module.exports = { }, ], }; + +if (!process.argv.find((arg) => arg === 'production')) { + process.on('SIGINT', function() { + ['redis', 'mariadb'].forEach((name) => spawn('docker', ['rm', '-f', `perseadev_${name}`])); + }); + process.on('beforeExit', function() { + ['redis', 'mariadb'].forEach((name) => spawn('docker', ['rm', '-f', `perseadev_${name}`])); + }); +} diff --git a/package.json b/package.json index 2c58ab0..21abe85 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "immer": "^7.0.1", "lodash.debounce": "^4.0.8", "lodash.memoize": "^4.1.2", + "mariadb": "^2.4.1", "memorystore": "^1.6.2", "normalizr": "^3.6.0", "prop-types": "^15", @@ -52,6 +53,7 @@ "react-tabs": "^3.1.1", "redux": "^4.0.5", "scwp": "1.x", + "sequelize": "^6.2.4", "socket.io-redis": "^5.3.0", "source-map-support": "^0.5.11" }, diff --git a/yarn.lock b/yarn.lock index 6cd1f58..3c81272 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1552,6 +1552,11 @@ resolved "https://npm.i12e.cha0s.io/@types%2fcolor-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@types/geojson@^7946.0.7": + version "7946.0.7" + resolved "https://npm.i12e.cha0s.io/@types%2fgeojson/-/geojson-7946.0.7.tgz#c8fa532b60a0042219cdf173ca21a975ef0666ad" + integrity sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ== + "@types/glob@^7.1.1": version "7.1.2" resolved "https://npm.i12e.cha0s.io/@types%2fglob/-/glob-7.1.2.tgz#06ca26521353a545d94a0adc74f38a59d232c987" @@ -1598,6 +1603,11 @@ resolved "https://npm.i12e.cha0s.io/@types%2fnode/-/node-14.0.13.tgz#ee1128e881b874c371374c1f72201893616417c9" integrity sha512-rouEWBImiRaSJsVA+ITTFM6ZxibuAlTuNOCyxVbwreu6k6+ujs7DfnU9o+PShFhET78pMBl3eH+AGSI5eOTkPA== +"@types/node@^13.9.8": + version "13.13.12" + resolved "https://npm.i12e.cha0s.io/@types%2fnode/-/node-13.13.12.tgz#9c72e865380a7dc99999ea0ef20fc9635b503d20" + integrity sha512-zWz/8NEPxoXNT9YyF2osqyA9WjssZukYpgI4UYZpOjcyqwIUqWGkcCionaEb9Ki+FULyPyvNFpg/329Kd2/pbw== + "@types/prop-types@*": version "15.7.3" resolved "https://npm.i12e.cha0s.io/@types%2fprop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -1929,6 +1939,11 @@ ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" +any-promise@^1.3.0: + version "1.3.0" + resolved "https://npm.i12e.cha0s.io/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + anymatch@^2.0.0: version "2.0.0" resolved "https://npm.i12e.cha0s.io/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -3457,6 +3472,11 @@ delegates@^1.0.0: resolved "https://npm.i12e.cha0s.io/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= +denque@^1.4.1: + version "1.4.1" + resolved "https://npm.i12e.cha0s.io/denque/-/denque-1.4.1.tgz#6744ff7641c148c3f8a69c307e51235c1f4a37cf" + integrity sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ== + depd@~1.1.2: version "1.1.2" resolved "https://npm.i12e.cha0s.io/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -3661,6 +3681,11 @@ dot-case@^3.0.3: no-case "^3.0.3" tslib "^1.10.0" +dottie@^2.0.0: + version "2.0.2" + resolved "https://npm.i12e.cha0s.io/dottie/-/dottie-2.0.2.tgz#cc91c0726ce3a054ebf11c55fbc92a7f266dd154" + integrity sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg== + double-ended-queue@^2.1.0-0: version "2.1.0-0" resolved "https://npm.i12e.cha0s.io/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" @@ -5174,6 +5199,13 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.5.1: + version "0.5.2" + resolved "https://npm.i12e.cha0s.io/iconv-lite/-/iconv-lite-0.5.2.tgz#af6d628dccfb463b7364d97f715e4b74b8c8c2b8" + integrity sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag== + dependencies: + safer-buffer ">= 2.1.2 < 3" + icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://npm.i12e.cha0s.io/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" @@ -5286,6 +5318,11 @@ infer-owner@^1.0.3: resolved "https://npm.i12e.cha0s.io/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== +inflection@1.12.0: + version "1.12.0" + resolved "https://npm.i12e.cha0s.io/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" + integrity sha1-ogCTVlbW9fa8TcdQLhrstwMihBY= + inflight@^1.0.4: version "1.0.6" resolved "https://npm.i12e.cha0s.io/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -6079,6 +6116,11 @@ loglevel@^1.6.8: resolved "https://npm.i12e.cha0s.io/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171" integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA== +long@^4.0.0: + version "4.0.0" + resolved "https://npm.i12e.cha0s.io/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://npm.i12e.cha0s.io/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -6167,6 +6209,19 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +mariadb@^2.4.1: + version "2.4.1" + resolved "https://npm.i12e.cha0s.io/mariadb/-/mariadb-2.4.1.tgz#dc72d332af467ff653f2e11bbfae27ca131dc7af" + integrity sha512-WTM1EfUfqaLh8NdUdSqwX2HVf0mme9CDkfez35E9Txf+VvUVWOMbZY5dSqGhbDDiVXQFJefuwxb8WHUg6J9M2A== + dependencies: + "@types/geojson" "^7946.0.7" + "@types/node" "^13.9.8" + denque "^1.4.1" + iconv-lite "^0.5.1" + long "^4.0.0" + moment-timezone "^0.5.31" + please-upgrade-node "^3.2.0" + markdown-escapes@^1.0.0: version "1.0.4" resolved "https://npm.i12e.cha0s.io/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" @@ -6429,6 +6484,18 @@ mocha@^7: yargs-parser "13.1.2" yargs-unparser "1.6.0" +moment-timezone@^0.5.31: + version "0.5.31" + resolved "https://npm.i12e.cha0s.io/moment-timezone/-/moment-timezone-0.5.31.tgz#9c40d8c5026f0c7ab46eda3d63e49c155148de05" + integrity sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA== + dependencies: + moment ">= 2.9.0" + +"moment@>= 2.9.0", moment@^2.26.0: + version "2.27.0" + resolved "https://npm.i12e.cha0s.io/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" + integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== + move-concurrently@^1.0.1: version "1.0.1" resolved "https://npm.i12e.cha0s.io/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -7370,6 +7437,13 @@ pkg-up@^2.0.0: dependencies: find-up "^2.1.0" +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://npm.i12e.cha0s.io/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + dependencies: + semver-compare "^1.0.0" + poly-decomp@0.3.0: version "0.3.0" resolved "https://npm.i12e.cha0s.io/poly-decomp/-/poly-decomp-0.3.0.tgz#aa499289bbc1a4ca2213e966587fa5bffc1ca5f5" @@ -8221,6 +8295,13 @@ ret@~0.1.10: resolved "https://npm.i12e.cha0s.io/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +retry-as-promised@^3.2.0: + version "3.2.0" + resolved "https://npm.i12e.cha0s.io/retry-as-promised/-/retry-as-promised-3.2.0.tgz#769f63d536bec4783549db0777cb56dadd9d8543" + integrity sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg== + dependencies: + any-promise "^1.3.0" + retry@^0.12.0: version "0.12.0" resolved "https://npm.i12e.cha0s.io/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" @@ -8400,6 +8481,11 @@ selfsigned@^1.10.7: dependencies: node-forge "0.9.0" +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://npm.i12e.cha0s.io/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://npm.i12e.cha0s.io/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -8452,6 +8538,30 @@ sentence-case@^2.1.0: no-case "^2.2.0" upper-case-first "^1.1.2" +sequelize-pool@^6.0.0: + version "6.0.0" + resolved "https://npm.i12e.cha0s.io/sequelize-pool/-/sequelize-pool-6.0.0.tgz#2b2f6570fb633ecb38a338c4fc266c0e42ce2af7" + integrity sha512-D/VfOX2Z+6JTWqM73lhcqMXp1X4CeqRNVMlndvbOMtyjFAZ2kYzH7rGFGFrLO1r+RZQdc/h+3zQL4nd3cclNLg== + +sequelize@^6.2.4: + version "6.2.4" + resolved "https://npm.i12e.cha0s.io/sequelize/-/sequelize-6.2.4.tgz#d6903294177c1df5c2a8b89902d1f76789f0fd70" + integrity sha512-pgb3CC2Dk3kjZ4knuonF6ixpdBxJwPyjmE8metIJ3D6LovAQK+5QG/DesA43OPsWhgo2TYPZst8YsBk/RE1ZyA== + dependencies: + debug "^4.1.1" + dottie "^2.0.0" + inflection "1.12.0" + lodash "^4.17.15" + moment "^2.26.0" + moment-timezone "^0.5.31" + retry-as-promised "^3.2.0" + semver "^7.3.2" + sequelize-pool "^6.0.0" + toposort-class "^1.0.1" + uuid "^8.1.0" + validator "^10.11.0" + wkx "^0.5.0" + serialize-javascript@^2.1.2: version "2.1.2" resolved "https://npm.i12e.cha0s.io/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" @@ -9268,6 +9378,11 @@ toidentifier@1.0.0: resolved "https://npm.i12e.cha0s.io/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toposort-class@^1.0.1: + version "1.0.1" + resolved "https://npm.i12e.cha0s.io/toposort-class/-/toposort-class-1.0.1.tgz#7ffd1f78c8be28c3ba45cd4e1a3f5ee193bd9988" + integrity sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg= + tough-cookie@~2.5.0: version "2.5.0" resolved "https://npm.i12e.cha0s.io/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -9612,6 +9727,11 @@ uuid@^3.3.2, uuid@^3.4.0: resolved "https://npm.i12e.cha0s.io/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^8.1.0: + version "8.2.0" + resolved "https://npm.i12e.cha0s.io/uuid/-/uuid-8.2.0.tgz#cb10dd6b118e2dada7d0cd9730ba7417c93d920e" + integrity sha512-CYpGiFTUrmI6OBMkAdjSDM0k5h8SkkiTP4WAjQgDgNB1S3Ou9VBEvr6q0Kv2H1mMk7IWfxYGpMH5sd5AvcIV2Q== + v8-compile-cache@2.0.3: version "2.0.3" resolved "https://npm.i12e.cha0s.io/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" @@ -9635,6 +9755,11 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validator@^10.11.0: + version "10.11.0" + resolved "https://npm.i12e.cha0s.io/validator/-/validator-10.11.0.tgz#003108ea6e9a9874d31ccc9e5006856ccd76b228" + integrity sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw== + vary@~1.1.2: version "1.1.2" resolved "https://npm.i12e.cha0s.io/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -9876,6 +10001,13 @@ wide-align@1.1.3, wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" +wkx@^0.5.0: + version "0.5.0" + resolved "https://npm.i12e.cha0s.io/wkx/-/wkx-0.5.0.tgz#c6c37019acf40e517cc6b94657a25a3d4aa33e8c" + integrity sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg== + dependencies: + "@types/node" "*" + word-wrap@~1.2.3: version "1.2.3" resolved "https://npm.i12e.cha0s.io/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"