/
Evdik
/
Integration_System_labs4
Обзор
Документация
Войти
/
Evdik
/
Integration_System_labs4
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
models.py
109 строк
4 KB
Evdikkom
first
22 ноя 2025, 12:27
22 ноя 2025, 12:27
8ded1dc
Код
Авторство
О чём код?
from sqlalchemy import create_engine, Column, Integer, String, Float, Text, Boolean, DateTime, ForeignKey, Date from sqlalchemy.orm import declarative_base from sqlalchemy.orm import sessionmaker, relationship from datetime import datetime import hashlib Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) username = Column(String(80), unique=True, nullable=False) email = Column(String(120), unique=True, nullable=False) password_hash = Column(String(128), nullable=False) balance = Column(Float, default=0.0) role = Column(String(20), default='user') is_active = Column(Boolean, default=True) last_login = Column(DateTime) created_at = Column(DateTime, default=datetime.utcnow) updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) class Game(Base): __tablename__ = 'games' id = Column(Integer, primary_key=True) title = Column(String(100), nullable=False) description = Column(Text) price = Column(Float, nullable=False) developer = Column(String(100)) publisher = Column(String(100)) release_date = Column(Date) genre = Column(String(50)) platform = Column(String(50)) is_available = Column(Boolean, default=True) image_url = Column(String(200)) created_at = Column(DateTime, default=datetime.utcnow) updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) class Order(Base): __tablename__ = 'orders' id = Column(Integer, primary_key=True) user_id = Column(Integer, ForeignKey('users.id'), nullable=False) total_amount = Column(Float, nullable=False) status = Column(String(20), default='pending') created_at = Column(DateTime, default=datetime.utcnow) updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) user = relationship('User', backref='orders') class OrderItem(Base): __tablename__ = 'order_items' id = Column(Integer, primary_key=True) order_id = Column(Integer, ForeignKey('orders.id'), nullable=False) game_id = Column(Integer, ForeignKey('games.id'), nullable=False) quantity = Column(Integer, default=1) price_at_purchase = Column(Float, nullable=False) order = relationship('Order', backref='order_items') game = relationship('Game', backref='order_items') class GameKey(Base): __tablename__ = 'game_keys' id = Column(Integer, primary_key=True) game_id = Column(Integer, ForeignKey('games.id'), nullable=False) key = Column(String(100), unique=True, nullable=False) is_used = Column(Boolean, default=False) order_item_id = Column(Integer, ForeignKey('order_items.id'), nullable=True) created_at = Column(DateTime, default=datetime.utcnow) game = relationship('Game', backref='game_keys') class Review(Base): __tablename__ = 'reviews' id = Column(Integer, primary_key=True) user_id = Column(Integer, ForeignKey('users.id'), nullable=False) game_id = Column(Integer, ForeignKey('games.id'), nullable=False) rating = Column(Integer, nullable=False) comment = Column(Text) is_verified = Column(Boolean, default=False) created_at = Column(DateTime, default=datetime.utcnow) updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) user = relationship('User', backref='reviews') game = relationship('Game', backref='reviews') class ProcessedMessage(Base): __tablename__ = 'processed_messages' id = Column(Integer, primary_key=True) message_id = Column(String(36), unique=True, nullable=False) processed_at = Column(DateTime, default=datetime.utcnow) response_data = Column(Text) def init_database(): from config import Config engine = create_engine(Config.DATABASE_URL) Base.metadata.create_all(engine) return engine def hash_password(password): return hashlib.sha256(password.encode()).hexdigest() def verify_password(password, password_hash): return hash_password(password) == password_hash