신일섭

DB기능 다른 모듈에 접목, 버그여부 아직 확인안함

...@@ -60,8 +60,12 @@ async function gmarket_c(user_id, g_id, g_pw){ ...@@ -60,8 +60,12 @@ async function gmarket_c(user_id, g_id, g_pw){
60 60
61 //logging the result 61 //logging the result
62 for(let index = 0; index < data.length; index++){ 62 for(let index = 0; index < data.length; index++){
63 - await replying(data[index].prd_img, data[index].prd_name, data[index].prd_price, data[index].prd_link); 63 +
64 - console.log(data[index]); 64 + // 뽑아낸 정보 reply
65 + await replying(data[index].prd_img, data[index].prd_name, data[index].prd_price, data[index].prd_link);
66 + // DB에 정보 삽입
67 + await dbcontrol.synchronization(USER_ID, data[index].prd_img, data[index].prd_name, data[index].prd_price, data[index].prd_link);
68 + console.log(data[index]);
65 } 69 }
66 70
67 //여기에 db에 추가하는 코드 넣기 71 //여기에 db에 추가하는 코드 넣기
......
...@@ -23,7 +23,7 @@ db.defaults({cart : []}).write(); ...@@ -23,7 +23,7 @@ db.defaults({cart : []}).write();
23 } 23 }
24 24
25 // 장바구니 동기화 25 // 장바구니 동기화
26 -function synchronization(USER_ID, prd_img, prd_name, prd_price, prd_link){ 26 +async function synchronization(USER_ID, prd_img, prd_name, prd_price, prd_link){
27 27
28 const adapter = new FileSync(USER_ID + '.json'); 28 const adapter = new FileSync(USER_ID + '.json');
29 const db = low(adapter); 29 const db = low(adapter);
...@@ -42,29 +42,69 @@ function synchronization(USER_ID, prd_img, prd_name, prd_price, prd_link){ ...@@ -42,29 +42,69 @@ function synchronization(USER_ID, prd_img, prd_name, prd_price, prd_link){
42 } 42 }
43 43
44 // db에서 목록 검색 후 삭제 44 // db에서 목록 검색 후 삭제
45 -function deleting(USER_ID, prd_link){ 45 +async function deleting(USER_ID, prd_link){
46 46
47 - const adapter = new FileSync(USER_ID + '.json'); 47 + try {
48 - const db = low(adapter); 48 + fs.statSync('./' + USER_ID + '.json'); // 이미 파일이 있다면
49 - db.defaults({cart : []}).write(); 49 + console.log('file or directory exists');
50 50
51 - db.get('cart') 51 + const adapter = new FileSync(USER_ID + '.json');
52 - .remove({PRD_LINK : prd_link}) 52 + const db = low(adapter);
53 - .write(); // prd_link 참조 삭제 53 + db.defaults({cart : []}).write();
54 +
55 + db.get('cart')
56 + .remove({PRD_LINK : prd_link})
57 + .write(); // prd_link 참조 삭제
58 +
59 + pushing(USER_ID, '-----삭제 완료-----');
60 + }
61 + catch (err) { // 파일이 없다면
62 + if (err.code === 'ENOENT') {
63 + console.log('file or directory does not exist');
64 + pushing(USER_ID, 'DB가 존재하지 않습니다');
65 + }
66 + else{
67 + console.log('삭제할 내용과 일치하는 리스트가 없습니다.');
68 + pushing(USER_ID, '삭제할 내용과 일치하는 리스트가 없습니다');
69 + }
70 + }
54 71
55 } 72 }
56 73
57 // db에서 USER_ID 기반 장바구니 조회 74 // db에서 USER_ID 기반 장바구니 조회
58 -function viewing(USER_ID){ 75 +async function viewing(USER_ID){
59 76
60 - const adapter = new FileSync(USER_ID + '.json'); 77 + try {
61 - const db = low(adapter); 78 + fs.statSync('./' + USER_ID + '.json'); // 이미 파일이 있다면
62 - db.defaults({cart : []}).write(); 79 + console.log('file or directory exists');
80 +
81 + const adapter = new FileSync(USER_ID + '.json');
82 + const db = low(adapter);
83 + db.defaults({cart : []}).write();
84 +
85 + var datalist = new Array();
86 +
87 + datalist = db.get('cart').value(); // [ { } ] 배열속 객체형태로 리턴
63 88
64 - var datalist = new Array(); 89 + //메세지로 내역 push하는 기능
90 +
91 + console.log(datalist);
92 +
93 + datalist.forEach(function(item, index, array){
94 + viewall(array[index].PRD_IMG, array[index].PRD_NAME, array[index].PRD_PRICE, array[index].PRD_LINK);
95 + });
96 + }
97 + catch (err) { // 파일이 없다면
98 + if (err.code === 'ENOENT') {
99 + console.log('file or directory does not exist');
100 + pushing(USER_ID, 'DB가 존재하지 않습니다');
101 + }
102 + else{
103 + console.log('Directory is empty');
104 + pushing(USER_ID, 'DB 가 비었습니다.');
105 + }
106 + }
65 107
66 - datalist = db.get('cart').value(); // [ { } ] 배열속 객체형태로 리턴
67 - //미완성 - 메세지로 내역 push하는 기능 업데이트 요망
68 108
69 } 109 }
70 110
......
...@@ -22,6 +22,7 @@ var shopping = 0; // in shopping menu identifier 0 = idle, 1 = shop ...@@ -22,6 +22,7 @@ var shopping = 0; // in shopping menu identifier 0 = idle, 1 = shop
22 var shop_select = undefined // shopping-site identifier 22 var shop_select = undefined // shopping-site identifier
23 var method_action = 0; // typing count; 23 var method_action = 0; // typing count;
24 var user_info = new Array(); // 유저 정보 저장용 24 var user_info = new Array(); // 유저 정보 저장용
25 +var deleting_able = false; // 장바구니 항목 삭제용
25 //------------------------------------------ 26 //------------------------------------------
26 27
27 // ------------ db calling modules --------- 28 // ------------ db calling modules ---------
...@@ -34,18 +35,37 @@ async function shoppingroute(user_message, user_id, replyToken){ ...@@ -34,18 +35,37 @@ async function shoppingroute(user_message, user_id, replyToken){
34 USER_ID = user_id; 35 USER_ID = user_id;
35 36
36 if(user_message == '/쇼핑' ){ 37 if(user_message == '/쇼핑' ){
37 - replying(replyToken, '쇼핑을 선택하셨습니다.\n원하시는 쇼핑몰 사이트를 선택하세요.\n현재 제공되는 사이트는 \n\n/g마켓\n/옥션\n/쿠팡\n\n입니다.\n/취소 로 해당 메뉴에서 퇴장이 가능합니다.'); 38 + replying(replyToken, '쇼핑을 선택하셨습니다.\n원하시는 쇼핑몰 사이트 또는 기능을 선택하세요.\n현재 제공되는 사이트는 \n\n/g마켓\n/옥션\n/쿠팡\n\n입니다.\n\n기능은 /장바구니조회\n/장바구니삭제\n\n입니다.\n\n/취소 로 해당 메뉴에서 퇴장이 가능합니다.');
38 shopping = 1; // 다음 메세지에 선택하지 못할 경우 0으로 되돌릴 필요가있음 39 shopping = 1; // 다음 메세지에 선택하지 못할 경우 0으로 되돌릴 필요가있음
39 } 40 }
40 41
42 + // 삭제 단독 처리용
43 + if(deleting_able === true && shopping == 1){
44 + dbcontrol.deleting(USER_ID, user_message); // user_message는 링크로 입력할 것
45 + shopping = 0; deleting_able = false; // 메인메뉴로 되돌아감
46 + }
47 +
41 if(shopping == 1){ 48 if(shopping == 1){
42 if(user_message == '/g마켓'){ 49 if(user_message == '/g마켓'){
43 - replying(replyToken, 'g마켓을 선택하셨습니다.\n원하시는 항목을 선택하세요.\n\n/장바구니동기화\n/장바구니조회\n/장바구니추가\n/장바구니삭제'); 50 + replying(replyToken, 'g마켓을 선택하셨습니다.\n원하시는 항목을 선택하세요.\n\n/장바구니동기화');
44 shopping = 2; shop_select = 'g마켓'; 51 shopping = 2; shop_select = 'g마켓';
45 }else if(user_message == '/옥션'){ 52 }else if(user_message == '/옥션'){
46 53
47 - }else if(user_message == '쿠팡'){ 54 + }else if(user_message == '/쿠팡'){
48 55
56 + }else if(user_message == '/장바구니조회'){
57 + // DB에서 USER_ID.json 을 가진 파일을 읽어들임
58 + replying(replyToken, '장바구니조회를 선택하셨습니다.\nDB를 읽고 있습니다.');
59 + dbcontrol.viewing(USER_ID);
60 + shopping = 0; // 메인메뉴로 되돌아감
61 + }else if(user_message == '/장바구니삭제'){
62 + replying(replyToken, '장바구니삭제를 선택하셨습니다.\n삭제할 링크를 입력해주세요.');
63 + deleting_able = true; // 삭제가능상태 적용
64 + dbcontrol.deleting(user_message);
65 + }
66 + }else{
67 + replying(replyToken, 'Error: 유효하지 않은 선택입니다. 메인으로 되돌아갑니다.');
68 + shopping = 0;
49 } 69 }
50 } 70 }
51 71
...@@ -66,18 +86,10 @@ async function shoppingroute(user_message, user_id, replyToken){ ...@@ -66,18 +86,10 @@ async function shoppingroute(user_message, user_id, replyToken){
66 //장바구니 크롤링하는 함수 86 //장바구니 크롤링하는 함수
67 USER_ID = user_id; // 상대방 ID 획득 87 USER_ID = user_id; // 상대방 ID 획득
68 await gmarket.gmarket_c(USER_ID, user_info[2], user_info[1]); 88 await gmarket.gmarket_c(USER_ID, user_info[2], user_info[1]);
69 - // replying(eventObj.replyToken, '리스트를 출력중입니다... 출력전까지 기다려주세요\n\n\n/장바구니동기화\n장바구니조회\n/장바구니추가\n/장바구니삭제'); 89 + shopping = 0;
70 - shopping = 2; 90 + shop_select = undefined; //메인메뉴로 돌아가기 위함
71 } 91 }
72 } 92 }
73 - /* if(user_message == '/장바구니조회')
74 - {
75 -
76 - }
77 - if(user_message == '/장바구니삭제')
78 - {
79 -
80 - }*/ //이 기능을 마켓선택기능에 넣는것이 좋을거같음 (db를 공유하기때문에)
81 } 93 }
82 } 94 }
83 95
......