diff --git a/db_init.js b/db_init.js new file mode 100644 index 0000000..46862bd --- /dev/null +++ b/db_init.js @@ -0,0 +1,107 @@ +import mysql from 'mysql2/promise'; +import dotenv from 'dotenv'; + +dotenv.config(); + +const { DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT } = process.env; + +async function initDB() { + const connection = await mysql.createConnection({ + host: DB_HOST, + user: DB_USER, + password: DB_PASS, + port: parseInt(DB_PORT || '3306') + }); + + console.log('๐ DB ์ด๊ธฐํ ์์...'); + + // 1. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ + await connection.query(`CREATE DATABASE IF NOT EXISTS ${DB_NAME};`); + await connection.query(`USE ${DB_NAME};`); + console.log(`โ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ ์๋ฃ: ${DB_NAME}`); + + // 2. ํ๋์จ์ด ์์ฐ ํ ์ด๋ธ + const createHwTable = ` + CREATE TABLE IF NOT EXISTS hw_assets ( + id VARCHAR(50) PRIMARY KEY, + type VARCHAR(50) NOT NULL COMMENT '๊ฐ์ธPC, ์๋ฒ, ์คํ ๋ฆฌ์ง, ์ ์ฐ๋นํ', + corp VARCHAR(100) COMMENT '๊ตฌ๋งค๋ฒ์ธ', + asset_code VARCHAR(100) COMMENT '์์ฐ๋ฒํธ/์ฝ๋', + asset_name VARCHAR(255) COMMENT '๋ช ์นญ/์ฉ๋', + location VARCHAR(255) COMMENT '์ค์น์์น', + current_org VARCHAR(255) COMMENT 'ํ ์ฌ์ฉ์กฐ์ง', + prev_org VARCHAR(255) COMMENT '์ด์ ์ฌ์ฉ์กฐ์ง', + manager_main VARCHAR(100) COMMENT '๋ด๋น์(์ )', + manager_sub VARCHAR(100) COMMENT '๋ด๋น์(๋ถ)', + ip_address VARCHAR(100) COMMENT 'IP ์ฃผ์ 1', + ip_address2 VARCHAR(100) COMMENT 'IP ์ฃผ์ 2', + mac_address VARCHAR(100) COMMENT 'MAC ์ฃผ์', + os VARCHAR(100), + cpu VARCHAR(255), + ram VARCHAR(100), + storage1 VARCHAR(255), + storage2 VARCHAR(255), + model_name VARCHAR(255), + purchase_date VARCHAR(50), + price VARCHAR(100), + vendor VARCHAR(255) COMMENT '๋ฉํ์ ์ฒด', + doc_name VARCHAR(255) COMMENT 'ํ์์๋ช ', + remote_tool VARCHAR(100) COMMENT '์๊ฒฉ๋๊ตฌ', + server_id VARCHAR(100), + server_pw VARCHAR(100), + monitoring VARCHAR(100), + remarks TEXT COMMENT '๋น๊ณ ', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `; + + // 3. ์ํํธ์จ์ด ์์ฐ ํ ์ด๋ธ + const createSwTable = ` + CREATE TABLE IF NOT EXISTS sw_assets ( + id VARCHAR(50) PRIMARY KEY, + type VARCHAR(50) NOT NULL COMMENT '๊ตฌ๋ SW, ์๊ตฌSW', + category VARCHAR(100) COMMENT '๋ถ์ผ', + corp VARCHAR(100) COMMENT '๊ตฌ๋งค๋ฒ์ธ', + dept VARCHAR(100) COMMENT '๋ถ์', + product_name VARCHAR(255) NOT NULL, + purchase_date VARCHAR(50), + subscription_date VARCHAR(50), + maintenance_status TINYINT(1) DEFAULT 0, + price VARCHAR(100), + quantity INT DEFAULT 1, + account_id VARCHAR(255) COMMENT '๊ณ์ ๋ช ', + vendor VARCHAR(255), + remarks TEXT, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `; + + // 4. ์ํํธ์จ์ด ์ฌ์ฉ์ ๋งคํ ํ ์ด๋ธ + const createSwUsersTable = ` + CREATE TABLE IF NOT EXISTS sw_users ( + id VARCHAR(50) PRIMARY KEY, + sw_id VARCHAR(50), + corp VARCHAR(100), + dept VARCHAR(100), + team VARCHAR(100), + position VARCHAR(50), + name VARCHAR(100), + usage_period VARCHAR(100), + doc_name VARCHAR(255), + FOREIGN KEY (sw_id) REFERENCES sw_assets(id) ON DELETE CASCADE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `; + + await connection.query(createHwTable); + await connection.query(createSwTable); + await connection.query(createSwUsersTable); + + console.log('โ ํ ์ด๋ธ ์์ฑ ์๋ฃ!'); + await connection.end(); + console.log('๐ DB ์ด๊ธฐํ ํ๋ก์ธ์ค ์ข ๋ฃ.'); +} + +initDB().catch(err => { + console.error('โ DB ์ด๊ธฐํ ์คํจ:', err); + process.exit(1); +}); diff --git a/index.html b/index.html index a5c94b1..d6f5132 100644 --- a/index.html +++ b/index.html @@ -8,68 +8,50 @@ + +