<cfsetting showdebugoutput="false">
<cfsetting enablecfoutputonly="true">
<cfcontent type="application/json; charset=utf-8" reset="true">
<cfheader name="Cache-Control" value="no-store">

<cfscript>
/**
 * Add CategoryID column to Items table
 */

response = { "OK": false };

try {
    // Check if column already exists
    qCheck = queryTimed("
        SELECT COLUMN_NAME
        FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_SCHEMA = 'payfrit'
          AND TABLE_NAME = 'Items'
          AND COLUMN_NAME = 'CategoryID'
    ", {}, { datasource: "payfrit" });

    if (qCheck.recordCount > 0) {
        response["OK"] = true;
        response["MESSAGE"] = "CategoryID column already exists";
    } else {
        // Add the column
        queryTimed("
            ALTER TABLE Items
            ADD COLUMN CategoryID INT NULL DEFAULT 0 AFTER ParentItemID
        ", {}, { datasource: "payfrit" });

        // Add index for performance
        try {
            queryTimed("
                CREATE INDEX idx_items_categoryid ON Items(CategoryID)
            ", {}, { datasource: "payfrit" });
        } catch (any indexErr) {
            // Index might already exist
        }

        response["OK"] = true;
        response["MESSAGE"] = "CategoryID column added successfully";
    }

} catch (any e) {
    response["ERROR"] = "server_error";
    response["MESSAGE"] = e.message;
    response["DETAIL"] = e.detail;
}

writeOutput(serializeJSON(response));
</cfscript>
