Compare commits
10 Commits
7a0480fa69
...
monorepo
| Author | SHA1 | Date | |
|---|---|---|---|
| 9a50b2c6cf | |||
| db9180721a | |||
| 1af1048670 | |||
| 148a3693b9 | |||
| efb1cba216 | |||
| 755cb06276 | |||
| a40390a30e | |||
| 9d5d49c9f2 | |||
| fe1cf2f171 | |||
| d3cb737972 |
65
.drone.yml
65
.drone.yml
@@ -1,65 +0,0 @@
|
|||||||
kind: pipeline
|
|
||||||
type: ssh
|
|
||||||
name: install dependencies
|
|
||||||
|
|
||||||
server:
|
|
||||||
host: warframe.center
|
|
||||||
user: webmaster
|
|
||||||
ssh_key:
|
|
||||||
from_secret: ssh_private_key
|
|
||||||
|
|
||||||
clone:
|
|
||||||
disable: true
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: fetch remote
|
|
||||||
commands:
|
|
||||||
- cd /home/webmaster/warframe-center && git fetch --all && git reset --hard origin/monorepo
|
|
||||||
- name: install dependencies
|
|
||||||
commands:
|
|
||||||
- export PATH=$PATH:/home/webmaster/.nvm/versions/node/v16.14.2/bin
|
|
||||||
- cd /home/webmaster/warframe-center && npm install
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
branch:
|
|
||||||
- monorepo
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: build
|
|
||||||
|
|
||||||
clone:
|
|
||||||
disable: true
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: bulid frontend
|
|
||||||
image: node:16
|
|
||||||
environment:
|
|
||||||
SSH_PRIVATE_KEY:
|
|
||||||
from_secret: ssh_private_key
|
|
||||||
MONGODB_URI:
|
|
||||||
from_secret: MONGODB_URI
|
|
||||||
commands:
|
|
||||||
- git clone -b monorepo https://git.radner.ru/anatolykopyl/warframe-center.git
|
|
||||||
- cd warframe-center
|
|
||||||
- npm install
|
|
||||||
- npm run build -w app
|
|
||||||
- mkdir ~/.ssh
|
|
||||||
- echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
|
|
||||||
- chmod 400 ~/.ssh/id_rsa
|
|
||||||
- scp -o StrictHostKeyChecking=no -r ./app/.next webmaster@warframe.center:~/warframe-center/app
|
|
||||||
- |
|
|
||||||
ssh -o StrictHostKeyChecking=no webmaster@warframe.center '
|
|
||||||
[ -s ~/.nvm/nvm.sh ] && source ~/.nvm/nvm.sh &&
|
|
||||||
nvm use default &&
|
|
||||||
pm2 restart warframe-center-app-3000
|
|
||||||
'
|
|
||||||
|
|
||||||
depends_on:
|
|
||||||
- install dependencies
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
branch:
|
|
||||||
- monorepo
|
|
||||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -2,3 +2,5 @@ node_modules
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
.vscode
|
.vscode
|
||||||
.env
|
.env
|
||||||
|
.idea
|
||||||
|
.yarn
|
||||||
|
|||||||
@@ -1,2 +1 @@
|
|||||||
MONGODB_URI=
|
MONGODB_URI=
|
||||||
YA_METRIKA_ID=
|
|
||||||
|
|||||||
@@ -2,31 +2,29 @@ import Router from 'next/router'
|
|||||||
import React, { useCallback, useEffect } from 'react'
|
import React, { useCallback, useEffect } from 'react'
|
||||||
import ym, { YMInitializer } from 'react-yandex-metrika'
|
import ym, { YMInitializer } from 'react-yandex-metrika'
|
||||||
|
|
||||||
const enabled =
|
|
||||||
process.env.NODE_ENV === 'production' &&
|
|
||||||
process.env.YA_METRIKA_ID
|
|
||||||
|
|
||||||
const WithYandexMetrika = (props) => {
|
const WithYandexMetrika = (props) => {
|
||||||
const { children } = props
|
const { children } = props
|
||||||
|
|
||||||
|
const enabled = process.env.NODE_ENV !== 'development'
|
||||||
|
|
||||||
const hit = useCallback((url) => {
|
const hit = useCallback((url) => {
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
ym('hit', url)
|
ym('hit', url)
|
||||||
} else {
|
} else {
|
||||||
console.log('%c[YandexMetrika](HIT)', 'color: orange', url)
|
console.log('%c[YandexMetrika](HIT)', 'color: orange', url)
|
||||||
}
|
}
|
||||||
}, [])
|
}, [enabled])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
hit(window.location.pathname + window.location.search)
|
hit(window.location.pathname + window.location.search)
|
||||||
Router.events.on('routeChangeComplete', hit)
|
Router.events.on('routeChangeComplete', hit)
|
||||||
}, [])
|
}, [hit])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{enabled && (
|
{enabled && (
|
||||||
<YMInitializer
|
<YMInitializer
|
||||||
accounts={[Number(process.env.YA_METRIKA_ID)]}
|
accounts={[87671663]}
|
||||||
options={{ webvisor: true, defer: true }}
|
options={{ webvisor: true, defer: true }}
|
||||||
version='2'
|
version='2'
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
apps: [{
|
|
||||||
name: 'warframe-center-app-3000',
|
|
||||||
script: 'npm run start',
|
|
||||||
watch: false
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
@@ -7,10 +7,12 @@ import Moment from 'react-moment'
|
|||||||
class Table extends Component {
|
class Table extends Component {
|
||||||
constructor ({ scanResults, t }) {
|
constructor ({ scanResults, t }) {
|
||||||
super()
|
super()
|
||||||
this.scanResults = scanResults && scanResults.map(row => ({
|
this.scanResults = scanResults
|
||||||
...row,
|
? scanResults.map(row => ({
|
||||||
id: row._id
|
...row,
|
||||||
}))
|
id: row._id
|
||||||
|
}))
|
||||||
|
: []
|
||||||
this.columns = [
|
this.columns = [
|
||||||
{
|
{
|
||||||
field: 'name',
|
field: 'name',
|
||||||
|
|||||||
9
gather/Dockerfile
Normal file
9
gather/Dockerfile
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
FROM node:20-alpine
|
||||||
|
LABEL authors="anatolykopyl"
|
||||||
|
|
||||||
|
WORKDIR /usr/node/app
|
||||||
|
COPY package*.json ./
|
||||||
|
|
||||||
|
RUN npm ci
|
||||||
|
|
||||||
|
COPY . .
|
||||||
9
gather/docker-compose.yml
Normal file
9
gather/docker-compose.yml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
warframe-center-gather:
|
||||||
|
image: git.radner.ru/anatolykopyl/warframe-center-gather:latest
|
||||||
|
container_name: warframe-center-gather
|
||||||
|
working_dir: /usr/node/app
|
||||||
|
command: >
|
||||||
|
sh -c "node src/index.js"
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
apps: [{
|
|
||||||
name: 'warframe-center-gather',
|
|
||||||
script: './src/index.js',
|
|
||||||
watch: true,
|
|
||||||
ignore_watch: ['node_modules', 'public'],
|
|
||||||
restart_delay: 1 * 60 * 1000
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
@@ -15,7 +15,6 @@
|
|||||||
"shared-stuff": "file:../shared-stuff"
|
"shared-stuff": "file:../shared-stuff"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"eslint-config-standard": "^16.0.3",
|
"eslint-config-standard": "^16.0.3"
|
||||||
"pm2": "^5.2.0"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,10 @@ async function initDB () {
|
|||||||
await mongoose.connect(process.env.MONGODB_URI)
|
await mongoose.connect(process.env.MONGODB_URI)
|
||||||
}
|
}
|
||||||
|
|
||||||
(async () => {
|
const main = async (firstLaunch) => {
|
||||||
await initDB()
|
if (firstLaunch) {
|
||||||
|
await initDB()
|
||||||
|
}
|
||||||
|
|
||||||
for (const item of items) {
|
for (const item of items) {
|
||||||
process.stdout.write(`Looking at ${item.name}: `)
|
process.stdout.write(`Looking at ${item.name}: `)
|
||||||
@@ -36,5 +38,13 @@ async function initDB () {
|
|||||||
console.log('✅')
|
console.log('✅')
|
||||||
}
|
}
|
||||||
|
|
||||||
await mongoose.disconnect()
|
await main()
|
||||||
})()
|
}
|
||||||
|
|
||||||
|
main(true)
|
||||||
|
|
||||||
|
process.on('SIGINT', () => {
|
||||||
|
mongoose.disconnect().then(() => {
|
||||||
|
process.exit()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|||||||
@@ -10,6 +10,10 @@ module.exports = class Part {
|
|||||||
|
|
||||||
async getPrice () {
|
async getPrice () {
|
||||||
const orders = await Api.getSortedOrders(this.urlPath)
|
const orders = await Api.getSortedOrders(this.urlPath)
|
||||||
|
if (orders.length === 0) {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
return Number(orders[0].platinum) * this.amount
|
return Number(orders[0].platinum) * this.amount
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
5525
package-lock.json
generated
5525
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
11
shared-stuff/dist/index.js
vendored
Normal file
11
shared-stuff/dist/index.js
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.models = void 0;
|
||||||
|
const ScanResult_1 = __importDefault(require("./models/ScanResult"));
|
||||||
|
const models = {
|
||||||
|
ScanResult: ScanResult_1.default
|
||||||
|
};
|
||||||
|
exports.models = models;
|
||||||
17
shared-stuff/dist/models/ScanResult.js
vendored
Normal file
17
shared-stuff/dist/models/ScanResult.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const mongoose_1 = __importDefault(require("mongoose"));
|
||||||
|
const scanResultSchema = new mongoose_1.default.Schema({
|
||||||
|
name: String,
|
||||||
|
fullName: String,
|
||||||
|
url: String,
|
||||||
|
partsPrice: Number,
|
||||||
|
setPrice: Number,
|
||||||
|
difference: Number
|
||||||
|
}, {
|
||||||
|
timestamps: true
|
||||||
|
});
|
||||||
|
exports.default = mongoose_1.default.models.ScanResult || mongoose_1.default.model('ScanResult', scanResultSchema);
|
||||||
Reference in New Issue
Block a user