<cfsetting showdebugoutput="false">
<cfcontent type="application/json; charset=utf-8">
<cfscript>
try {
    // Create ChatMessages table
    queryTimed("
        CREATE TABLE IF NOT EXISTS ChatMessages (
            ID INT AUTO_INCREMENT PRIMARY KEY,
            TaskID INT NOT NULL,
            SenderUserID INT NOT NULL,
            SenderType ENUM('customer', 'worker') NOT NULL,
            MessageBody TEXT NOT NULL,
            IsRead TINYINT(1) DEFAULT 0,
            CreatedOn DATETIME DEFAULT NOW(),

            INDEX idx_task (TaskID),
            INDEX idx_sender (SenderUserID),
            INDEX idx_created (CreatedOn)
        )
    ", {}, { datasource: "payfrit" });

    // Also add a "Chat" category if it doesn't exist for business 17
    existing = queryTimed("
        SELECT ID FROM TaskCategories
        WHERE BusinessID = 17 AND Name = 'Chat'
    ", {}, { datasource: "payfrit" });

    if (existing.recordCount == 0) {
        queryTimed("
            INSERT INTO TaskCategories (BusinessID, Name, Color)
            VALUES (17, 'Chat', '##2196F3')
        ", {}, { datasource: "payfrit" });
    }

    // Verify table was created
    cols = queryTimed("DESCRIBE ChatMessages", {}, { datasource: "payfrit" });
    colNames = [];
    for (c in cols) {
        arrayAppend(colNames, c.Field);
    }

    writeOutput(serializeJSON({
        "OK": true,
        "MESSAGE": "ChatMessages table created successfully",
        "COLUMNS": colNames
    }));
} catch (any e) {
    writeOutput(serializeJSON({
        "OK": false,
        "ERROR": e.message
    }));
}
</cfscript>
