from settings import *

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

#设计数据表的时候有几个重要点一定要注意
"""
char类型, 要设置最大长度
对于无法确定最大长度的字段,可以设置为Text
设计表的时候 采集到的数据要尽量先做格式化处理
default和null=True
"""
class 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 Vacation_Product(BaseModel): # 度假产品
    product_title = CharField(max_length=2000) # 度假产品名称
    product_city = CharField(max_length=200) # 度假产品目的城市,用于筛选度假产品数量是否一致
    product_price = FloatField(default=0.0) # 度假产品价格
    product_score = FloatField(default=0.0) # 度假产品评分
    product_reviews = IntegerField() # 度假产品的评论数
    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 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 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 Tickets(BaseModel): # 门票信息
    ticket_name = CharField(max_length=2000) # 门票景点名字
    ticket_level = CharField(max_length=2000) # 门票景点等级
    ticket_district = CharField(max_length=2000) # 景点所属管辖区域
    ticket_location = CharField(max_length=2000) # 门票景点位置
    ticket_price = FloatField(0.0) # 票价
    ticket_sales = IntegerField(0) # 销量
    create_time = DateTimeField() # 抓取时间
    
def create_tables():
    db.create_tables([List_City,Hotel_data,Vacation_Product,Store,Tickets])