feat: GTSIT 사이트 구축
This commit is contained in:
71
database/schema.sql
Normal file
71
database/schema.sql
Normal file
@@ -0,0 +1,71 @@
|
||||
CREATE TABLE IF NOT EXISTS admins (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
username VARCHAR(80) NOT NULL UNIQUE,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
display_name VARCHAR(100) NOT NULL,
|
||||
is_active TINYINT(1) NOT NULL DEFAULT 1,
|
||||
failed_attempts TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
locked_until DATETIME NULL,
|
||||
last_login_at DATETIME NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS posts (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
title VARCHAR(200) NOT NULL,
|
||||
slug VARCHAR(220) NOT NULL UNIQUE,
|
||||
category VARCHAR(50) NOT NULL,
|
||||
excerpt VARCHAR(500) NOT NULL DEFAULT '',
|
||||
body MEDIUMTEXT NOT NULL,
|
||||
author VARCHAR(100) NOT NULL DEFAULT '(주)지티에스정보통신',
|
||||
status ENUM('draft', 'published') NOT NULL DEFAULT 'draft',
|
||||
published_at DATETIME NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted_at DATETIME NULL,
|
||||
INDEX idx_posts_public (status, published_at, deleted_at),
|
||||
INDEX idx_posts_category (category)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS post_images (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
post_id BIGINT UNSIGNED NOT NULL,
|
||||
file_path VARCHAR(500) NOT NULL,
|
||||
alt_text VARCHAR(255) NOT NULL DEFAULT '',
|
||||
caption VARCHAR(500) NOT NULL DEFAULT '',
|
||||
sort_order SMALLINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT fk_post_images_post FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE CASCADE,
|
||||
INDEX idx_post_images_order (post_id, sort_order)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS inquiries (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
ticket VARCHAR(32) NOT NULL UNIQUE,
|
||||
name VARCHAR(120) NOT NULL,
|
||||
phone VARCHAR(30) NOT NULL,
|
||||
email VARCHAR(190) NULL,
|
||||
inquiry_type VARCHAR(60) NOT NULL,
|
||||
title VARCHAR(200) NOT NULL,
|
||||
body TEXT NOT NULL,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
status ENUM('pending', 'in_progress', 'replied', 'closed') NOT NULL DEFAULT 'pending',
|
||||
reply TEXT NULL,
|
||||
replied_at DATETIME NULL,
|
||||
closed_at DATETIME NULL,
|
||||
lookup_failed_attempts TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
lookup_locked_until DATETIME NULL,
|
||||
consent_at DATETIME NOT NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted_at DATETIME NULL,
|
||||
INDEX idx_inquiries_status (status, created_at),
|
||||
INDEX idx_inquiries_retention (closed_at, deleted_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS site_settings (
|
||||
setting_key VARCHAR(100) PRIMARY KEY,
|
||||
setting_value TEXT NOT NULL,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
Reference in New Issue
Block a user