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) PROPERTY_TYPES = { 'house': 'Дом', 'villa': 'Вилла', 'flat': 'Квартира', 'room': 'Комната', 'hotel': 'Гостиница' } 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) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) 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)