서주원

implement decklists

const mysql=require('../../database/mysql')
exports.GetDeck=(res,req)=>{
const userId='test'
const getDeck=()=>{
return new Promise((resolve,reject)=>{
mysql.getConnection((err,connection)=>{
if (err) throw err
connection.query(`select id,deckTitle from deck where deckOwner=\'${userId}\'`,(err,results,fields)=>{
if (err) throw err
console.log(JSON.stringify(results))
resolve(JSON.stringify(results))
})
connection.release()
})
})
}
getDeck()
.then((results)=>{
return res.status(200).json(results)
})
.catch((err)=>{
//return res.status(500).json(err||err.message)
})
}
\ No newline at end of file
......@@ -2,7 +2,9 @@ const express=require('express')
const router=express.Router()
const newDeck=require('./newDeck')
const getDeck=require('./getDeck')
router.post('/newdeck',newDeck.NewDeck)
router.get('/getdeck',getDeck.GetDeck)
module.exports=router
\ No newline at end of file
......
const rp=require('request-promise')
const mysql=require('../../database/mysql')
const crawler=require('./crawler')
const cheerio=require('cheerio')
const addCards=require('../card/addCards')
......
......@@ -8,6 +8,8 @@ const rp=require('request-promise')
const morgan=require('morgan')
const cheerio=require('cheerio')
const mysqlApostrophe=require('mysql-apostrophe')
const ejs=require('ejs')
const mysql=require('./database/mysql')
require('dotenv').config()
const app=express()
......@@ -83,9 +85,22 @@ app.get('/decklist',(req,res)=>{
if(!req.session.sid)
res.redirect('/login')
else{
fs.readFile('./views/html/decklist.html',(err,data)=>{
res.writeHead(200,{'Content-Type':'text/html'})
res.end(data)
mysql.getConnection((err,connection)=>{
if (err) throw err
connection.query(`select id,deckTitle from deck where deckOwner=\'${req.session.sid}\'`,(err,results,fields)=>{
if (err) throw err
else{
console.log(results)
console.log('length : '+results.length)
fs.readFile('./views/ejs/decklist.ejs','utf-8',(err,data)=>{
res.writeHead(200,{'Content-Type':'text/html'})
res.end(ejs.render(data,{
decks:results,
}))
})
}
})
connection.release()
})
}
......
......@@ -295,6 +295,11 @@
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"ejs": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz",
"integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ=="
},
"encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
......
......@@ -18,6 +18,7 @@
"charset": "^1.0.1",
"cheerio": "^1.0.0-rc.2",
"dotenv": "^6.1.0",
"ejs": "^2.6.1",
"express": "^4.16.4",
"express-session": "^1.15.6",
"fs": "0.0.1-security",
......
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Who Are You? - 하스스톤 멀리건 도우미</title>
<!-- 부트스트랩 -->
<link href="../../static/bootstrap-3.3.2-dist/css/bootstrap.min.css?ver=1" rel="stylesheet">
<link href="../../static/main.css" rel="stylesheet">
<!-- IE8 에서 HTML5 요소와 미디어 쿼리를 위한 HTML5 shim 와 Respond.js -->
<!-- WARNING: Respond.js 는 당신이 file:// 을 통해 페이지를 볼 때는 동작하지 않습니다. -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('#logoutButton').click(function(){
$.ajax({
type:'POST',
url:'/logout',
success:function(result){
alert('로그아웃 성공!')
window.location.href='/main'
},
error:function(result){
alert('로그아웃 실패!')
return false
}
})
})
})
</script>
</head>
<body>
<nav class="navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button class="navbar-toggle collapsed" aria-expanded="false" aria-controls="navbar" type="button" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/main">Who Are You?</a>
</div>
<div class="navbar-collapse collapse" id="navbar" aria-expanded="false" style="height: 1px;">
<ul class="nav navbar-nav">
</ul>
<div class="navbar-right">
<input type="button" class="btn navbar-btn" id="logoutButton" style="color:#000;" value="로그아웃" />
</div>
</div>
</div>
</nav>
<div class="container show-grid" >
<div class="padding" style="width:100px"></div>
<div class="container" style="width:50%;">
<div class="row">
<h3 class="form-signin-heading col-md-10" style="text-align: left;">내 덱 리스트</h3>
<a href="/newdeck"><input type="button" class="btn col-md-2" value="+" style="margin-top: 18px;" /></a>
</div>
<br>
<table class="table">
<% for ( var i=0;i<decks.length;i++) { %>
<tr><td style="text-align: center;"><a class="list-group-item" href="/ingame?deck=<%= decks[i].id %>"><%= decks[i].deckTitle %></a></td></tr>
<% } %>
</table>
</div>
</div>
<!-- jQuery (부트스트랩의 자바스크립트 플러그인을 위해 필요합니다) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<!-- 모든 컴파일된 플러그인을 포함합니다 (아래), 원하지 않는다면 필요한 각각의 파일을 포함하세요 -->
<script src="../../static/bootstrap-3.3.2-dist/js/bootstrap.min.js"></script>
</body>
</html>
\ No newline at end of file