import os
import mysql.connector


DB_CONFIG = {
    "host": os.environ.get("DB_HOST", "officialsite.kr"),
    "port": int(os.environ.get("DB_PORT", "23306")),
    "user": os.environ.get("DB_USER", "admin"),
    "password": os.environ.get("DB_PASSWORD", "dlgks~123"),
    "database": os.environ.get("DB_NAME", "app_master"),
}


CREATE_KIDSNOTE_PAYMENT_ORDERS = """
CREATE TABLE IF NOT EXISTS babynote_kidsnote_payment_orders (
  id VARCHAR(36) PRIMARY KEY,
  order_id VARCHAR(64) NOT NULL UNIQUE,
  user_id VARCHAR(36) NOT NULL,
  family_id VARCHAR(36) DEFAULT NULL,
  design_code VARCHAR(50) NOT NULL,
  design_name VARCHAR(100) NOT NULL,
  order_name VARCHAR(150) NOT NULL,
  period_type VARCHAR(20) DEFAULT NULL,
  period_label VARCHAR(100) DEFAULT NULL,
  start_date DATE NOT NULL,
  end_date DATE NOT NULL,
  diary_count INT NOT NULL DEFAULT 0,
  image_count INT NOT NULL DEFAULT 0,
  selected_diary_ids LONGTEXT DEFAULT NULL,
  selected_preview_urls LONGTEXT DEFAULT NULL,
  estimated_pages INT NOT NULL DEFAULT 0,
  cover_type ENUM('hard', 'soft') NOT NULL DEFAULT 'hard',
  pdf_addon BOOLEAN NOT NULL DEFAULT FALSE,
  total_price INT NOT NULL DEFAULT 0,
  status ENUM('ready', 'paid', 'pending', 'failed', 'cancelled') NOT NULL DEFAULT 'ready',
  request_id VARCHAR(36) DEFAULT NULL,
  payment_key VARCHAR(200) DEFAULT NULL,
  payment_method VARCHAR(50) DEFAULT NULL,
  approved_at DATETIME DEFAULT NULL,
  fail_reason VARCHAR(255) DEFAULT NULL,
  toss_response LONGTEXT DEFAULT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  INDEX idx_user_id (user_id),
  INDEX idx_family_id (family_id),
  INDEX idx_status (status),
  INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
"""


def run():
    connection = None
    cursor = None
    try:
        connection = mysql.connector.connect(**DB_CONFIG)
        cursor = connection.cursor()
        print("DB Connected")

        cursor.execute(CREATE_KIDSNOTE_PAYMENT_ORDERS)
        connection.commit()
        print("OK: create babynote_kidsnote_payment_orders")
    finally:
        if cursor is not None:
            cursor.close()
        if connection is not None and connection.is_connected():
            connection.close()
            print("DB connection closed")


if __name__ == "__main__":
    run()
