2025-01-04 19:57:22 +08:00
|
|
|
from app import db
|
|
|
|
|
from flask_login import UserMixin
|
|
|
|
|
|
|
|
|
|
class User(db.Model, UserMixin):
|
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
|
|
|
email = db.Column(db.String(150), unique=True, nullable=False)
|
|
|
|
|
password = db.Column(db.String(60), nullable=False)
|
|
|
|
|
phone = db.Column(db.String(20), nullable=False)
|
|
|
|
|
is_host = db.Column(db.Boolean, default=False)
|
|
|
|
|
|
|
|
|
|
class Listing(db.Model):
|
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
|
|
|
title = db.Column(db.String(150), nullable=False)
|
|
|
|
|
description = db.Column(db.Text, nullable=False)
|
|
|
|
|
price = db.Column(db.Float, nullable=False)
|
|
|
|
|
location = db.Column(db.String(150), nullable=False)
|
|
|
|
|
property_type = db.Column(db.String(50), nullable=False)
|
|
|
|
|
host_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
|
|
|
|
|
images = db.relationship('Image', backref='listing', lazy=True)
|
|
|
|
|
latitude = db.Column(db.Float, nullable=True)
|
|
|
|
|
longitude = db.Column(db.Float, nullable=True)
|
2025-01-16 18:22:38 +08:00
|
|
|
guests = db.Column(db.Integer, nullable=False, default=1)
|
2025-01-04 19:57:22 +08:00
|
|
|
|
2025-01-16 13:23:50 +08:00
|
|
|
PROPERTY_TYPES = {
|
|
|
|
|
'house': 'Дом',
|
|
|
|
|
'villa': 'Вилла',
|
|
|
|
|
'flat': 'Квартира',
|
|
|
|
|
'room': 'Комната',
|
|
|
|
|
'hotel': 'Гостиница'
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-04 19:57:22 +08:00
|
|
|
class Image(db.Model):
|
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
|
|
|
url = db.Column(db.String(300), nullable=False)
|
|
|
|
|
listing_id = db.Column(db.Integer, db.ForeignKey('listing.id'), nullable=False)
|
|
|
|
|
|
|
|
|
|
class Booking(db.Model):
|
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
2025-01-12 20:20:16 +08:00
|
|
|
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
|
2025-01-04 19:57:22 +08:00
|
|
|
listing_id = db.Column(db.Integer, db.ForeignKey('listing.id'), nullable=False)
|
|
|
|
|
check_in = db.Column(db.DateTime, nullable=False)
|
|
|
|
|
check_out = db.Column(db.DateTime, nullable=False)
|
|
|
|
|
guests = db.Column(db.Integer, nullable=False)
|