<cfsetting showdebugoutput="false">
<cfcontent type="application/json; charset=utf-8">
<cfscript>
try {
    // Create TaskRatings table
    queryTimed("
        CREATE TABLE IF NOT EXISTS TaskRatings (
            ID INT AUTO_INCREMENT PRIMARY KEY,
            TaskID INT NOT NULL,

            ByUserID INT NOT NULL,
            ForUserID INT NOT NULL,
            Direction VARCHAR(25) NOT NULL,

            -- Customer/Admin rates Worker
            OnTime TINYINT(1) NULL,
            CompletedScope TINYINT(1) NULL,
            RequiredFollowup TINYINT(1) NULL,
            ContinueAllow TINYINT(1) NULL,

            -- Worker rates Customer
            Prepared TINYINT(1) NULL,
            Respectful TINYINT(1) NULL,
            WouldAutoAssign TINYINT(1) NULL,

            -- For rating links in receipts
            AccessToken VARCHAR(64) NOT NULL UNIQUE,
            ExpiresOn DATETIME NOT NULL,

            -- Timestamps
            CreatedOn DATETIME DEFAULT CURRENT_TIMESTAMP,
            CompletedOn DATETIME NULL,

            INDEX idx_task (TaskID),
            INDEX idx_for_user (ForUserID),
            INDEX idx_by_user (ByUserID),
            INDEX idx_token (AccessToken)
        )
    ", {}, { datasource: "payfrit" });

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

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