#pragma once

#include "DataFields.h"

/**
* 用户表结构字段
*/
namespace DMUser
{
    const string USER_ID = "user_id";
    const string ACCOUNT_ID = "account_id";
    const string FID_NAME = "name";
    const string FID_PHONE = "phone";
    const string FIELD_GENDER = "gender";
    const string FIELD_AGE = "age";
    const string CREATETIME = "create_time";
    const string UPDATETIME = "update_time";
}

/**
* 用户账户表结构字段
*/
namespace DMAccount
{
    const string TABLENAME = "account"; // 表名称
    const string USER_ID = "user_id";   // 用户ID
    const string ACCOUNT = "account";   // 账户名称
    const string NAME = "name";         // 用户姓名
    const string PHONE = "phone";       // 手机号
    const string GENDER = "gender";     // 性别
    const string STATUS = "status";     // 状态
    const string TYPE = "type";         // 类型
    const string BALANCE = "balance";   // 余额
    const string CREATE_TIME = "create_time";
    const string UPDATE_TIME = "update_time";
}

class DaoUser
{
public:
    /**
    * 创建新的用户
    * @param: [DataFields& fields] 用户信息
    */
    static bool insert_user(DataFields& fields);

    /**
    * 更新用户账户信息（更新条件：user_id）
    * @param: [std::string user_id] 用户ID
    * @param: [DataFields& fields] 用户信息
    */
    static bool update_user(std::string user_id, DataFields& fields);

    /**
    * 查询用户信息
    * @param: [PageInfo& pageinfo] 分页设置
    * @param: [vector<DataFields>& result] 查询结果集
    * @param: [string sql_c] 查询条件，例：where id='1'
    */
    static bool query_user(PageInfo& pageinfo, vector<DataFields>& result, string sql_c = "");

    /**
    * 根据车牌号码查询用户信息（需要联合用户表和车辆信息表）
    * @param: [string car_num] 车牌号
    * @param: [vector<DataFields>& result] 查询结果集
    */
    static bool query_user_by_car_num(string car_num, vector<DataFields>& result);
};
