๐ŸŽ‰๋กค ์ „์ ๊ฒ€์ƒ‰ ์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐ(4) - DB ๊ตฌ์ถ•ํ•˜๊ธฐ

์ค€์„(์ค€์„์•„)ยท2021๋…„ 10์›” 20์ผ
0
  • โœ” Riot API๋ฅผ ์ธ์ฆ
  • โœ”XMLHttpRequest์„ ์ด์šฉํ•ด์„œ Riot API ๋ฐ์ดํ„ฐ ํŒŒ์‹ฑ
  • โœ–Express๋ฅผ ์ด์šฉํ•ด์„œ Front์— ๋ฐ์ดํ„ฐ ๋„˜๊ธฐ๊ธฐ
  • ๐Ÿ“DB์„ค๊ณ„ ๋ฐ ๊ตฌ์ถ•
  • ๋‰ด๋ชจํ”ผ์ฆ˜์„ ์ด์šฉํ•˜์—ฌ ์‚ฌ์ดํŠธ ๊พธ๋ฏธ๊ธฐ

ERD ์„ค๊ณ„

DB๋ฅผ ์ œ์ž‘ํ•˜๊ธฐ ์•ž์„œ ERD๋กœ ์„ค๊ณ„๋„๋ฅผ ๋งŒ๋“ค๊ธฐ๋กœ ํ•˜์˜€๋‹ค.
์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ๋งŒ๋“  ERD์ด๋‹ค

์›Œ๋‚™ ์‚ฌ์ดํŠธ ๊ทœ๋ชจ๊ฐ€ ์ž‘๊ธฐ๋•Œ๋ฌธ์— ํ…Œ์ด๋ธ”๊ณ„์ˆ˜๊ฐ€ ์ ์ง€๋งŒ ํ•œ๋ช…์˜ ์œ ์ €๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฒŒ์ž„์ „์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š”์ง€ ๊ณจ๋จธ๋ฆฌ๋ฅผ ์ฉํ˜”๋‹ค

๊ฒฐ๊ตญ์—๋Š” ์œ„์— ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ฐ๊ฐํ…Œ์ด๋ธ”์˜ pk๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์žˆ๋Š” ํ…Œ์ด๋ธ”์€ ๋งŒ๋“ค์–ด Join๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด์˜ค๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

์ฝ”๋“œ ์ˆ˜์ •ํ•˜๊ธฐ

connection.query(`SELECT *
                  FROM summonertbl AS J_summonertbl
                  JOIN matchtbl AS J_match
                  ON J_summonertbl.summonerID = J_match.summonerID
                  WHERE J_summonertbl.summonerName = ? 
                  ORDER BY J_match.matchID DESC`,queryData.id,function(err,summonerSelect,fields){
...
if(summonerSelect[0] === undefined){
                              console.log('DB์— ๊ฐ’ ์—†์Œ INSERT ๋ฌธ ์‹คํ–‰');
                              
...
}else if(summonerSelect[0].timestamp < new Date().getTime()){
  		console.log('DB์— ๊ฐ’์€ ์žˆ์ง€๋งŒ ์ €์žฅ๋œ timestamp๊ฐ€ ์ตœ์‹ ๊ฐ’์ด ์•„๋‹๋•Œ');
  		let matchURL_Key ="https://asia.api.riotgames.com/lol/match/v5/matches/by-puuid/"
                                  +NameObject.puuid+"/ids
                                  ?startTime="+summonerSelect[0].timestamp
                                  +"&start=0&count=5&api_key=APIKEY";
        	console.log('์ตœ์‹ ๋ฐ์ดํ„ฐ๋งŒ API๋กœ ํ˜ธ์ถœ');
  

ํ…Œ์ด๋ธ”์— ๊ฒ€์ƒ‰ํ•œ ์œ ์ €ID๊ฐ€ ์žˆ๋Š”์ง€ ์ฒดํฌํ•˜๊ณ  ๊ฐ’์ด ์—†์œผ๋ฉด ๊ทธ๋•Œ๋ถ€ํ„ฐ ๊ฐ’์„ Insertํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋”ฉํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

๋งŒ์•ฝ ๊ฐ’์ด์žˆ๋Š”๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ์‹œํ‚ค๊ธฐ์œ„ํ•ด DB์— ์ €์žฅ๋œ timestamp๋ฅผ ๊ธฐ์ค€์œผ๋กœ timestamp์ดํ›„์˜ ๋ฐ์ดํ„ฐ๋งŒ API๋กœ ๊ธ์–ด์˜ค๋„๋ก ํ•˜์˜€๋‹ค.

๊ฐ’์ด ์—†์„๋•Œ Insertํ•˜๋ ค๋ฉด api๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ์†๋„๊ฐ€ ๋Š๋ฆฌ์ง€๋งŒ
๊ฐ’์ด ํ•œ๋ฒˆ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ๋•Œ๋Š” ์ƒ๋‹นํžˆ ์†๋„๊ฐ€ ๋‹จ์ถ•๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

profile
๋‰ด๋น„๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€