From d3d8aa48b6fae6e322abbd66b6346cede2643fae Mon Sep 17 00:00:00 2001 From: COMTREE Date: Mon, 25 Aug 2025 14:08:44 +0900 Subject: [PATCH] cleanup: remove MariaDB dependencies and files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove MariaDB helper, schema, and initialization script - Remove mysql2 dependency from package.json - Update reset-admin.js to use SQLite DatabaseHelper - Simplify .env.example to remove MariaDB configuration - Update start-service.sh to use SQLite initialization - Clean up all MariaDB references across codebase ๐Ÿค– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .env.example | 7 +- database/mariadb-helper.js | 238 ------------------------------------ database/mariadb-schema.sql | 87 ------------- package.json | 2 - reset-admin.js | 21 ++-- scripts/init-mariadb.js | 108 ---------------- start-service.sh | 24 ++-- 7 files changed, 21 insertions(+), 466 deletions(-) delete mode 100644 database/mariadb-helper.js delete mode 100644 database/mariadb-schema.sql delete mode 100644 scripts/init-mariadb.js diff --git a/.env.example b/.env.example index cea29d1..0c35074 100644 --- a/.env.example +++ b/.env.example @@ -1,10 +1,5 @@ # ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ • ์˜ˆ์‹œ -# Windows ๊ฐœ๋ฐœํ™˜๊ฒฝ์šฉ MariaDB/MySQL ์—ฐ๊ฒฐ ์„ค์ • -DB_HOST=localhost -DB_PORT=3306 -DB_USER=root -DB_PASSWORD= -DB_NAME=jaryo +# SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ (์„ค์ • ๋ถˆํ•„์š”) # NAS ๋ฐฐํฌ ํ™˜๊ฒฝ NODE_ENV=development diff --git a/database/mariadb-helper.js b/database/mariadb-helper.js deleted file mode 100644 index 846eed3..0000000 --- a/database/mariadb-helper.js +++ /dev/null @@ -1,238 +0,0 @@ -const mysql = require('mysql2/promise'); -const { v4: uuidv4 } = require('uuid'); - -class MariaDBHelper { - constructor() { - this.connection = null; - - // ํ™˜๊ฒฝ๋ณ„ ์„ค์ • ์ง€์› - const isWindows = process.platform === 'win32'; - const isNAS = process.env.NODE_ENV === 'production' || process.env.DEPLOY_ENV === 'nas'; - - if (isWindows) { - // Windows ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (NAS MariaDB ์›๊ฒฉ ์ ‘์†) - this.config = { - host: process.env.DB_HOST || '119.64.1.86', - port: process.env.DB_PORT || 3306, - user: process.env.DB_USER || 'jaryo_user', - password: process.env.DB_PASSWORD || 'JaryoPass2024!@#', - database: process.env.DB_NAME || 'jaryo', - charset: 'utf8mb4' - }; - } else if (isNAS) { - // ์‹œ๋†€๋กœ์ง€ NAS ํ™˜๊ฒฝ (Unix Socket) - this.config = { - socketPath: '/run/mysqld/mysqld10.sock', - user: 'jaryo_user', - password: 'JaryoPass2024!@#', - database: 'jaryo', - charset: 'utf8mb4' - }; - } else { - // ๊ธฐํƒ€ Linux ํ™˜๊ฒฝ - this.config = { - host: process.env.DB_HOST || 'localhost', - port: process.env.DB_PORT || 3306, - user: process.env.DB_USER || 'jaryo_user', - password: process.env.DB_PASSWORD || 'JaryoPass2024!@#', - database: process.env.DB_NAME || 'jaryo', - charset: 'utf8mb4' - }; - } - } - - async connect() { - try { - if (!this.connection || this.connection.connection._closing) { - this.connection = await mysql.createConnection(this.config); - - const connectionType = this.config.socketPath ? 'Unix Socket' : `TCP ${this.config.host}:${this.config.port}`; - console.log(`โœ… MariaDB ์—ฐ๊ฒฐ ์„ฑ๊ณต (${connectionType})`); - } - return this.connection; - } catch (error) { - console.error('โŒ MariaDB ์—ฐ๊ฒฐ ์‹คํŒจ:', error); - console.error('์—ฐ๊ฒฐ ์„ค์ •:', { ...this.config, password: '***' }); - throw error; - } - } - - async close() { - if (this.connection) { - await this.connection.end(); - this.connection = null; - console.log('๐Ÿ“ MariaDB ์—ฐ๊ฒฐ ์ข…๋ฃŒ'); - } - } - - generateId() { - return uuidv4(); - } - - // ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ - async createUser(userData) { - const conn = await this.connect(); - const id = this.generateId(); - const [result] = await conn.execute( - 'INSERT INTO users (id, email, password_hash, name, role) VALUES (?, ?, ?, ?, ?)', - [id, userData.email, userData.password_hash, userData.name, userData.role || 'user'] - ); - return { id, ...result }; - } - - async getUserByEmail(email) { - const conn = await this.connect(); - const [rows] = await conn.execute( - 'SELECT * FROM users WHERE email = ?', - [email] - ); - return rows[0] || null; - } - - async getUserById(id) { - const conn = await this.connect(); - const [rows] = await conn.execute( - 'SELECT * FROM users WHERE id = ?', - [id] - ); - return rows[0] || null; - } - - async updateUserLastLogin(id) { - const conn = await this.connect(); - const [result] = await conn.execute( - 'UPDATE users SET last_login = CURRENT_TIMESTAMP WHERE id = ?', - [id] - ); - return result; - } - - // ํŒŒ์ผ ๊ด€๋ฆฌ - async addFile(fileData) { - const conn = await this.connect(); - const [result] = await conn.execute( - 'INSERT INTO files (id, title, description, category, tags, user_id) VALUES (?, ?, ?, ?, ?, ?)', - [fileData.id, fileData.title, fileData.description, fileData.category, JSON.stringify(fileData.tags), fileData.user_id] - ); - return result; - } - - async getAllFiles(limit = 100, offset = 0) { - const conn = await this.connect(); - const [rows] = await conn.execute( - 'SELECT f.*, u.name as user_name FROM files f LEFT JOIN users u ON f.user_id = u.id ORDER BY f.created_at DESC LIMIT ? OFFSET ?', - [limit, offset] - ); - - // Parse tags from JSON - return rows.map(row => ({ - ...row, - tags: row.tags ? JSON.parse(row.tags) : [] - })); - } - - async searchFiles(searchTerm, category = null, limit = 100) { - const conn = await this.connect(); - let query = 'SELECT f.*, u.name as user_name FROM files f LEFT JOIN users u ON f.user_id = u.id WHERE (f.title LIKE ? OR f.description LIKE ?)'; - let params = [`%${searchTerm}%`, `%${searchTerm}%`]; - - if (category) { - query += ' AND f.category = ?'; - params.push(category); - } - - query += ' ORDER BY f.created_at DESC LIMIT ?'; - params.push(limit); - - const [rows] = await conn.execute(query, params); - - return rows.map(row => ({ - ...row, - tags: row.tags ? JSON.parse(row.tags) : [] - })); - } - - async updateFile(id, updates) { - const conn = await this.connect(); - const [result] = await conn.execute( - 'UPDATE files SET title = ?, description = ?, category = ?, tags = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?', - [updates.title, updates.description, updates.category, updates.tags, id] - ); - return result; - } - - async deleteFile(id) { - const conn = await this.connect(); - const [result] = await conn.execute('DELETE FROM files WHERE id = ?', [id]); - return result; - } - - // ํŒŒ์ผ ์ฒจ๋ถ€ ๊ด€๋ฆฌ - async addFileAttachment(fileId, attachmentData) { - const conn = await this.connect(); - const [result] = await conn.execute( - 'INSERT INTO file_attachments (file_id, original_name, file_name, file_path, file_size, mime_type) VALUES (?, ?, ?, ?, ?, ?)', - [fileId, attachmentData.original_name, attachmentData.file_name, attachmentData.file_path, attachmentData.file_size, attachmentData.mime_type] - ); - return result; - } - - async getFileAttachments(fileId) { - const conn = await this.connect(); - const [rows] = await conn.execute( - 'SELECT * FROM file_attachments WHERE file_id = ? ORDER BY created_at', - [fileId] - ); - return rows; - } - - async deleteFileAttachment(attachmentId) { - const conn = await this.connect(); - const [result] = await conn.execute('DELETE FROM file_attachments WHERE id = ?', [attachmentId]); - return result; - } - - // ์นดํ…Œ๊ณ ๋ฆฌ ๊ด€๋ฆฌ - async getCategories() { - const conn = await this.connect(); - const [rows] = await conn.execute('SELECT * FROM categories ORDER BY name'); - return rows; - } - - async addCategory(name) { - const conn = await this.connect(); - const [result] = await conn.execute('INSERT INTO categories (name) VALUES (?)', [name]); - return result; - } - - async updateCategory(id, name) { - const conn = await this.connect(); - const [result] = await conn.execute('UPDATE categories SET name = ? WHERE id = ?', [name, id]); - return result; - } - - async deleteCategory(id) { - const conn = await this.connect(); - const [result] = await conn.execute('DELETE FROM categories WHERE id = ?', [id]); - return result; - } - - // ํ†ต๊ณ„ - async getStats() { - const conn = await this.connect(); - - const [userCount] = await conn.execute('SELECT COUNT(*) as count FROM users'); - const [fileCount] = await conn.execute('SELECT COUNT(*) as count FROM files'); - const [categoryCount] = await conn.execute('SELECT COUNT(*) as count FROM categories'); - const [attachmentCount] = await conn.execute('SELECT COUNT(*) as count FROM file_attachments'); - - return { - users: userCount[0].count, - files: fileCount[0].count, - categories: categoryCount[0].count, - attachments: attachmentCount[0].count - }; - } -} - -module.exports = MariaDBHelper; \ No newline at end of file diff --git a/database/mariadb-schema.sql b/database/mariadb-schema.sql deleted file mode 100644 index 2981875..0000000 --- a/database/mariadb-schema.sql +++ /dev/null @@ -1,87 +0,0 @@ --- ์ž๋ฃŒ์‹ค MariaDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ --- ํŒŒ์ผ: database/mariadb-schema.sql - --- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ -CREATE DATABASE IF NOT EXISTS jaryo -CHARACTER SET utf8mb4 -COLLATE utf8mb4_unicode_ci; - -USE jaryo; - --- ์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ” -CREATE TABLE IF NOT EXISTS users ( - id VARCHAR(36) PRIMARY KEY, - email VARCHAR(255) UNIQUE NOT NULL, - password_hash VARCHAR(255) NOT NULL, - name VARCHAR(100) NOT NULL, - role ENUM('admin', 'user') DEFAULT 'user', - is_active TINYINT(1) DEFAULT 1, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - last_login TIMESTAMP NULL, - INDEX idx_email (email), - INDEX idx_role (role) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - --- ์นดํ…Œ๊ณ ๋ฆฌ ํ…Œ์ด๋ธ” -CREATE TABLE IF NOT EXISTS categories ( - id INT AUTO_INCREMENT PRIMARY KEY, - name VARCHAR(100) UNIQUE NOT NULL, - is_default TINYINT(1) DEFAULT 0, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - INDEX idx_name (name) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - --- ํŒŒ์ผ ์ •๋ณด ํ…Œ์ด๋ธ” -CREATE TABLE IF NOT EXISTS files ( - id VARCHAR(36) PRIMARY KEY, - title VARCHAR(255) NOT NULL, - description TEXT, - category VARCHAR(100) NOT NULL DEFAULT '๊ธฐํƒ€', - tags JSON, - user_id VARCHAR(36), - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - INDEX idx_category (category), - INDEX idx_created_at (created_at), - INDEX idx_user_id (user_id), - INDEX idx_title (title), - FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - --- ํŒŒ์ผ ์ฒจ๋ถ€ ์ •๋ณด ํ…Œ์ด๋ธ” -CREATE TABLE IF NOT EXISTS file_attachments ( - id INT AUTO_INCREMENT PRIMARY KEY, - file_id VARCHAR(36) NOT NULL, - original_name VARCHAR(255) NOT NULL, - file_name VARCHAR(255) NOT NULL, - file_path TEXT NOT NULL, - file_size BIGINT DEFAULT 0, - mime_type VARCHAR(255), - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - INDEX idx_file_id (file_id), - INDEX idx_original_name (original_name), - FOREIGN KEY (file_id) REFERENCES files(id) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - --- ์„ธ์…˜ ํ…Œ์ด๋ธ” (์„ ํƒ์‚ฌํ•ญ) -CREATE TABLE IF NOT EXISTS user_sessions ( - id VARCHAR(255) PRIMARY KEY, - user_id VARCHAR(36) NOT NULL, - expires_at TIMESTAMP NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - INDEX idx_user_id (user_id), - INDEX idx_expires_at (expires_at), - FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - --- ๊ธฐ๋ณธ ์นดํ…Œ๊ณ ๋ฆฌ ๋ฐ์ดํ„ฐ ์‚ฝ์ž… -INSERT IGNORE INTO categories (name, is_default) VALUES -('๋ฌธ์„œ', 1), -('์ด๋ฏธ์ง€', 1), -('๋™์˜์ƒ', 1), -('ํ”„๋ ˆ์  ํ…Œ์ด์…˜', 1), -('๊ธฐํƒ€', 1); - --- ๊ธฐ๋ณธ ๊ด€๋ฆฌ์ž ๊ณ„์ • ์ƒ์„ฑ (๋น„๋ฐ€๋ฒˆํ˜ธ: Hee150603!) --- ์‹ค์ œ ํ•ด์‹œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค \ No newline at end of file diff --git a/package.json b/package.json index 706a564..15850c5 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,6 @@ "start": "node server.js", "dev": "node server.js", "init-db": "node scripts/init-database.js", - "init-mariadb": "node scripts/init-mariadb.js", "build": "echo 'Build complete'" }, "dependencies": { @@ -16,7 +15,6 @@ "express": "^4.18.2", "express-session": "^1.17.3", "multer": "^1.4.5-lts.1", - "mysql2": "^3.14.3", "sqlite3": "^5.1.6", "uuid": "^9.0.1" }, diff --git a/reset-admin.js b/reset-admin.js index b9046a8..4345c56 100644 --- a/reset-admin.js +++ b/reset-admin.js @@ -1,8 +1,8 @@ const bcrypt = require('bcrypt'); -const MariaDBHelper = require('./database/mariadb-helper'); +const DatabaseHelper = require('./database/db-helper'); async function resetAdminPassword() { - const dbHelper = new MariaDBHelper(); + const dbHelper = new DatabaseHelper(); try { console.log('๐Ÿ”„ ๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ ์ดˆ๊ธฐํ™” ์‹œ์ž‘...'); @@ -17,13 +17,16 @@ async function resetAdminPassword() { const existingUser = await dbHelper.getUserByEmail('admin@jaryo.com'); if (existingUser) { - // ๊ธฐ์กด ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ ์—…๋ฐ์ดํŠธ - const conn = await dbHelper.connect(); - const [result] = await conn.execute( - 'UPDATE users SET password_hash = ? WHERE email = ?', - [hashedPassword, 'admin@jaryo.com'] - ); - console.log('โœ… ๊ธฐ์กด ๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.'); + // ๊ธฐ์กด ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ ์—…๋ฐ์ดํŠธ (SQLite ์šฉ) + await dbHelper.connect(); + const query = 'UPDATE users SET password_hash = ? WHERE email = ?'; + dbHelper.db.run(query, [hashedPassword, 'admin@jaryo.com'], function(err) { + if (err) { + console.error('๋น„๋ฐ€๋ฒˆํ˜ธ ์—…๋ฐ์ดํŠธ ์‹คํŒจ:', err); + } else { + console.log('โœ… ๊ธฐ์กด ๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.'); + } + }); } else { // ์ƒˆ ๊ด€๋ฆฌ์ž ์‚ฌ์šฉ์ž ์ƒ์„ฑ const adminData = { diff --git a/scripts/init-mariadb.js b/scripts/init-mariadb.js deleted file mode 100644 index 2503478..0000000 --- a/scripts/init-mariadb.js +++ /dev/null @@ -1,108 +0,0 @@ -const bcrypt = require('bcrypt'); -const MariaDBHelper = require('../database/mariadb-helper'); - -async function initializeMariaDB() { - console.log('๐Ÿ—„๏ธ MariaDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ดˆ๊ธฐํ™” ์‹œ์ž‘...'); - - const dbHelper = new MariaDBHelper(); - - try { - // ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ - await dbHelper.connect(); - console.log('โœ… MariaDB ์—ฐ๊ฒฐ ์„ฑ๊ณต'); - - // ๊ธฐ๋ณธ ๊ด€๋ฆฌ์ž ๊ณ„์ • ์ƒ์„ฑ - const adminEmail = 'admin@jaryo.com'; - const adminPassword = 'Hee150603!'; - - const existingUser = await dbHelper.getUserByEmail(adminEmail); - - if (!existingUser) { - const saltRounds = 10; - const hashedPassword = await bcrypt.hash(adminPassword, saltRounds); - - const adminData = { - email: adminEmail, - password_hash: hashedPassword, - name: '๊ด€๋ฆฌ์ž', - role: 'admin' - }; - - await dbHelper.createUser(adminData); - console.log('๐Ÿ‘ค ๊ธฐ๋ณธ ๊ด€๋ฆฌ์ž ๊ณ„์ • ์ƒ์„ฑ๋จ'); - console.log('๐Ÿ“ง ์ด๋ฉ”์ผ:', adminEmail); - console.log('๐Ÿ”‘ ๋น„๋ฐ€๋ฒˆํ˜ธ:', adminPassword); - } else { - console.log('๐Ÿ‘ค ๊ด€๋ฆฌ์ž ๊ณ„์ •์ด ์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.'); - } - - // ๊ธฐ๋ณธ ์นดํ…Œ๊ณ ๋ฆฌ ํ™•์ธ ๋ฐ ์ƒ์„ฑ - const categories = await dbHelper.getCategories(); - const defaultCategories = ['๋ฌธ์„œ', '์ด๋ฏธ์ง€', '๋™์˜์ƒ', 'ํ”„๋ ˆ์  ํ…Œ์ด์…˜', '๊ธฐํƒ€']; - - for (const categoryName of defaultCategories) { - const existingCategory = categories.find(cat => cat.name === categoryName); - if (!existingCategory) { - try { - await dbHelper.addCategory(categoryName); - console.log(`๐Ÿ“‚ ์นดํ…Œ๊ณ ๋ฆฌ ์ƒ์„ฑ๋จ: ${categoryName}`); - } catch (error) { - if (error.code === 'ER_DUP_ENTRY') { - console.log(`๐Ÿ“‚ ์นดํ…Œ๊ณ ๋ฆฌ ์ด๋ฏธ ์กด์žฌ: ${categoryName}`); - } else { - console.error(`์นดํ…Œ๊ณ ๋ฆฌ ์ƒ์„ฑ ์˜ค๋ฅ˜ (${categoryName}):`, error.message); - } - } - } else { - console.log(`๐Ÿ“‚ ์นดํ…Œ๊ณ ๋ฆฌ ์ด๋ฏธ ์กด์žฌ: ${categoryName}`); - } - } - - console.log('๐ŸŽ‰ MariaDB ์ดˆ๊ธฐํ™” ์™„๋ฃŒ!'); - - } catch (error) { - console.error('โŒ MariaDB ์ดˆ๊ธฐํ™” ์‹คํŒจ:', error); - - // ์—ฐ๊ฒฐ ์˜ค๋ฅ˜์ธ ๊ฒฝ์šฐ ์ƒ์„ธํ•œ ๋„์›€๋ง ์ œ๊ณต - if (error.code === 'ECONNREFUSED' || error.code === 'ENOENT') { - console.log('\n๐Ÿ“‹ MariaDB ์—ฐ๊ฒฐ ํ™•์ธ์‚ฌํ•ญ:'); - - if (process.platform === 'win32') { - console.log('๐ŸชŸ Windows ๊ฐœ๋ฐœ ํ™˜๊ฒฝ:'); - console.log('1. MariaDB ๋˜๋Š” MySQL์ด ์„ค์น˜๋˜๊ณ  ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธ'); - console.log('2. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋˜๋Š” .env ํŒŒ์ผ์— DB ์—ฐ๊ฒฐ ์ •๋ณด ์„ค์ •'); - console.log(' - DB_HOST=localhost'); - console.log(' - DB_PORT=3306'); - console.log(' - DB_USER=root'); - console.log(' - DB_PASSWORD=your_password'); - console.log(' - DB_NAME=jaryo'); - console.log('\n๐Ÿ”ง Windows MySQL/MariaDB ์„ค์ •:'); - console.log('CREATE DATABASE jaryo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;'); - console.log('USE jaryo;'); - console.log('-- ๊ทธ ๋‹ค์Œ database/mariadb-schema.sql ํŒŒ์ผ ์‹คํ–‰'); - } else { - console.log('๐Ÿง Linux/NAS ํ™˜๊ฒฝ:'); - console.log('1. MariaDB๊ฐ€ ์„ค์น˜๋˜๊ณ  ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธ'); - console.log('2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค "jaryo"๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ'); - console.log('3. ์‚ฌ์šฉ์ž "jaryo_user"๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธ'); - console.log('4. Unix ์†Œ์ผ“ ๊ฒฝ๋กœ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธ: /run/mysqld/mysqld10.sock'); - console.log('\n๐Ÿ”ง NAS MariaDB ์„ค์ • ๋ช…๋ น์–ด:'); - console.log('CREATE DATABASE jaryo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;'); - console.log('CREATE USER \'jaryo_user\'@\'localhost\' IDENTIFIED BY \'JaryoPass2024!@#\';'); - console.log('GRANT ALL PRIVILEGES ON jaryo.* TO \'jaryo_user\'@\'localhost\';'); - console.log('FLUSH PRIVILEGES;'); - } - } - - process.exit(1); - } finally { - await dbHelper.close(); - } -} - -// ์Šคํฌ๋ฆฝํŠธ ์ง์ ‘ ์‹คํ–‰ ์‹œ์—๋งŒ ์ดˆ๊ธฐํ™” ์‹คํ–‰ -if (require.main === module) { - initializeMariaDB().catch(console.error); -} - -module.exports = initializeMariaDB; \ No newline at end of file diff --git a/start-service.sh b/start-service.sh index f776aa6..eeabf33 100644 --- a/start-service.sh +++ b/start-service.sh @@ -40,23 +40,16 @@ if [ ! -d "node_modules" ]; then $NPM_PATH install fi -# MariaDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ดˆ๊ธฐํ™” -echo "MariaDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ดˆ๊ธฐํ™” ์ค‘..." -if [ -f "scripts/init-mariadb.js" ]; then - # NAS ํ™˜๊ฒฝ ์„ค์ • - export NODE_ENV=production - export DEPLOY_ENV=nas - - if $NPM_PATH run init-mariadb; then - echo "โœ… MariaDB ์ดˆ๊ธฐํ™” ์™„๋ฃŒ" +# SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ดˆ๊ธฐํ™” (์„ ํƒ์ ) +if [ "$INIT_DB" = "true" ] && [ -f "scripts/init-database.js" ]; then + echo "SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ดˆ๊ธฐํ™” ์ค‘..." + if $NPM_PATH run init-db; then + echo "โœ… SQLite ์ดˆ๊ธฐํ™” ์™„๋ฃŒ" else - echo "โš ๏ธ MariaDB ์ดˆ๊ธฐํ™” ์‹คํŒจ" - echo "๐Ÿ’ก ์ˆ˜๋™์œผ๋กœ MariaDB๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." - echo "์ž์„ธํ•œ ๋‚ด์šฉ์€ mariadb-setup.md๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”." + echo "โš ๏ธ SQLite ์ดˆ๊ธฐํ™” ์‹คํŒจ" fi else - echo "โš ๏ธ MariaDB ์ดˆ๊ธฐํ™” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค." - echo "๐Ÿ’ก ์ˆ˜๋™์œผ๋กœ MariaDB๋ฅผ ์„ค์ •ํ•˜์„ธ์š”." + echo "โ„น๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ดˆ๊ธฐํ™” ๊ฑด๋„ˆ๋œ€ (INIT_DB=true๋กœ ์„ค์ •์‹œ ์ดˆ๊ธฐํ™”)" fi # ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ @@ -72,9 +65,8 @@ fi # ์„œ๋น„์Šค ์‹œ์ž‘ echo "์„œ๋น„์Šค ์‹œ์ž‘ ์ค‘..." -# NAS ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • +# NAS ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • (SQLite ์‚ฌ์šฉ) export NODE_ENV=production -export DEPLOY_ENV=nas export HOST=0.0.0.0 export PORT=3005