updated serve's get process to use local resolve
This commit is contained in:
parent
dd762ec10b
commit
ed68514b8f
2 changed files with 53 additions and 37 deletions
|
@ -1,8 +1,7 @@
|
||||||
const lbryApi = require('../helpers/lbryApi.js');
|
const lbryApi = require('../helpers/lbryApi.js');
|
||||||
const db = require('../models');
|
const db = require('../models');
|
||||||
const logger = require('winston');
|
const logger = require('winston');
|
||||||
const isFreeClaim = require('../helpers/functions/isFreeClaim.js');
|
const { getTopFreeClaim, getFullClaimIdFromShortId, resolveAgainstClaimTable } = require('../helpers/serveHelpers.js');
|
||||||
const { getTopFreeClaim, getFullClaimIdFromShortId } = require('../helpers/serveHelpers.js');
|
|
||||||
|
|
||||||
function checkForLocalAssetByClaimId (claimId, name) {
|
function checkForLocalAssetByClaimId (claimId, name) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
@ -39,43 +38,42 @@ function getAssetByClaimId (fullClaimId, name) {
|
||||||
// 1. check locally for claim
|
// 1. check locally for claim
|
||||||
checkForLocalAssetByClaimId(fullClaimId, name)
|
checkForLocalAssetByClaimId(fullClaimId, name)
|
||||||
.then(dataValues => {
|
.then(dataValues => {
|
||||||
// 2. if a result was found, return the result
|
// if a result was found, return early with the result
|
||||||
if (dataValues) {
|
if (dataValues) {
|
||||||
logger.debug('found a local file for this name and claimId');
|
logger.debug('found a local file for this name and claimId');
|
||||||
resolve(dataValues);
|
return resolve(dataValues);
|
||||||
// 2. if not found locally, make a get request
|
}
|
||||||
} else {
|
logger.debug('no local file found for this name and claimId');
|
||||||
logger.debug('no local file for this name and claimId');
|
// 2. if no local claim, resolve and get the claim
|
||||||
// 3. resolve the claim
|
resolveAgainstClaimTable(name, fullClaimId)
|
||||||
lbryApi.resolveUri(`${name}#${fullClaimId}`) // USE A LOCAL RESOLVE HERE
|
.then(resolveResult => {
|
||||||
.then(resolveResult => {
|
logger.debug('resolve result >> ', resolveResult);
|
||||||
logger.debug('resolve result >> ', resolveResult);
|
// if no result, return early (claim doesn't exist or isn't free)
|
||||||
// if the claim is free...
|
if (!resolveResult) {
|
||||||
if (resolveResult.claim && isFreeClaim(resolveResult.claim)) {
|
return resolve(null);
|
||||||
// get the claim
|
}
|
||||||
lbryApi.getClaim(`${name}#${fullClaimId}`)
|
let fileRecord = {};
|
||||||
.then(getResult => {
|
// get the claim
|
||||||
logger.debug('getResult >>', getResult);
|
lbryApi.getClaim(`${name}#${fullClaimId}`)
|
||||||
let fileInfo = formatGetResultsToFileInfo(getResult);
|
.then(getResult => {
|
||||||
fileInfo['address'] = resolveResult.claim.address;
|
logger.debug('getResult >>', getResult);
|
||||||
fileInfo['height'] = resolveResult.claim.height;
|
fileRecord = formatGetResultsToFileInfo(getResult);
|
||||||
// insert a record in the File table
|
fileRecord['address'] = (resolveResult.address || 0);
|
||||||
db.File.create(fileInfo);
|
fileRecord['height'] = resolveResult.height;
|
||||||
// resolve the promise
|
// insert a record in the File table & Update Claim table
|
||||||
resolve(fileInfo);
|
return db.File.create(fileRecord);
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.then(fileRecordResults => {
|
||||||
reject(error);
|
logger.debug('File record successfully updated');
|
||||||
});
|
resolve(fileRecord);
|
||||||
// if not, resolve with no claims
|
|
||||||
} else {
|
|
||||||
resolve(null);
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
reject(error);
|
reject(error);
|
||||||
});
|
});
|
||||||
}
|
})
|
||||||
|
.catch(error => {
|
||||||
|
reject(error);
|
||||||
|
});
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
reject(error);
|
reject(error);
|
||||||
|
|
|
@ -127,9 +127,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
getAllFreeClaims (claimName) {
|
getAllFreeClaims (name) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
db.sequelize.query(`SELECT * FROM Claim WHERE name = '${claimName}' ORDER BY amount DESC, height ASC`, { type: db.sequelize.QueryTypes.SELECT })
|
db.sequelize.query(`SELECT * FROM Claim WHERE name = '${name}' ORDER BY amount DESC, height ASC`, { type: db.sequelize.QueryTypes.SELECT })
|
||||||
.then(result => {
|
.then(result => {
|
||||||
switch (result.length) {
|
switch (result.length) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -143,9 +143,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
getTopFreeClaim (claimName) {
|
getTopFreeClaim (name) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
db.sequelize.query(`SELECT * FROM Claim WHERE name = '${claimName}' ORDER BY amount DESC, height ASC LIMIT 1`, { type: db.sequelize.QueryTypes.SELECT })
|
db.sequelize.query(`SELECT * FROM Claim WHERE name = '${name}' ORDER BY amount DESC, height ASC LIMIT 1`, { type: db.sequelize.QueryTypes.SELECT })
|
||||||
.then(result => {
|
.then(result => {
|
||||||
switch (result.length) {
|
switch (result.length) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -159,4 +159,22 @@ module.exports = {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
resolveAgainstClaimTable (name, claimId) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
db.sequelize.query(`SELECT * FROM Claim WHERE name = '${name}' AND claimId = '${claimId}'`, { type: db.sequelize.QueryTypes.SELECT })
|
||||||
|
.then(result => {
|
||||||
|
switch (result.length) {
|
||||||
|
case 0:
|
||||||
|
return resolve(null);
|
||||||
|
case 1:
|
||||||
|
return resolve(result[0]);
|
||||||
|
default:
|
||||||
|
return new Error('more than one entry matches that name and claimID');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
reject(error);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue