Fix chainquery bugs and add initial metrics implementation
This commit is contained in:
parent
580ca10a8e
commit
860c61dc47
28 changed files with 599 additions and 187 deletions
|
@ -12,6 +12,16 @@ export function onHandleShowPageUri (params, url) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function onHandleShowHomepage (params, url) {
|
||||||
|
return {
|
||||||
|
type: actions.HANDLE_SHOW_HOMEPAGE,
|
||||||
|
data: {
|
||||||
|
...params,
|
||||||
|
url,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export function onRequestError (error) {
|
export function onRequestError (error) {
|
||||||
return {
|
return {
|
||||||
type: actions.REQUEST_ERROR,
|
type: actions.REQUEST_ERROR,
|
||||||
|
|
6
client/src/api/homepageApi.js
Normal file
6
client/src/api/homepageApi.js
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
import Request from '../utils/request';
|
||||||
|
|
||||||
|
export function getHomepageChannelsData (host, name, id) {
|
||||||
|
const url = `${host}/api/homepage/data/channels`;
|
||||||
|
return Request(url);
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
// request actions
|
// request actions
|
||||||
export const HANDLE_SHOW_URI = 'HANDLE_SHOW_URI';
|
export const HANDLE_SHOW_URI = 'HANDLE_SHOW_URI';
|
||||||
|
export const HANDLE_SHOW_HOMEPAGE = 'HANDLE_SHOW_HOMEPAGE';
|
||||||
export const REQUEST_ERROR = 'REQUEST_ERROR';
|
export const REQUEST_ERROR = 'REQUEST_ERROR';
|
||||||
export const REQUEST_UPDATE = 'REQUEST_UPDATE';
|
export const REQUEST_UPDATE = 'REQUEST_UPDATE';
|
||||||
export const ASSET_REQUEST_NEW = 'ASSET_REQUEST_NEW';
|
export const ASSET_REQUEST_NEW = 'ASSET_REQUEST_NEW';
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { onHandleShowPageUri } from '../../actions/show';
|
import { onHandleShowHomepage } from '../../actions/show';
|
||||||
import View from './view';
|
import View from './view';
|
||||||
|
|
||||||
const mapStateToProps = ({ show }) => {
|
const mapStateToProps = ({ show }) => {
|
||||||
|
@ -10,7 +10,7 @@ const mapStateToProps = ({ show }) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const mapDispatchToProps = {
|
const mapDispatchToProps = {
|
||||||
onHandleShowPageUri,
|
onHandleShowHomepage,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default connect(mapStateToProps, mapDispatchToProps)(View);
|
export default connect(mapStateToProps, mapDispatchToProps)(View);
|
||||||
|
|
|
@ -4,6 +4,16 @@ import PageLayout from '@components/PageLayout';
|
||||||
import PublishTool from '@containers/PublishTool';
|
import PublishTool from '@containers/PublishTool';
|
||||||
|
|
||||||
class HomePage extends React.Component {
|
class HomePage extends React.Component {
|
||||||
|
componentDidMount () {
|
||||||
|
this.props.onHandleShowHomepage(this.props.match.params);
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillReceiveProps (nextProps) {
|
||||||
|
if (nextProps.match.params !== this.props.match.params) {
|
||||||
|
this.props.onHandleShowHomepage(nextProps.match.params);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
return (
|
return (
|
||||||
<PageLayout
|
<PageLayout
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { all } from 'redux-saga/effects';
|
import { all } from 'redux-saga/effects';
|
||||||
import { watchHandleShowPageUri } from './show_uri';
|
import { watchHandleShowPageUri, watchHandleShowHomepage } from './show_uri';
|
||||||
import { watchNewAssetRequest } from './show_asset';
|
import { watchNewAssetRequest } from './show_asset';
|
||||||
import { watchNewChannelRequest, watchUpdateChannelClaims } from './show_channel';
|
import { watchNewChannelRequest, watchUpdateChannelClaims } from './show_channel';
|
||||||
import { watchFileIsRequested } from './file';
|
import { watchFileIsRequested } from './file';
|
||||||
|
@ -13,6 +13,7 @@ import { watchChannelLogout } from './logoutChannel';
|
||||||
export function * rootSaga () {
|
export function * rootSaga () {
|
||||||
yield all([
|
yield all([
|
||||||
watchHandleShowPageUri(),
|
watchHandleShowPageUri(),
|
||||||
|
watchHandleShowHomepage(),
|
||||||
watchNewAssetRequest(),
|
watchNewAssetRequest(),
|
||||||
watchNewChannelRequest(),
|
watchNewChannelRequest(),
|
||||||
watchUpdateChannelClaims(),
|
watchUpdateChannelClaims(),
|
||||||
|
|
|
@ -56,6 +56,19 @@ export function * handleShowPageUri (action) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export function * handleShowPageHomepage (action) {
|
||||||
|
const { identifier, claim } = action.data;
|
||||||
|
if (identifier) {
|
||||||
|
return yield call(parseAndUpdateIdentifierAndClaim, identifier, claim);
|
||||||
|
} else if (claim) {
|
||||||
|
yield call(parseAndUpdateClaimOnly, claim);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
export function * watchHandleShowPageUri () {
|
export function * watchHandleShowPageUri () {
|
||||||
yield takeLatest(actions.HANDLE_SHOW_URI, handleShowPageUri);
|
yield takeLatest(actions.HANDLE_SHOW_URI, handleShowPageUri);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export function * watchHandleShowHomepage () {
|
||||||
|
yield takeLatest(actions.HANDLE_SHOW_HOMEPAGE, handleShowPageHomepage);
|
||||||
|
};
|
||||||
|
|
140
package-lock.json
generated
140
package-lock.json
generated
|
@ -6400,6 +6400,23 @@
|
||||||
"buffer-alloc": "1.2.0"
|
"buffer-alloc": "1.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"isemail": {
|
||||||
|
"version": "3.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/isemail/-/isemail-3.1.3.tgz",
|
||||||
|
"integrity": "sha512-5xbsG5wYADIcB+mfLsd+nst1V/D+I7EU7LEZPo2GOIMu4JzfcRs5yQoypP4avA7QtUqgxYLKBYNv4IdzBmbhdw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"punycode": "2.1.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"punycode": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
||||||
|
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"isexe": {
|
"isexe": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
||||||
|
@ -6424,6 +6441,25 @@
|
||||||
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
|
||||||
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
|
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
|
||||||
},
|
},
|
||||||
|
"joi": {
|
||||||
|
"version": "13.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/joi/-/joi-13.7.0.tgz",
|
||||||
|
"integrity": "sha512-xuY5VkHfeOYK3Hdi91ulocfuFopwgbSORmIwzcwHKESQhC7w1kD5jaVSPnqDxS2I8t3RZ9omCKAxNwXN5zG1/Q==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"hoek": "5.0.4",
|
||||||
|
"isemail": "3.1.3",
|
||||||
|
"topo": "3.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"hoek": {
|
||||||
|
"version": "5.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.4.tgz",
|
||||||
|
"integrity": "sha512-Alr4ZQgoMlnere5FZJsIyfIjORBqZll5POhDsF4q64dPuJR6rNxXdDxtHSQq8OXRurhmx+PWYEE8bXRROY8h0w==",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"js-base64": {
|
"js-base64": {
|
||||||
"version": "2.4.9",
|
"version": "2.4.9",
|
||||||
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.9.tgz",
|
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.9.tgz",
|
||||||
|
@ -12088,6 +12124,12 @@
|
||||||
"is-promise": "2.1.0"
|
"is-promise": "2.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"rx": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz",
|
||||||
|
"integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"rx-lite": {
|
"rx-lite": {
|
||||||
"version": "4.0.8",
|
"version": "4.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
|
||||||
|
@ -13361,6 +13403,23 @@
|
||||||
"repeat-string": "1.6.1"
|
"repeat-string": "1.6.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"topo": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/topo/-/topo-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-Tlu1fGlR90iCdIPURqPiufqAlCZYzLjHYVVbcFWDMcX7+tK8hdZWAfsMrD/pBul9jqHHwFjNdf1WaxA9vTRRhw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"hoek": "5.0.4"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"hoek": {
|
||||||
|
"version": "5.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.4.tgz",
|
||||||
|
"integrity": "sha512-Alr4ZQgoMlnere5FZJsIyfIjORBqZll5POhDsF4q64dPuJR6rNxXdDxtHSQq8OXRurhmx+PWYEE8bXRROY8h0w==",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"toposort-class": {
|
"toposort-class": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz",
|
||||||
|
@ -13947,6 +14006,87 @@
|
||||||
"indexof": "0.0.1"
|
"indexof": "0.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"wait-on": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/wait-on/-/wait-on-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-yjYwMvnOhA3PTghvzPQAmT2TSVvBMbOdBRRjMPfBD6FU5si/PkAsI8P3X5sh9ntkYjZvPQLpQRpDUyax5h4COg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"core-js": "2.5.7",
|
||||||
|
"joi": "13.7.0",
|
||||||
|
"minimist": "1.2.0",
|
||||||
|
"request": "2.88.0",
|
||||||
|
"rx": "4.1.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"core-js": {
|
||||||
|
"version": "2.5.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
|
||||||
|
"integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"har-validator": {
|
||||||
|
"version": "5.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
|
||||||
|
"integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ajv": "5.5.2",
|
||||||
|
"har-schema": "2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minimist": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||||
|
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"oauth-sign": {
|
||||||
|
"version": "0.9.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
|
||||||
|
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"request": {
|
||||||
|
"version": "2.88.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
|
||||||
|
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"aws-sign2": "0.7.0",
|
||||||
|
"aws4": "1.8.0",
|
||||||
|
"caseless": "0.12.0",
|
||||||
|
"combined-stream": "1.0.6",
|
||||||
|
"extend": "3.0.2",
|
||||||
|
"forever-agent": "0.6.1",
|
||||||
|
"form-data": "2.3.2",
|
||||||
|
"har-validator": "5.1.0",
|
||||||
|
"http-signature": "1.2.0",
|
||||||
|
"is-typedarray": "1.0.0",
|
||||||
|
"isstream": "0.1.2",
|
||||||
|
"json-stringify-safe": "5.0.1",
|
||||||
|
"mime-types": "2.1.20",
|
||||||
|
"oauth-sign": "0.9.0",
|
||||||
|
"performance-now": "2.1.0",
|
||||||
|
"qs": "6.5.2",
|
||||||
|
"safe-buffer": "5.1.2",
|
||||||
|
"tough-cookie": "2.4.3",
|
||||||
|
"tunnel-agent": "0.6.0",
|
||||||
|
"uuid": "3.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tough-cookie": {
|
||||||
|
"version": "2.4.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
|
||||||
|
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"psl": "1.1.29",
|
||||||
|
"punycode": "1.4.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"warning": {
|
"warning": {
|
||||||
"version": "4.0.2",
|
"version": "4.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.2.tgz",
|
||||||
|
|
|
@ -122,6 +122,7 @@
|
||||||
"sass-loader": "^7.1.0",
|
"sass-loader": "^7.1.0",
|
||||||
"sequelize-cli": "^4.0.0",
|
"sequelize-cli": "^4.0.0",
|
||||||
"style-loader": "^0.21.0",
|
"style-loader": "^0.21.0",
|
||||||
"url-loader": "^1.0.1"
|
"url-loader": "^1.0.1",
|
||||||
|
"wait-on": "^3.1.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var AbnormalClaimModel = (sequelize, {
|
var AbnormalClaimModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'abnormal_claim',
|
'abnormal_claim',
|
||||||
{
|
{
|
||||||
|
@ -19,7 +24,7 @@ var AbnormalClaimModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
is_update: {
|
is_update: {
|
||||||
type: INTEGER,
|
type: BOOLEAN,
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
block_hash: {
|
block_hash: {
|
||||||
|
@ -47,11 +52,11 @@ var AbnormalClaimModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created_at: {
|
created_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
modified_at: {
|
modified_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -73,7 +78,12 @@ var abnormalClaimTable = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var AddressModel = (sequelize, {
|
var AddressModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'address',
|
'address',
|
||||||
{
|
{
|
||||||
|
@ -87,15 +97,15 @@ var AddressModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
first_seen: {
|
first_seen: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created_at: {
|
created_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
modified_at: {
|
modified_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -117,7 +127,12 @@ var addressTable = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var BlockModel = (sequelize, {
|
var BlockModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'block',
|
'block',
|
||||||
{
|
{
|
||||||
|
@ -195,11 +210,11 @@ var BlockModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created_at: {
|
created_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
modified_at: {
|
modified_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -257,7 +272,12 @@ const getterMethods$3 = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var ClaimModel = (sequelize, {
|
var ClaimModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'claim',
|
'claim',
|
||||||
{
|
{
|
||||||
|
@ -310,14 +330,6 @@ var ClaimModel = (sequelize, {
|
||||||
type: STRING,
|
type: STRING,
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
value_as_hex: {
|
|
||||||
type: STRING,
|
|
||||||
set() { },
|
|
||||||
},
|
|
||||||
value_as_json: {
|
|
||||||
type: STRING,
|
|
||||||
set() { },
|
|
||||||
},
|
|
||||||
valid_at_height: {
|
valid_at_height: {
|
||||||
type: INTEGER,
|
type: INTEGER,
|
||||||
set() { },
|
set() { },
|
||||||
|
@ -343,7 +355,7 @@ var ClaimModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
is_nsfw: {
|
is_nsfw: {
|
||||||
type: INTEGER,
|
type: BOOLEAN,
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
language: {
|
language: {
|
||||||
|
@ -367,7 +379,7 @@ var ClaimModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
is_filtered: {
|
is_filtered: {
|
||||||
type: INTEGER,
|
type: BOOLEAN,
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
bid_state: {
|
bid_state: {
|
||||||
|
@ -375,11 +387,11 @@ var ClaimModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created_at: {
|
created_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
modified_at: {
|
modified_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
fee_address: {
|
fee_address: {
|
||||||
|
@ -409,7 +421,12 @@ var claimTable = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var InputModel = (sequelize, {
|
var InputModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'input',
|
'input',
|
||||||
{
|
{
|
||||||
|
@ -431,7 +448,7 @@ var InputModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
is_coinbase: {
|
is_coinbase: {
|
||||||
type: INTEGER,
|
type: BOOLEAN,
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
coinbase: {
|
coinbase: {
|
||||||
|
@ -443,7 +460,7 @@ var InputModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
prevout_n: {
|
prevout_n: {
|
||||||
type: INTEGER,
|
type: INTEGER.UNSIGNED,
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
prevout_spend_updated: {
|
prevout_spend_updated: {
|
||||||
|
@ -467,11 +484,11 @@ var InputModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created: {
|
created: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
modified: {
|
modified: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -493,7 +510,12 @@ var inputTable = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var OutputModel = (sequelize, {
|
var OutputModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'output',
|
'output',
|
||||||
{
|
{
|
||||||
|
@ -539,7 +561,7 @@ var OutputModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
is_spent: {
|
is_spent: {
|
||||||
type: INTEGER,
|
type: BOOLEAN,
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
spent_by_input_id: {
|
spent_by_input_id: {
|
||||||
|
@ -547,11 +569,11 @@ var OutputModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created_at: {
|
created_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
modified_at: {
|
modified_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
claim_id: {
|
claim_id: {
|
||||||
|
@ -577,7 +599,12 @@ var outputTable = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var SupportModel = (sequelize, {
|
var SupportModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'support',
|
'support',
|
||||||
{
|
{
|
||||||
|
@ -607,11 +634,11 @@ var SupportModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created_at: {
|
created_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
modified_at: {
|
modified_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -633,7 +660,12 @@ var supportTable = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var TransactionAddressModel = (sequelize, {
|
var TransactionAddressModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'transaction_address',
|
'transaction_address',
|
||||||
{
|
{
|
||||||
|
@ -674,7 +706,12 @@ var transactionAddressTable = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var TransactionModel = (sequelize, {
|
var TransactionModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'transaction',
|
'transaction',
|
||||||
{
|
{
|
||||||
|
@ -716,7 +753,7 @@ var TransactionModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
lock_time: {
|
lock_time: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
raw: {
|
raw: {
|
||||||
|
@ -724,15 +761,15 @@ var TransactionModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created_at: {
|
created_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
modified_at: {
|
modified_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created_time: {
|
created_time: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() {},
|
set() {},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -820,7 +857,7 @@ var claimQueries = (db, table) => ({
|
||||||
return await table.findAll({
|
return await table.findAll({
|
||||||
where: { publisher_id: channelClaimId },
|
where: { publisher_id: channelClaimId },
|
||||||
order: [['height', 'DESC']],
|
order: [['height', 'DESC']],
|
||||||
raw : true, // returns an array of only data, not an array of instances
|
raw : false, // returns an array of only data, not an array of instances
|
||||||
})
|
})
|
||||||
.then(channelClaimsArray => {
|
.then(channelClaimsArray => {
|
||||||
if(channelClaimsArray.length === 0) {
|
if(channelClaimsArray.length === 0) {
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var AbnormalClaimModel = (sequelize, {
|
var AbnormalClaimModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'abnormal_claim',
|
'abnormal_claim',
|
||||||
{
|
{
|
||||||
|
@ -19,7 +24,7 @@ var AbnormalClaimModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
is_update: {
|
is_update: {
|
||||||
type: INTEGER,
|
type: BOOLEAN,
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
block_hash: {
|
block_hash: {
|
||||||
|
@ -47,11 +52,11 @@ var AbnormalClaimModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created_at: {
|
created_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
modified_at: {
|
modified_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -73,7 +78,12 @@ var abnormalClaimTable = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var AddressModel = (sequelize, {
|
var AddressModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'address',
|
'address',
|
||||||
{
|
{
|
||||||
|
@ -87,15 +97,15 @@ var AddressModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
first_seen: {
|
first_seen: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created_at: {
|
created_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
modified_at: {
|
modified_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -117,7 +127,12 @@ var addressTable = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var BlockModel = (sequelize, {
|
var BlockModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'block',
|
'block',
|
||||||
{
|
{
|
||||||
|
@ -195,11 +210,11 @@ var BlockModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created_at: {
|
created_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
modified_at: {
|
modified_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -257,7 +272,12 @@ const getterMethods$3 = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var ClaimModel = (sequelize, {
|
var ClaimModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'claim',
|
'claim',
|
||||||
{
|
{
|
||||||
|
@ -310,14 +330,6 @@ var ClaimModel = (sequelize, {
|
||||||
type: STRING,
|
type: STRING,
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
value_as_hex: {
|
|
||||||
type: STRING,
|
|
||||||
set() { },
|
|
||||||
},
|
|
||||||
value_as_json: {
|
|
||||||
type: STRING,
|
|
||||||
set() { },
|
|
||||||
},
|
|
||||||
valid_at_height: {
|
valid_at_height: {
|
||||||
type: INTEGER,
|
type: INTEGER,
|
||||||
set() { },
|
set() { },
|
||||||
|
@ -343,7 +355,7 @@ var ClaimModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
is_nsfw: {
|
is_nsfw: {
|
||||||
type: INTEGER,
|
type: BOOLEAN,
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
language: {
|
language: {
|
||||||
|
@ -367,7 +379,7 @@ var ClaimModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
is_filtered: {
|
is_filtered: {
|
||||||
type: INTEGER,
|
type: BOOLEAN,
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
bid_state: {
|
bid_state: {
|
||||||
|
@ -375,11 +387,11 @@ var ClaimModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created_at: {
|
created_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
modified_at: {
|
modified_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
fee_address: {
|
fee_address: {
|
||||||
|
@ -409,7 +421,12 @@ var claimTable = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var InputModel = (sequelize, {
|
var InputModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'input',
|
'input',
|
||||||
{
|
{
|
||||||
|
@ -431,7 +448,7 @@ var InputModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
is_coinbase: {
|
is_coinbase: {
|
||||||
type: INTEGER,
|
type: BOOLEAN,
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
coinbase: {
|
coinbase: {
|
||||||
|
@ -443,7 +460,7 @@ var InputModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
prevout_n: {
|
prevout_n: {
|
||||||
type: INTEGER,
|
type: INTEGER.UNSIGNED,
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
prevout_spend_updated: {
|
prevout_spend_updated: {
|
||||||
|
@ -467,11 +484,11 @@ var InputModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created: {
|
created: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
modified: {
|
modified: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -493,7 +510,12 @@ var inputTable = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var OutputModel = (sequelize, {
|
var OutputModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'output',
|
'output',
|
||||||
{
|
{
|
||||||
|
@ -539,7 +561,7 @@ var OutputModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
is_spent: {
|
is_spent: {
|
||||||
type: INTEGER,
|
type: BOOLEAN,
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
spent_by_input_id: {
|
spent_by_input_id: {
|
||||||
|
@ -547,11 +569,11 @@ var OutputModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created_at: {
|
created_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
modified_at: {
|
modified_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
claim_id: {
|
claim_id: {
|
||||||
|
@ -577,7 +599,12 @@ var outputTable = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var SupportModel = (sequelize, {
|
var SupportModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'support',
|
'support',
|
||||||
{
|
{
|
||||||
|
@ -607,11 +634,11 @@ var SupportModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created_at: {
|
created_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
modified_at: {
|
modified_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -633,7 +660,12 @@ var supportTable = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var TransactionAddressModel = (sequelize, {
|
var TransactionAddressModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'transaction_address',
|
'transaction_address',
|
||||||
{
|
{
|
||||||
|
@ -674,7 +706,12 @@ var transactionAddressTable = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var TransactionModel = (sequelize, {
|
var TransactionModel = (sequelize, {
|
||||||
STRING, BOOLEAN, INTEGER, TEXT, DECIMAL
|
BOOLEAN,
|
||||||
|
DATE,
|
||||||
|
DECIMAL,
|
||||||
|
INTEGER,
|
||||||
|
STRING,
|
||||||
|
TEXT,
|
||||||
}) => sequelize.define(
|
}) => sequelize.define(
|
||||||
'transaction',
|
'transaction',
|
||||||
{
|
{
|
||||||
|
@ -716,7 +753,7 @@ var TransactionModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
lock_time: {
|
lock_time: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
raw: {
|
raw: {
|
||||||
|
@ -724,15 +761,15 @@ var TransactionModel = (sequelize, {
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created_at: {
|
created_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
modified_at: {
|
modified_at: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
created_time: {
|
created_time: {
|
||||||
type: INTEGER,
|
type: DATE(6),
|
||||||
set() {},
|
set() {},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -799,7 +836,7 @@ const isShortClaimId = (claimId) => {
|
||||||
return (claimId && (claimId.length < 40));
|
return (claimId && (claimId.length < 40));
|
||||||
};
|
};
|
||||||
|
|
||||||
var claimQueries = (db, table) => ({
|
var claimQueries = (db, table, sequelize) => ({
|
||||||
|
|
||||||
getShortClaimIdFromLongClaimId: async (claimId, claimName) => {
|
getShortClaimIdFromLongClaimId: async (claimId, claimName) => {
|
||||||
logger$1.debug(`claim.getShortClaimIdFromLongClaimId for ${claimName}#${claimId}`);
|
logger$1.debug(`claim.getShortClaimIdFromLongClaimId for ${claimName}#${claimId}`);
|
||||||
|
@ -820,7 +857,6 @@ var claimQueries = (db, table) => ({
|
||||||
return await table.findAll({
|
return await table.findAll({
|
||||||
where: { publisher_id: channelClaimId },
|
where: { publisher_id: channelClaimId },
|
||||||
order: [['height', 'DESC']],
|
order: [['height', 'DESC']],
|
||||||
raw : true, // returns an array of only data, not an array of instances
|
|
||||||
})
|
})
|
||||||
.then(channelClaimsArray => {
|
.then(channelClaimsArray => {
|
||||||
if(channelClaimsArray.length === 0) {
|
if(channelClaimsArray.length === 0) {
|
||||||
|
@ -1025,7 +1061,7 @@ if (!database || !username || !password) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// set sequelize options
|
// set sequelize options
|
||||||
const sequelize$1 = new Sequelize(database, username, password, {
|
const sequelize = new Sequelize(database, username, password, {
|
||||||
host : host$1,
|
host : host$1,
|
||||||
import : port,
|
import : port,
|
||||||
dialect : 'mysql',
|
dialect : 'mysql',
|
||||||
|
@ -1049,8 +1085,8 @@ for(let i = 0; i < DATABASE_STRUCTURE_KEYS.length; i++) {
|
||||||
let dbKey = DATABASE_STRUCTURE_KEYS[i];
|
let dbKey = DATABASE_STRUCTURE_KEYS[i];
|
||||||
let currentData = DATABASE_STRUCTURE[dbKey];
|
let currentData = DATABASE_STRUCTURE[dbKey];
|
||||||
|
|
||||||
db[dbKey] = currentData.table.createModel(sequelize$1, Sequelize);
|
db[dbKey] = currentData.table.createModel(sequelize, Sequelize);
|
||||||
db[dbKey].queries = currentData.queries(db, db[dbKey]);
|
db[dbKey].queries = currentData.queries(db, db[dbKey], sequelize);
|
||||||
}
|
}
|
||||||
|
|
||||||
// run model.association for each model in the db object that has an association
|
// run model.association for each model in the db object that has an association
|
||||||
|
@ -1063,7 +1099,7 @@ DATABASE_STRUCTURE_KEYS.forEach(modelName => {
|
||||||
});
|
});
|
||||||
|
|
||||||
// establish mysql connection
|
// establish mysql connection
|
||||||
sequelize$1
|
sequelize
|
||||||
.authenticate()
|
.authenticate()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
logger$2.info('Sequelize has established mysql connection for chainquery successfully.');
|
logger$2.info('Sequelize has established mysql connection for chainquery successfully.');
|
||||||
|
|
|
@ -98,7 +98,7 @@ for(let i = 0; i < DATABASE_STRUCTURE_KEYS.length; i++) {
|
||||||
let currentData = DATABASE_STRUCTURE[dbKey];
|
let currentData = DATABASE_STRUCTURE[dbKey];
|
||||||
|
|
||||||
db[dbKey] = currentData.table.createModel(sequelize, Sequelize);
|
db[dbKey] = currentData.table.createModel(sequelize, Sequelize);
|
||||||
db[dbKey].queries = currentData.queries(db, db[dbKey]);
|
db[dbKey].queries = currentData.queries(db, db[dbKey], sequelize);
|
||||||
}
|
}
|
||||||
|
|
||||||
// run model.association for each model in the db object that has an association
|
// run model.association for each model in the db object that has an association
|
||||||
|
|
|
@ -93,14 +93,6 @@ export default (sequelize, {
|
||||||
type: STRING,
|
type: STRING,
|
||||||
set() { },
|
set() { },
|
||||||
},
|
},
|
||||||
value_as_hex: {
|
|
||||||
type: STRING,
|
|
||||||
set() { },
|
|
||||||
},
|
|
||||||
value_as_json: {
|
|
||||||
type: STRING,
|
|
||||||
set() { },
|
|
||||||
},
|
|
||||||
valid_at_height: {
|
valid_at_height: {
|
||||||
type: INTEGER,
|
type: INTEGER,
|
||||||
set() { },
|
set() { },
|
||||||
|
|
|
@ -32,7 +32,7 @@ const isShortClaimId = (claimId) => {
|
||||||
return (claimId && (claimId.length < 40));
|
return (claimId && (claimId.length < 40));
|
||||||
}
|
}
|
||||||
|
|
||||||
export default (db, table) => ({
|
export default (db, table, sequelize) => ({
|
||||||
|
|
||||||
getShortClaimIdFromLongClaimId: async (claimId, claimName) => {
|
getShortClaimIdFromLongClaimId: async (claimId, claimName) => {
|
||||||
logger.debug(`claim.getShortClaimIdFromLongClaimId for ${claimName}#${claimId}`);
|
logger.debug(`claim.getShortClaimIdFromLongClaimId for ${claimName}#${claimId}`);
|
||||||
|
@ -53,7 +53,6 @@ export default (db, table) => ({
|
||||||
return await table.findAll({
|
return await table.findAll({
|
||||||
where: { publisher_id: channelClaimId },
|
where: { publisher_id: channelClaimId },
|
||||||
order: [['height', 'DESC']],
|
order: [['height', 'DESC']],
|
||||||
raw : true, // returns an array of only data, not an array of instances
|
|
||||||
})
|
})
|
||||||
.then(channelClaimsArray => {
|
.then(channelClaimsArray => {
|
||||||
if(channelClaimsArray.length === 0) {
|
if(channelClaimsArray.length === 0) {
|
||||||
|
|
|
@ -13,7 +13,7 @@ const claimData = ({ ip, originalUrl, body, params }, res) => {
|
||||||
const claimName = params.claimName;
|
const claimName = params.claimName;
|
||||||
let claimId = params.claimId;
|
let claimId = params.claimId;
|
||||||
if (claimId === 'none') claimId = null;
|
if (claimId === 'none') claimId = null;
|
||||||
chainquery.claim.queries.resolveClaim(claimName, claimId)
|
chainquery.claim.queries.resolveClaim(claimName, claimId).catch(() => {})
|
||||||
.then(claimInfo => {
|
.then(claimInfo => {
|
||||||
if (!claimInfo) {
|
if (!claimInfo) {
|
||||||
// Not found remote, try local
|
// Not found remote, try local
|
||||||
|
@ -28,6 +28,7 @@ const claimData = ({ ip, originalUrl, body, params }, res) => {
|
||||||
message: 'No claim could be found',
|
message: 'No claim could be found',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
res.status(200).json({
|
res.status(200).json({
|
||||||
success: true,
|
success: true,
|
||||||
data : getClaimData(claimInfo),
|
data : getClaimData(claimInfo),
|
||||||
|
|
|
@ -4,6 +4,7 @@ const { handleErrorResponse } = require('../../../utils/errorHandlers.js');
|
||||||
const getClaimData = require('server/utils/getClaimData');
|
const getClaimData = require('server/utils/getClaimData');
|
||||||
const chainquery = require('chainquery');
|
const chainquery = require('chainquery');
|
||||||
const db = require('../../../../models');
|
const db = require('../../../../models');
|
||||||
|
const waitOn = require('wait-on');
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
@ -11,60 +12,46 @@ const db = require('../../../../models');
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const claimGet = ({ ip, originalUrl, params }, res) => {
|
const claimGet = async ({ ip, originalUrl, params }, res) => {
|
||||||
const name = params.name;
|
const name = params.name;
|
||||||
const claimId = params.claimId;
|
const claimId = params.claimId;
|
||||||
let resolveResult;
|
|
||||||
let getResult;
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
let claimData = await chainquery.claim.queries.resolveClaim(name, claimId).catch(() => {});
|
||||||
|
if(!claimData) {
|
||||||
|
claimData = await db.Claim.resolveClaim(name, claimId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!claimData) {
|
||||||
|
throw new Error('No matching uri found in Claim table');
|
||||||
|
}
|
||||||
|
|
||||||
chainquery.claim.queries.resolveClaim(name, claimId)
|
let lbrynetResult = await getClaim(`${name}#${claimId}`);
|
||||||
.then(result => {
|
if(!lbrynetResult) {
|
||||||
if (!result) {
|
throw new Error(`Unable to Get ${name}#${claimId}`);
|
||||||
// could not find remote, return false to try local
|
}
|
||||||
return false;
|
|
||||||
}
|
let fileData = await createFileRecordDataAfterGet(getClaimData(claimData), lbrynetResult);
|
||||||
return resolveResult = result;
|
const upsertCriteria = { name, claimId };
|
||||||
})
|
await db.upsert(db.File, fileData, upsertCriteria, 'File');
|
||||||
.then(result => {
|
|
||||||
if (result === false) {
|
try {
|
||||||
// Could not find remote, try local
|
await waitOn({
|
||||||
return db.Claim.resolveClaim(name, claimId);
|
resources: [ lbrynetResult.file_name ],
|
||||||
}
|
delay: 100,
|
||||||
return result;
|
timeout: 10000, // 10 seconds
|
||||||
})
|
|
||||||
.then(result => {
|
|
||||||
if (!result) {
|
|
||||||
throw new Error('No matching uri found in Claim table');
|
|
||||||
}
|
|
||||||
return resolveResult = result;
|
|
||||||
})
|
|
||||||
.then(result => getClaim(`${name}#${claimId}`))
|
|
||||||
.then(result => {
|
|
||||||
if (!result) {
|
|
||||||
throw new Error(`Unable to Get ${name}#${claimId}`);
|
|
||||||
}
|
|
||||||
getResult = result;
|
|
||||||
if (result.completed) {
|
|
||||||
return createFileRecordDataAfterGet(getClaimData(resolveResult), getResult)
|
|
||||||
.then(fileData => {
|
|
||||||
const upsertCriteria = {name, claimId};
|
|
||||||
return db.upsert(db.File, fileData, upsertCriteria, 'File');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
const { message, completed } = getResult;
|
|
||||||
res.status(200).json({
|
|
||||||
success: true,
|
|
||||||
message,
|
|
||||||
completed,
|
|
||||||
});
|
});
|
||||||
})
|
} catch (e) {}
|
||||||
.catch(error => {
|
|
||||||
handleErrorResponse(originalUrl, ip, error, res);
|
const { message, completed } = lbrynetResult;
|
||||||
|
res.status(200).json({
|
||||||
|
success: true,
|
||||||
|
message,
|
||||||
|
completed,
|
||||||
});
|
});
|
||||||
|
} catch(error) {
|
||||||
|
handleErrorResponse(originalUrl, ip, error, res);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = claimGet;
|
module.exports = claimGet;
|
||||||
|
|
|
@ -20,14 +20,15 @@ const claimLongId = ({ ip, originalUrl, body, params }, res) => {
|
||||||
const channelClaimId = body.channelClaimId;
|
const channelClaimId = body.channelClaimId;
|
||||||
const claimName = body.claimName;
|
const claimName = body.claimName;
|
||||||
let claimId = body.claimId;
|
let claimId = body.claimId;
|
||||||
|
|
||||||
getClaimId(channelName, channelClaimId, claimName, claimId)
|
getClaimId(channelName, channelClaimId, claimName, claimId)
|
||||||
.then(fullClaimId => {
|
.then(fullClaimId => {
|
||||||
claimId = fullClaimId;
|
claimId = fullClaimId;
|
||||||
return chainquery.claim.queries.getOutpoint(claimName, fullClaimId);
|
return chainquery.claim.queries.getOutpoint(claimName, fullClaimId).catch(() => {});
|
||||||
})
|
})
|
||||||
.then(outpointResult => {
|
.then(outpointResult => {
|
||||||
if (!outpointResult) {
|
if (!outpointResult) {
|
||||||
return db.Claim.getOutpoint(claimName, fullClaimId);
|
return db.Claim.getOutpoint(claimName, claimId);
|
||||||
}
|
}
|
||||||
return outpointResult;
|
return outpointResult;
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
const { handleErrorResponse } = require('../../../utils/errorHandlers.js');
|
const { handleErrorResponse } = require('../../../utils/errorHandlers.js');
|
||||||
const db = require('../../../../models');
|
const db = require('../../../../models');
|
||||||
|
const chainquery = require('chainquery');
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
@ -7,14 +8,18 @@ const db = require('../../../../models');
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const claimShortId = ({ ip, originalUrl, body, params }, res) => {
|
const claimShortId = async ({ ip, originalUrl, body, params }, res) => {
|
||||||
db.Claim.getShortClaimIdFromLongClaimId(params.longId, params.name)
|
try {
|
||||||
.then(shortId => {
|
let shortId = await chainquery.claim.queries.getShortClaimIdFromLongClaimId(params.longId, params.name);
|
||||||
res.status(200).json({success: true, data: shortId});
|
|
||||||
})
|
if(shortId === null) {
|
||||||
.catch(error => {
|
shortId = await db.Claim.getShortClaimIdFromLongClaimId(params.longId, params.name);
|
||||||
handleErrorResponse(originalUrl, ip, error, res);
|
}
|
||||||
});
|
|
||||||
|
res.status(200).json({success: true, data: shortId});
|
||||||
|
} catch(error) {
|
||||||
|
handleErrorResponse(originalUrl, ip, error, res);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = claimShortId;
|
module.exports = claimShortId;
|
||||||
|
|
28
server/controllers/api/homepage/data/getChannelData.js
Normal file
28
server/controllers/api/homepage/data/getChannelData.js
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
const db = require('../../../../models');
|
||||||
|
|
||||||
|
const getChannelData = (channelName, channelClaimId) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
let longChannelClaimId;
|
||||||
|
// 1. get the long channel Id (make sure channel exists)
|
||||||
|
db.Certificate
|
||||||
|
.getLongChannelId(channelName, channelClaimId)
|
||||||
|
.then(fullClaimId => {
|
||||||
|
longChannelClaimId = fullClaimId;
|
||||||
|
return db
|
||||||
|
.Certificate
|
||||||
|
.getShortChannelIdFromLongChannelId(fullClaimId, channelName);
|
||||||
|
})
|
||||||
|
.then(shortChannelClaimId => {
|
||||||
|
resolve({
|
||||||
|
channelName,
|
||||||
|
longChannelClaimId,
|
||||||
|
shortChannelClaimId,
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
reject(error);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = getChannelData;
|
35
server/controllers/api/homepage/data/index.js
Normal file
35
server/controllers/api/homepage/data/index.js
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
const { handleErrorResponse } = require('../../../utils/errorHandlers.js');
|
||||||
|
|
||||||
|
const getChannelData = require('./getChannelData.js');
|
||||||
|
|
||||||
|
const NO_CHANNEL = 'NO_CHANNEL';
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
route to get data for a channel
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
const channelData = ({ ip, originalUrl, body, params }, res) => {
|
||||||
|
const channelName = params.channelName;
|
||||||
|
let channelClaimId = params.channelClaimId;
|
||||||
|
if (channelClaimId === 'none') channelClaimId = null;
|
||||||
|
getChannelData(channelName, channelClaimId)
|
||||||
|
.then(data => {
|
||||||
|
res.status(200).json({
|
||||||
|
success: true,
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
if (error === NO_CHANNEL) {
|
||||||
|
return res.status(404).json({
|
||||||
|
success: false,
|
||||||
|
message: 'No matching channel was found',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
handleErrorResponse(originalUrl, ip, error, res);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = channelData;
|
|
@ -1,6 +1,7 @@
|
||||||
const logger = require('winston');
|
const logger = require('winston');
|
||||||
|
|
||||||
const db = require('../../../models');
|
const db = require('../../../models');
|
||||||
|
const chainquery = require('chainquery');
|
||||||
|
|
||||||
const getClaimId = require('../../utils/getClaimId.js');
|
const getClaimId = require('../../utils/getClaimId.js');
|
||||||
const { handleErrorResponse } = require('../../utils/errorHandlers.js');
|
const { handleErrorResponse } = require('../../utils/errorHandlers.js');
|
||||||
|
@ -16,8 +17,13 @@ const getClaimIdAndServeAsset = (channelName, channelClaimId, claimName, claimId
|
||||||
getClaimId(channelName, channelClaimId, claimName, claimId)
|
getClaimId(channelName, channelClaimId, claimName, claimId)
|
||||||
.then(fullClaimId => {
|
.then(fullClaimId => {
|
||||||
claimId = fullClaimId;
|
claimId = fullClaimId;
|
||||||
logger.debug('Full claim id:', fullClaimId);
|
return chainquery.claim.queries.getOutpoint(claimName, fullClaimId).catch(() => {});
|
||||||
return db.Claim.getOutpoint(claimName, fullClaimId);
|
})
|
||||||
|
.then(outpointResult => {
|
||||||
|
if (!outpointResult) {
|
||||||
|
return db.Claim.getOutpoint(claimName, claimId);
|
||||||
|
}
|
||||||
|
return outpointResult;
|
||||||
})
|
})
|
||||||
.then(outpoint => {
|
.then(outpoint => {
|
||||||
logger.debug('Outpoint:', outpoint);
|
logger.debug('Outpoint:', outpoint);
|
||||||
|
|
|
@ -1,22 +1,38 @@
|
||||||
const logger = require('winston');
|
const logger = require('winston');
|
||||||
|
|
||||||
const db = require('../../models');
|
const db = require('../../models');
|
||||||
|
const chainquery = require('chainquery');
|
||||||
|
|
||||||
const getClaimIdByChannel = (channelName, channelClaimId, claimName) => {
|
const getClaimIdByChannel = async (channelName, channelClaimId, claimName) => {
|
||||||
logger.debug(`getClaimIdByChannel(${channelName}, ${channelClaimId}, ${claimName})`);
|
logger.debug(`getClaimIdByChannel(${channelName}, ${channelClaimId}, ${claimName})`);
|
||||||
return db.Certificate
|
|
||||||
.getLongChannelId(channelName, channelClaimId)
|
let channelId = await chainquery.claim.queries.getLongClaimIdFromShortClaimId(channelName, channelClaimId);
|
||||||
.then(longChannelId => {
|
|
||||||
return db.Claim.getClaimIdByLongChannelId(longChannelId, claimName);
|
if(channelId === null) {
|
||||||
});
|
channelId = await db.Certificate.getLongChannelId(channelName, channelClaimId);
|
||||||
|
}
|
||||||
|
|
||||||
|
let claimId = await chainquery.claim.queries.getClaimIdByLongChannelId(longChannelId, claimName);
|
||||||
|
|
||||||
|
if(claimId === null) {
|
||||||
|
claimId = db.Claim.getClaimIdByLongChannelId(longChannelId, claimName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return claimId;
|
||||||
};
|
};
|
||||||
|
|
||||||
const getClaimId = (channelName, channelClaimId, name, claimId) => {
|
const getClaimId = async (channelName, channelClaimId, name, claimId) => {
|
||||||
logger.debug(`getClaimId: ${channelName}, ${channelClaimId}, ${name}, ${claimId})`);
|
logger.debug(`getClaimId: ${channelName}, ${channelClaimId}, ${name}, ${claimId})`);
|
||||||
if (channelName) {
|
if (channelName) {
|
||||||
return getClaimIdByChannel(channelName, channelClaimId, name);
|
return await getClaimIdByChannel(channelName, channelClaimId, name);
|
||||||
} else {
|
} else {
|
||||||
return db.Claim.getLongClaimId(name, claimId);
|
let claimIdResult = await chainquery.claim.queries.getLongClaimId(name, claimId);
|
||||||
|
|
||||||
|
if(claimIdResult === null) {
|
||||||
|
claimIdResult = await db.Claim.getLongClaimId(name, claimId);
|
||||||
|
}
|
||||||
|
|
||||||
|
return claimIdResult;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,25 @@ const {
|
||||||
},
|
},
|
||||||
} = require('@config/siteConfig');
|
} = require('@config/siteConfig');
|
||||||
|
|
||||||
|
function logMetricsMiddleware(req, res, next) {
|
||||||
|
res.on('finish', () => {
|
||||||
|
const userAgent = req.get('user-agent');
|
||||||
|
|
||||||
|
db.RequestMetrics.create({
|
||||||
|
isInternal: /node\-fetch/.test(userAgent),
|
||||||
|
routePath: httpContext.get('routePath'),
|
||||||
|
params: JSON.stringify(req.params),
|
||||||
|
ip: req.headers['x-forwarded-for'] || req.connection.remoteAddress,
|
||||||
|
request: req.url,
|
||||||
|
routeData: JSON.stringify(httpContext.get('routeData')),
|
||||||
|
referrer: req.get('referrer'),
|
||||||
|
userAgent,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
|
||||||
function setRouteDataInContextMiddleware(routePath, routeData) {
|
function setRouteDataInContextMiddleware(routePath, routeData) {
|
||||||
return function (req, res, next) {
|
return function (req, res, next) {
|
||||||
httpContext.set('routePath', routePath);
|
httpContext.set('routePath', routePath);
|
||||||
|
@ -97,7 +116,12 @@ function Server () {
|
||||||
let routeMethod = routeData.hasOwnProperty('method') ? routeData.method : 'get';
|
let routeMethod = routeData.hasOwnProperty('method') ? routeData.method : 'get';
|
||||||
let controllers = Array.isArray(routeData.controller) ? routeData.controller : [routeData.controller];
|
let controllers = Array.isArray(routeData.controller) ? routeData.controller : [routeData.controller];
|
||||||
|
|
||||||
app[routeMethod](routePath, setRouteDataInContextMiddleware(routePath, routeData), ...controllers);
|
app[routeMethod](
|
||||||
|
routePath,
|
||||||
|
logMetricsMiddleware,
|
||||||
|
setRouteDataInContextMiddleware(routePath, routeData),
|
||||||
|
...controllers,
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.app = app;
|
this.app = app;
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
const Sequelize = require('sequelize');
|
const Sequelize = require('sequelize');
|
||||||
const logger = require('winston');
|
const logger = require('winston');
|
||||||
|
|
||||||
const Certificate = require('./certificate.js');
|
const Blocked = require('./blocked');
|
||||||
const Channel = require('./channel.js');
|
const Certificate = require('./certificate');
|
||||||
const Claim = require('./claim.js');
|
const Channel = require('./channel');
|
||||||
const File = require('./file.js');
|
const Claim = require('./claim');
|
||||||
const User = require('./user.js');
|
const File = require('./file');
|
||||||
const Blocked = require('./blocked.js');
|
const Metrics = require('./metrics');
|
||||||
const Tor = require('./tor.js');
|
const Tor = require('./tor');
|
||||||
|
const User = require('./user');
|
||||||
|
|
||||||
const {
|
const {
|
||||||
database,
|
database,
|
||||||
|
@ -48,13 +49,14 @@ sequelize
|
||||||
|
|
||||||
// manually add each model to the db object (note: make this dynamic)
|
// manually add each model to the db object (note: make this dynamic)
|
||||||
const db = {};
|
const db = {};
|
||||||
|
db['Blocked'] = sequelize.import('Blocked', Blocked);
|
||||||
db['Certificate'] = sequelize.import('Certificate', Certificate);
|
db['Certificate'] = sequelize.import('Certificate', Certificate);
|
||||||
db['Channel'] = sequelize.import('Channel', Channel);
|
db['Channel'] = sequelize.import('Channel', Channel);
|
||||||
db['Claim'] = sequelize.import('Claim', Claim);
|
db['Claim'] = sequelize.import('Claim', Claim);
|
||||||
db['File'] = sequelize.import('File', File);
|
db['File'] = sequelize.import('File', File);
|
||||||
db['User'] = sequelize.import('User', User);
|
db['Metrics'] = sequelize.import('Metrics', Metrics);
|
||||||
db['Blocked'] = sequelize.import('Blocked', Blocked);
|
|
||||||
db['Tor'] = sequelize.import('Tor', Tor);
|
db['Tor'] = sequelize.import('Tor', Tor);
|
||||||
|
db['User'] = sequelize.import('User', User);
|
||||||
|
|
||||||
// run model.association for each model in the db object that has an association
|
// run model.association for each model in the db object that has an association
|
||||||
logger.info('associating db models...');
|
logger.info('associating db models...');
|
||||||
|
|
53
server/models/metrics.js
Normal file
53
server/models/metrics.js
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
module.exports = (sequelize, { BOOLEAN, DATE, STRING }) => {
|
||||||
|
const RequestMetrics = sequelize.define(
|
||||||
|
'RequestMetrics',
|
||||||
|
{
|
||||||
|
time: {
|
||||||
|
type: DATE(6),
|
||||||
|
defaultValue: sequelize.NOW,
|
||||||
|
},
|
||||||
|
isInternal: {
|
||||||
|
type: BOOLEAN,
|
||||||
|
},
|
||||||
|
claimId: {
|
||||||
|
type: STRING,
|
||||||
|
defaultValue: null,
|
||||||
|
},
|
||||||
|
ip: {
|
||||||
|
type: STRING,
|
||||||
|
defaultValue: null,
|
||||||
|
},
|
||||||
|
request: {
|
||||||
|
type: STRING,
|
||||||
|
defaultValue: null,
|
||||||
|
},
|
||||||
|
userAgent: {
|
||||||
|
type: STRING,
|
||||||
|
defaultValue: null,
|
||||||
|
},
|
||||||
|
referrer: {
|
||||||
|
type: STRING,
|
||||||
|
defaultValue: null,
|
||||||
|
},
|
||||||
|
routePath: {
|
||||||
|
type: STRING,
|
||||||
|
defaultValue: null,
|
||||||
|
},
|
||||||
|
params: {
|
||||||
|
type: STRING,
|
||||||
|
defaultValue: null,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
freezeTableName: true,
|
||||||
|
timestamps: false, // don't use default timestamps columns
|
||||||
|
indexes: [
|
||||||
|
{
|
||||||
|
fields: ['isInternal', 'isChannel', 'time', 'claimId', 'routePath'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
return RequestMetrics;
|
||||||
|
};
|
|
@ -22,10 +22,14 @@ const getBlockedList = require('../../controllers/api/blocked');
|
||||||
const getOEmbedData = require('../../controllers/api/oEmbed');
|
const getOEmbedData = require('../../controllers/api/oEmbed');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
// homepage routes
|
||||||
|
'/api/homepage/data/channels': { controller: [ torCheckMiddleware, channelData ] },
|
||||||
|
|
||||||
// channel routes
|
// channel routes
|
||||||
'/api/channel/availability/:name': { controller: [ torCheckMiddleware, channelAvailability ] },
|
'/api/channel/availability/:name': { controller: [ torCheckMiddleware, channelAvailability ] },
|
||||||
'/api/channel/short-id/:longId/:name': { controller: [ torCheckMiddleware, channelShortId ] },
|
'/api/channel/short-id/:longId/:name': { controller: [ torCheckMiddleware, channelShortId ] },
|
||||||
'/api/channel/data/:channelName/:channelClaimId': { controller: [ torCheckMiddleware, channelData ] },
|
'/api/channel/data/:channelName/:channelClaimId': { controller: [ torCheckMiddleware, channelData ] },
|
||||||
|
'/api/channel/data/:channelName/:channelClaimId': { controller: [ torCheckMiddleware, channelData ] },
|
||||||
'/api/channel/claims/:channelName/:channelClaimId/:page': { controller: [ torCheckMiddleware, channelClaims ] },
|
'/api/channel/claims/:channelName/:channelClaimId/:page': { controller: [ torCheckMiddleware, channelClaims ] },
|
||||||
// claim routes
|
// claim routes
|
||||||
'/api/claim/availability/:name': { controller: [ torCheckMiddleware, claimAvailability ] },
|
'/api/claim/availability/:name': { controller: [ torCheckMiddleware, claimAvailability ] },
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
module.exports = {
|
module.exports = {
|
||||||
...require('./pages'),
|
...require('./pages'),
|
||||||
...require('./api'),
|
...require('./api'),
|
||||||
...require('./assets'),
|
|
||||||
...require('./auth'),
|
...require('./auth'),
|
||||||
|
...require('./assets'),
|
||||||
...require('./fallback'),
|
...require('./fallback'),
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,8 +2,12 @@ const handlePageRequest = require('../../controllers/pages/sendReactApp');
|
||||||
const handleVideoEmbedRequest = require('../../controllers/pages/sendVideoEmbedPage');
|
const handleVideoEmbedRequest = require('../../controllers/pages/sendVideoEmbedPage');
|
||||||
const redirect = require('../../controllers/utils/redirect');
|
const redirect = require('../../controllers/utils/redirect');
|
||||||
|
|
||||||
|
// TODO: Adjust build & sources to use import/export everywhere
|
||||||
|
const Actions = require('@actions').default;
|
||||||
|
const Sagas = require('@sagas').default;
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
'/': { controller: handlePageRequest },
|
'/': { controller: handlePageRequest, action: Actions.onHandleShowHomepage, saga: Sagas.handleShowHomepage },
|
||||||
'/login': { controller: handlePageRequest },
|
'/login': { controller: handlePageRequest },
|
||||||
'/about': { controller: handlePageRequest },
|
'/about': { controller: handlePageRequest },
|
||||||
'/trending': { controller: redirect('/popular') },
|
'/trending': { controller: redirect('/popular') },
|
||||||
|
|
Loading…
Reference in a new issue