#pragma once
#include<string>
#include<vector>
#include<map>

typedef struct FieldProperty
{
	std::string mFiledName; //字段名
	std::string mFieldType; // 字段类型
};

#define FiledPropertys std::vector<FieldProperty>



/**
*  数据库表模板
*/
class CivTableTemp
{
public:
	// 字段类型
	enum FieldType {
		FILED_INT,
		FILED_INTEGER,
		FILED_DOUBLE,
		FILED_VARCHAR,
		FILED_DATETIME,
		FILED_JSON
	};

	explicit CivTableTemp(std::string tableName);
	~CivTableTemp();

	/**
	*@brief 添加字段属性
	*@fileName：字段名
	*@filedType：字段类型
	*/
	void addProperty(std::string fileName, FieldType filedType);

	// 添加批量属性字段
	void addPropertys(FiledPropertys props);

	// 返回创建表的sql语句
	std::string createSql();

private:
	std::string mTableName; // 表明
	FiledPropertys mPropertys; // 字段和字段属性
	std::map< FieldType, std::string> mFieldTyepMap;
};
