/
Odisseywolf
/
BioSphere
Обзор
Документация
Войти
/
Odisseywolf
/
BioSphere
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
server/models.py
73 строки
3 KB
Odisseywolf
create: LICENSE, install.bat , install.sh , main.py, README.md, requirements.txt, main.py, auth.py, simulation.py, actions.py, database.py, models.py, config.py
27 май 2026, 16:28
Верифицирован
27 май 2026, 16:28
d6b5588
Код
Авторство
О чём код?
# FILE: server/models.py from sqlalchemy import Column, Integer, String, Float, Boolean, DateTime, Text, ForeignKey from sqlalchemy.orm import relationship from database import Base from datetime import datetime class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True, index=True) username = Column(String(50), unique=True, index=True) email = Column(String(100), unique=True, index=True) full_name = Column(String(100)) role = Column(String(20), default="player") # player, teacher, biologist, moderator, admin hashed_password = Column(String(128)) eco_units = Column(Integer, default=100) created_at = Column(DateTime, default=datetime.utcnow) achievements = relationship("AchievementLog", back_populates="player") actions = relationship("PlayerAction", back_populates="player") class Zone(Base): __tablename__ = "zones" id = Column(Integer, primary_key=True, index=True) q = Column(Integer) r = Column(Integer) climate = Column(String(50)) elevation = Column(Float) temp = Column(Float) humidity = Column(Float) soil_N = Column(Float) soil_organic = Column(Float) co2 = Column(Float) o2 = Column(Float) species = Column(Text) # JSON-like string has_water = Column(Boolean, default=False) water_type = Column(String(20)) simulation_id = Column(Integer, ForeignKey("simulations.id")) class Simulation(Base): __tablename__ = "simulations" id = Column(Integer, primary_key=True, index=True) name = Column(String(100)) speed = Column(Float, default=1.0) # years per minute is_running = Column(Boolean, default=True) current_year = Column(Integer, default=0) current_day = Column(Integer, default=0) owner_id = Column(Integer, ForeignKey("users.id")) zones = relationship("Zone", backref="simulation") owner = relationship("User") class AchievementLog(Base): __tablename__ = "achievements" id = Column(Integer, primary_key=True, index=True) achievement_key = Column(String(50)) unlocked_at = Column(DateTime, default=datetime.utcnow) player_id = Column(Integer, ForeignKey("users.id")) player = relationship("User", back_populates="achievements") class PlayerAction(Base): __tablename__ = "player_actions" id = Column(Integer, primary_key=True, index=True) action_type = Column(String(50)) # remove_species, call_rain, etc. cost = Column(Integer, default=0) target = Column(String(100)) timestamp = Column(DateTime, default=datetime.utcnow) player_id = Column(Integer, ForeignKey("users.id")) player = relationship("User", back_populates="actions")