Skip to content

Commit

Permalink
Merge pull request #9 from VinylaCrew/feature_#6
Browse files Browse the repository at this point in the history
FIX: no data handling & pool release #4, #6
  • Loading branch information
khl6235 authored Nov 10, 2021
2 parents 7380cc5 + 0fbbc18 commit 856e299
Show file tree
Hide file tree
Showing 5 changed files with 94 additions and 88 deletions.
19 changes: 13 additions & 6 deletions vinyla/controllers/vinyl.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,32 @@ const util = require('../modules/util');
const resMessage = require('../modules/responseMessage');
const statusCode = require('../modules/statusCode');
const VinylModel = require('../models/vinyl');
// const { catch } = require('../config/database');

module.exports = {
search: async(req, res) => {
const q = req.query.q;
if(!q){
return await res.status(statusCode.BAD_REQUEST).send(util.fail(statusCode.BAD_REQUEST, resMessage.NULL_VALUE));
}

const searchResult = await VinylModel.search(q);
return await res.status(statusCode.OK).send(util.success(statusCode.OK, resMessage.DISCOGS_SEARCH_SUCCESS, searchResult));
try{
const searchResult = await VinylModel.search(q);
return await res.status(statusCode.OK).send(util.success(statusCode.OK, resMessage.DISCOGS_SEARCH_SUCCESS, searchResult));
} catch(err){
return await res.status(statusCode.BAD_REQUEST).send(util.fail(statusCode.BAD_REQUEST, resMessage.DISCOGS_SEARCH_FAIL));
}
},

detail: async(req, res) => {
const id = req.params.id;
if(!id){
return await res.status(statusCode.BAD_REQUEST).send(util.fail(statusCode.BAD_REQUEST, resMessage.NULL_VALUE));
}

const searchDetailResult = await VinylModel.detail(id);
return await res.status(statusCode.OK).send(util.success(statusCode.OK, resMessage.DISCOGS_SEARCH_DETAIL_SUCCESS, searchDetailResult));
try{
const searchDetailResult = await VinylModel.detail(id);
return await res.status(statusCode.OK).send(util.success(statusCode.OK, resMessage.DISCOGS_SEARCH_DETAIL_SUCCESS, searchDetailResult));
} catch(err){
return await res.status(statusCode.BAD_REQUEST).send(util.fail(statusCode.BAD_REQUEST, resMessage.DISCOGS_SEARCH_DETAIL_FAIL));
}
}
};
2 changes: 1 addition & 1 deletion vinyla/models/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ const user = {
}
},

