import os

import mysql.connector
from mysql.connector import Error


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"),
}


def add_column(cursor):
    try:
        cursor.execute(
            "ALTER TABLE notifications "
            "ADD COLUMN kidsnote_preview_id VARCHAR(36) NULL "
            "COMMENT '관련 포토북 미리보기 ID' AFTER comment_id"
        )
        print("OK: notifications.kidsnote_preview_id added")
    except Error as error:
        if error.errno == 1060:
            print("SKIP: notifications.kidsnote_preview_id already exists")
        else:
            raise


def add_index(cursor):
    try:
        cursor.execute(
            "ALTER TABLE notifications "
            "ADD INDEX idx_kidsnote_preview_id (kidsnote_preview_id)"
        )
        print("OK: idx_kidsnote_preview_id added")
    except Error as error:
        if error.errno == 1061:
            print("SKIP: idx_kidsnote_preview_id already exists")
        else:
            raise


def run():
    connection = None
    cursor = None
    try:
        connection = mysql.connector.connect(**DB_CONFIG)
        cursor = connection.cursor()
        add_column(cursor)
        add_index(cursor)
        connection.commit()
        print("Kidsnote preview notification migration completed")
    finally:
        if cursor is not None:
            cursor.close()
        if connection is not None and connection.is_connected():
            connection.close()


if __name__ == "__main__":
    run()
