LoginSignup
0
0

test

Posted at

// モジュール読み込み
const express = require("express");
const app = express();
const mysql = require("mysql2");
const cors = require("cors");

// クロスオリジン対策
app.use(cors());

// JSON
app.use(express.json());

// MySQLの接続情報
const db = mysql.createConnection({
user: "root", // ユーザー名
host: "localhost", // host名
password: "P@ssw0rd", // パスワード
port: 3306, // MySQLのデフォルトポート
});

// インシデント管理API
app.post("/incidents", (req, res) => {
let id = req.body.id;
const pj_name = req.body.pj_name;
const conetent = req.body.conetent;
const tss_person = req.body.tss_person;
const client_person = req.body.client_person;
const day = req.body.day;
const flag = req.body.flag;
const keyword = req.body.keyword;
const type = req.body.type;

db.connect( (error) => {
    if (error) {
    	console.log(error);
    } else {
    	console.log('MySQL Connected...');
    }
});

let lid;
switch (type) {
    // 新規登録
	case "1":
		new Promise((resolve, reject) => {
			db.query(`select id from rsc.incidents where pj_name = "${pj_name}" order by id desc limit 1;`, (err, results) => {
				if (err) {
					reject(err);
					return;
				}
					resolve(results);
				});
			}).then(results => {
				if (results.length === 0) {
					lid = 0;
				} else {
					lid = results[0].id;
				}
			}).then(() => {
				id = lid + 1; // ID採番
				db.query(`insert into rsc.incidents (id, pj_name, conetent, tss_person, client_person , day, flag) VALUES (${id}, "${pj_name}", "${conetent}", "${tss_person}", "${client_person}", ${day}, ${flag});`, (err, result) => {
					if (err) {
						res.status(500).send({ error: "登録失敗" });
					} else {
						res.status(200).json({ message: "登録完了" });
					}
				});
			})
  		break;

  	// 更新
  	case "2":
    	db.query(`update rsc.incidents set conetent = "${conetent}", tss_person = "${tss_person}", client_person = "${client_person}", day = "${day}", flag = "${flag}" where id = ${id} and pj_name = "${pj_name}";`, (err, result) => {
			if (err) {
				console.log(err);
				res.status(500).send({ error: "更新失敗" });
			} else {
				res.status(200).json({ message: "更新完了" });
			}
    	});
		break;

	// 削除
	case "3":
    	db.query(`delete from rsc.incidents where id = ${id} and pj_name = "${pj_name}";`, (err, result) => {
    		if (err) {
          		res.status(500).send({ error: "削除失敗" });
      		} else {
          		res.status(200).json({ message: "削除完了" });
    		}
    	});
		break;

	// 検索(トップページ)
	case "4":
		// 前日日付取得
		let zfill = function(str) {
			return ("00" + str).slice(-2);
		}
		let strftime = function(date) {
			return date.getFullYear() +  zfill(date.getMonth() + 1) + zfill(date.getDate());
		}
		let now = new Date();
		now.setDate(now.getDate() - 1)
		let yesterday = strftime(now);

  		db.query(`select * from rsc.incidents where flag=0 or day="${yesterday}" order by id asc;`, (err, result) => {
    		if (err) {
        		res.status(500).send({ error: "検索失敗" });
    		} else {
        		res.status(200).json(result);
  			}
  		});
  		break;
	
	// 検索
	case "5":
		db.query(`select * from rsc.incidents where concat(id,pj_name,conetent,tss_person,client_person,day,flag) like "%${keyword}%" order by id asc;`, (err, result) => {
			if (err) {
				res.status(500).send({ error: "検索失敗" });
			} else {
				res.status(200).json(result);
			}
		});
		break;
	}
});

// マスター変更API
app.post("/master", (req, res) => {
let id = req.body.id;
const pj_name = req.body.pj_name;
const flag = req.body.flag;
const type = req.body.type;

db.connect( (error) => {
    if (error) {
    	console.log(error);
    } else {
    	console.log('MySQL Connected...');
    }
});

let lid;
switch (type) {
    // 新規登録
	case "1":
		new Promise((resolve, reject) => {
			db.query(`select id from rsc.projects where pj_name = "${pj_name}" order by id desc limit 1;`, (err, results) => {
				if (err) {
					reject(err);
					return;
				}
					resolve(results);
				});
			}).then(results => {
				if (results.length === 0) {
					lid = 0;
				} else {
					lid = results[0].id;
				}
			}).then(() => {
				id = lid + 1; // ID採番
				db.query(`insert into rsc.projects (id, pj_name, flag) VALUES (${id}, "${pj_name}", 0);`, (err, result) => {
					if (err) {
						res.status(500).send({ error: "登録失敗" });
					} else {
						res.status(200).json({ message: "登録完了" });
					}
				});
			})
  		break;

  	// 更新
  	case "2":
    	db.query(`update rsc.projects set flag = "${flag}" where pj_name = "${pj_name}";`, (err, result) => {
			if (err) {
				console.log(err);
				res.status(500).send({ error: "更新失敗" });
			} else {
				res.status(200).json({ message: "更新完了" });
			}
    	});
		break;

	// 削除
	case "3":
    	db.query(`delete from rsc.projects where pj_name = "${pj_name}";`, (err, result) => {
    		if (err) {
          		res.status(500).send({ error: "削除失敗" });
      		} else {
          		res.status(200).json({ message: "削除完了" });
    		}
    	});
		break;
	
	// 検索
	case "4":
		db.query(`select * from rsc.projects order by id asc;`, (err, result) => {
			if (err) {
				res.status(500).send({ error: "検索失敗" });
			} else {
				res.status(200).json(result);
			}
		});
		break;
	}
});

// データの取得
app.get("/animals", (req, res) => {
const query = "SELECT * FROM animals";

db.query(query, (err, result) => {
if (err) {
console.log(err);
res.status(500).send("Error retrieving data from database");
} else {
res.status(200).json(result);
}
});
});

// サーバーの起動
const port = 3001;
app.listen(port, () => {
console.log(Yey, your server is running on port ${port});
});

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0