duplicateCheck : async({nickname}) => {
duplicateCheck : async(nickname) => {
try{
const sql = `SELECT COUNT(*) as cnt FROM user WHERE nickname = ?`;
const value = [nickname];
Expand Down
136 changes: 63 additions & 73 deletions vinyla/models/vinyl.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,110 +4,100 @@ const discogsKey = require('../config/discogsKey');
const Discogs = require('disconnect').Client;
const vinylSearchDto = require('../data/dto/vinylSearchDto');
const vinylSearchDetailDto = require('../data/dto/vinylSearchDetailDto');
// const { catch } = require('../config/database');

const vinyl = {
search: (q) => {
search: async(q) => {
const dis = new Discogs({
consumerKey: discogsKey.key,
consumerSecret: discogsKey.secret
});

return new Promise((resolve, reject) => {
const db = dis.database();
db.search({q: q, type: 'release'})
.then(res => {
const data = res.results;
let results = [];
Promise.all(data.map(async(elem) => {
elem.artist = elem.title.split('-')[0].trim();
elem.title = elem.title.split('-')[1].trim();
results.push({
'id': elem.id,
'thumb': elem.thumb,
'title': elem.title,
'artist': elem.artist
});
results.map(vinylSearchDto);
}));
resolve(results);
})
.catch(err => {
console.log('[VINYLSEARCH] err' + err);
reject(err);
});
});

try{
const db = await dis.database().search({q: q, type: 'release'});
const data = db.results;
let results = [];
Promise.all(data.map(async(elem) => {
elem.artist = elem.title.split('-')[0].trim();
elem.title = elem.title.split('-')[1].trim();
results.push({
'id': elem.id,
'thumb': elem.thumb,
'title': elem.title,
'artist': elem.artist
});
results.map(vinylSearchDto);
}));
return results;
}
catch(err){
console.log('[VINYLSEARCH] err: ' + err);
throw err;
}
},
detail: (id) => {

detail: async(id) => {
const dis = new Discogs({
consumerKey: discogsKey.key,
consumerSecret: discogsKey.secret
});

try{
const db = await dis.database().getRelease(id);
let result = [];
let tl = [];

return new Promise((resolve, reject) => {
const db = dis.database();
db.getRelease(id)
.then(res => {
let result = [];
const primary = res.images.find(elem => {
if(elem.type === 'primary'){
return true;
}
}).uri;
const primaryImg = db.images.find(elem => {
if(elem.type === 'primary'){
return true;
}
}).uri;

let tl = [];
res.tracklist.forEach(elem => {
tl.push(elem.title);
});

let rate, rateCount;
findRate(id)
.then(rateRes => {
result.push({
"id": res.id,
"title": res.title,
"artist": res.artists[0].name,
"image": primary,
"year": res.year,
"genres": res.genres,
"tracklist": tl
});
if(rateRes == 0){
result[0].rate = 0;
result[0].rateCount = 0;
}
else{
result[0].rate = rate;
result[0].rateCount = rateCount;
}
result.map(vinylSearchDetailDto);
resolve(result[0]);
});
})
.catch(err => {
console.log('[VINYLSEARCHDETAIL] err' + err);
reject(err);
db.tracklist.forEach(elem => {
tl.push(elem.title);
});

});
const [rate, rateCount] = await findRate(id);

result.push({
"id": db.id,
"title": db.title,
"artist": db.artists[0].name,
"image": primaryImg,
"year": db.year,
"genres": db.genres,
"tracklist": tl
});
result[0].rate = rate;
result[0].rateCount = rateCount;
result.map(vinylSearchDetailDto);
return result[0];
}
catch(err){
console.log('[VINYLSEARCHDETAIL] err: ' + err);
throw err;
}

async function findRate(id){
const rateInfo = [];
try{
const sql = `SELECT rate, rateCount FROM vinyl WHERE id = ?`;
const value = [id];
const rs = await pool.queryParam_Parse(sql, value);
if(rs[0]){
return rs[0].rate, rs[0].rateCount;
rateInfo.push(rs[0].rate);
rateInfo.push(rs[0].rateCount);
}
else{
return 0;
rateInfo.push(0);
rateInfo.push(0);
}
return rateInfo;
} catch(err) {
console.log('[SEARCHDETAILRATE] err: ' + err);
throw err;
}
}

}
};

Expand Down
21 changes: 14 additions & 7 deletions vinyla/modules/pool.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@ module.exports = {
const connection = await pool.getConnection();
try {
const result = await connection.query(query);
pool.releaseConnection(connection);
// pool.releaseConnection(connection);
connection.release();
resolve(result);
} catch (err) {
pool.releaseConnection(connection);
// pool.releaseConnection(connection);
connection.release();
reject(err);
}
} catch (err) {
Expand All @@ -26,10 +28,12 @@ module.exports = {
const connection = await pool.getConnection();
try {
const result = await connection.query(query, value);
pool.releaseConnection(connection);
// pool.releaseConnection(connection);
connection.release();
resolve(result);
} catch (err) {
pool.releaseConnection(connection);
// pool.releaseConnection(connection);
connection.release();
reject(err);
}
} catch (err) {
Expand All @@ -51,7 +55,8 @@ module.exports = {
}
console.log(queryError);
}
pool.releaseConnection(connection);
connection.release();
// pool.releaseConnection(connection);
} catch (connectionError) {
console.log(connectionError);
}
Expand All @@ -72,11 +77,13 @@ module.exports = {
await connection.beginTransaction();
args.forEach(async (it) => await it(connection));
await connection.commit();
pool.releaseConnection(connection);
// pool.releaseConnection(connection);
connection.release();
resolve(result);
} catch (err) {
await connection.rollback()
pool.releaseConnection(connection);
// pool.releaseConnection(connection);
connection.release();
reject(err);
}
} catch (err) {
Expand Down
4 changes: 3 additions & 1 deletion vinyla/modules/responseMessage.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,7 @@ module.exports = {

// Vinyl
DISCOGS_SEARCH_SUCCESS: "๋ฐ”์ด๋‹ ๊ฒ€์ƒ‰ ์„ฑ๊ณต",
DISCOGS_SEARCH_DETAIL_SUCCESS: "๋ฐ”์ด๋‹ ์ƒ์„ธ ์กฐํšŒ ์„ฑ๊ณต"
DISCOGS_SEARCH_FAIL: "๋ฐ”์ด๋‹ ๊ฒ€์ƒ‰ ์‹คํŒจ",
DISCOGS_SEARCH_DETAIL_SUCCESS: "๋ฐ”์ด๋‹ ์ƒ์„ธ ์กฐํšŒ ์„ฑ๊ณต",
DISCOGS_SEARCH_DETAIL_FAIL: "๋ฐ”์ด๋‹ ์ƒ์„ธ ์กฐํšŒ ์‹คํŒจ"
}

0 comments on commit 856e299

Please sign in to comment.