from settings import *

class BaseModel(Model):
    class Meta:
        database = db

#设计数据表的时候有几个重要点一定要注意
"""
char类型, 要设置最大长度
对于无法确定最大长度的字段,可以设置为Text
设计表的时候 采集到的数据要尽量先做格式化处理
default和null=True
"""
class qunar_Hotel_data(BaseModel): #酒店信息
    hotel_district = CharField(max_length=2000) # 酒店所在行政区域
    hotel_city = CharField(max_length=2000) # 酒店所在城市
    hotel_name = CharField(max_length=2000) # 酒店名称
    hotel_level = CharField(max_length=2000) # 酒店等级,可能不存在
    hotel_score = CharField(max_length=200) # 酒店评分
    hotel_price = DoubleField(default=0.0) # 酒店价格
    hotel_commentCount = IntegerField(default=0) # 酒店评论数
    hotel_negativeCount = IntegerField(default=0) # 酒店差评数
    hotel_neutralCount = IntegerField(default=0) # 酒店中评数
    hotel_positiveCount = IntegerField(default=0) # 酒店好评数
    hotel_Number = CharField(max_length=1000) # 酒店电话号码
    hotel_LocationInfo = CharField(max_length=2000) #酒店位置信息
    hotel_image = CharField(max_length=2000) # 酒店图片信息
    create_time = DateTimeField() # 抓取时间

class qunar_Vacation_Product(BaseModel): # 度假产品
    product_title = CharField(max_length=2000) # 度假产品名称
    product_district = CharField(max_length=200) # 度假产品区域,用于筛选度假产品数量是否一致
    product_city = CharField(max_length=200) # 度假产品管辖城市
    product_price = FloatField(default=0.0) # 度假产品价格
    product_score = FloatField(default=0.0) # 度假产品评分
    product_commentCount = IntegerField() # 度假产品的评论数
    product_negativeCount = IntegerField(default=0) # 度假产品差评数
    product_neutralCount = IntegerField(default=0) # 度假产品中评数
    product_positiveCount = IntegerField(default=0) # 度假产品好评数
    product_soldCount = IntegerField() # 度假产品的销量
    traffic_tool = CharField(max_length=200) # 出行工具
    tripTime = CharField(max_length=200) # 度假时长
    hotel_night = IntegerField() # 住宿时长
    supplier_name = CharField(max_length=200) # 商家名称
    supplier_url = CharField(max_length=2000) # 商家url链接
    create_time = DateTimeField() # 抓取时间

class qunar_Store(BaseModel): # 商家信息
    store_name = CharField(max_length=2000) # 商户认证的名称
    store_score = FloatField(0.0) # 商户的评分
    store_rankline = IntegerField(0) # 商户的行业水平标准
    store_percent = FloatField(0.0) # 商户和同行业的比较
    company_name = CharField(max_length=2000) # 公司名称
    company_legal_person = CharField(max_length=200) # 公司法人
    licence_num = CharField(max_length=2000) # 许可证编号
    trading_certificate = CharField(max_length=2000) # 营业执照
    business_scope = CharField(max_length=2000) # 营业范围
    create_time = DateTimeField() # 抓取时间
    
class qunar_List_City(BaseModel): # 城市
    _id = AutoField(primary_key=True) # 城市排序ID
    _id.auto_increment = True
    district_name = CharField(max_length=200) # 行政区域名字
    district_spell = CharField(max_length=200) # 行政区域拼音
    city_name = CharField(max_length=200) # 归辖城市名称
    city_spell = CharField(max_length=200) # 城市拼音
    create_time = DateTimeField() # 抓取时间

class qunar_Tickets(BaseModel): # 门票信息
    ticket_name = CharField(max_length=2000) # 门票景点名字
    ticket_pic = CharField(max_length=2000) # 门票景点照片
    ticket_level = CharField(max_length=2000) # 门票景点等级
    ticket_city = CharField(max_length=2000) # 门票景点城市
    ticket_district = CharField(max_length=2000) # 景点所属管辖区域
    ticket_location = CharField(max_length=2000) # 门票景点位置
    ticket_commentCount = IntegerField(default=0) # 门票景点评论数
    ticket_negativeCount = IntegerField(default=0) # 门票景点差评数
    ticket_neutralCount = IntegerField(default=0) # 门票景点中评数
    ticket_positiveCount = IntegerField(default=0) # 门票景点好评数
    ticket_price = FloatField(0.0) # 票价
    ticket_sales = IntegerField(0) # 销量
    create_time = DateTimeField() # 抓取时间

class List_City(BaseModel): # 城市
    _id = AutoField(primary_key=True) # 城市排序ID
    _id.auto_increment = True
    province_name = CharField(max_length=200) # 省及直辖市区域名字
    district_name = CharField(max_length=200) # 行政区域名字
    district_spell = CharField(max_length=200) # 行政区域拼音
    city_name = CharField(max_length=200) # 归辖城市名称
    city_spell = CharField(max_length=200) # 城市拼音
    create_time = DateTimeField() # 抓取时间

class regions(BaseModel): # 城市
    city_id = IntegerField(primary_key=True)
    area_name = CharField(max_length=200) 
    area_code = IntegerField()
    pre_code = IntegerField()
    latitude = CharField(max_length=200) 
    longitude = CharField(max_length=200) 
    md5 = CharField(max_length=200) 
    is_delete = IntegerField() 
    update_time = DateTimeField() # 抓取时间

def create_tables():
    db.create_tables([regions,List_City,qunar_List_City,qunar_Hotel_data,qunar_Vacation_Product,qunar_Store,qunar_Tickets])