// 导出一个函数,这个函数是模块的主要接口。
// 它接受两个参数:数据库对象db(用于数据库操作)和一个回调函数callback(在模型定义后执行)。
module.exports = function(db, callback) {

    // 这一行开始定义了一个名为"ReportTwoModel"的模型。
    // db.define是数据库操作的一部分,用于创建一个新的模型。
    // 这个模型可能用于存储报表数据,特别是与页面相关的统计数据。
    db.define("ReportTwoModel", {

        // 以下是模型属性的定义部分。
        // 每个属性都映射到数据库表中的一个列。

        // id属性:这是模型的主键,用于唯一标识每条记录。
        // type: 'serial' 表示这是一个自增的整数序列。
        // key: true 表示这是主键字段。
        id: {type: 'serial', key: true}, 
        // 注释:这是报表记录的唯一标识ID,它是一个自增的主键。

        // rp2_page属性:用于存储与报表关联的页面名称。
        // 类型为String,表示这是一个字符串类型的字段。
        rp2_page: String, 
        // 注释:这是报表关联的页面名称,它是一个字符串类型的字段。

        // rp2_count属性:用于存储与页面相关的统计数据,如访问次数。
        // 类型为Number,表示这是一个数字类型的字段。
        rp2_count: Number,
        // 注释:这是与报表页面相关的统计数据,如访问次数,它是一个数字类型的字段。

        // rp2_date属性:用于存储报表的生成日期。
        // 类型为"date",并且time: false表示只存储日期部分,不存储时间部分。
        rp2_date: { type: "date", time: false } 
        // 注释:这是报表的生成日期,只包含日期部分,不包含时间部分,它是一个日期类型的字段。

    }, {

        // 以下是模型选项的定义部分。
        // 这些选项用于配置模型的行为或属性。

        // table选项:指定这个模型在数据库中对应的表名。
        // 在这个例子中,表名被指定为"sp_report_2"。
        table: "sp_report_2" 
        // 注释:这是模型对应的数据库表名,存储报表相关数据的表名为sp_report_2。

    });

    // 这一行调用了回调函数callback。
    // 回调函数是在模型定义完成后执行的,它不接受任何参数。
    // 在这个例子中,回调函数的调用表示ReportTwoModel模型已经成功定义。
    // 这之后,模型就可以在应用程序的其他部分被引用和使用了。
    return callback();
}