class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True, autoincrement=True) display_name = db.Column(db.String(15), nullable=False) image = db.Column(db.String(255)) name = db.Column(db.String(50), nullable=False) name_ruby = db.Column(db.String(50), nullable=False) birthday = db.Column(db.Date) payment = db.Column(db.String(255)) created_at = db.Column(db.DateTime, nullable=False, default=datetime.now) updated_at = db.Column(db.DateTime, nullable=False, default=datetime.now, onupdate=datetime.now) auth = db.relationship('Auth', backref='user') item = db.relationship('Item', backref='user') def __init__(self, display_name, image='', name='', name_ruby='', birthday='', payment=''): self.display_name = display_name self.image = image self.name = name self.name_ruby = name_ruby self.birthday = birthday self.payment = payment def setAttr(self, display_name, image='', name='', name_ruby='', birthday='', payment=''): self.display_name = display_name self.image = image self.name = name self.name_ruby = name_ruby self.birthday = birthday self.payment = payment def postRecord(self): db.session.add(self) db.session.commit() return self @classmethod def getUserInfo(cls, user_id): record = cls.query.filter_by(id=user_id).first() return record
class Candlestick(db.Model): __tablename__ = 'candlesticks' __table_args__ = (db.UniqueConstraint( 'datetime', 'asset_id', name='unique_candlesticks_date_asset_id'), ) id = db.Column(db.Integer, primary_key=True, autoincrement=True) datetime = db.Column(db.DateTime, nullable=False) low_price = db.Column(db.Float, nullable=True, default=None) high_price = db.Column(db.Float, nullable=True, default=None) open_price = db.Column(db.Float, nullable=True, default=None) close_price = db.Column(db.Float, nullable=True, default=None) volume = db.Column(db.Float, nullable=True) weighted_volume = db.Column(db.Float, nullable=True) asset_id = db.Column(db.Integer, db.ForeignKey('assets.id')) asset = db.relationship('Asset', back_populates='candlesticks', uselist=False) def __repr__(self) -> str: return ( f'Candlestick(datetime={self.datetime}, close_price={self.close_price}, open_price={self.open_price}, ' f'low_price={self.low_price}, high_price={self.high_price}), volume={self.volume}' ) __str__ = __repr__
class Item(db.Model): __tablename__ = 'item' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(20), nullable=False) # 商品名 description = db.Column(db.Text) # 商品説明文 period = db.Column(db.Integer, nullable=False) # 販売日数 remaining_days = db.Column(db.Integer, nullable=False) remaining_format_id = db.Column( db.Integer, db.ForeignKey('remaining_format.id', onupdate='CASCADE', ondelete='CASCADE')) category_id = db.Column(db.Integer, db.ForeignKey('category.id', onupdate='CASCADE', ondelete='CASCADE')) # 設定したカテゴリのID shipment = db.Column(db.Integer, nullable=False) # 配送にかかる時間(日) price = db.Column(db.Integer, nullable=False) # 商品の値段 state = db.Column(db.Integer) # 商品の状態 user_id = db.Column( db.Integer, db.ForeignKey('user.id', onupdate='CASCADE', ondelete='CASCADE')) created_at = db.Column(db.DateTime, nullable=False, default=datetime.now) updated_at = db.Column(db.DateTime, nullable=False, default=datetime.now, onupdate=datetime.now) item_image = db.relationship('ItemImage', backref='item') def __init__(self, name=None, description=None, period=None, remaining_days=None, remaining_format_id=None, category_id=None, shipment=None, price=None, state=None, user_id=None): self.name = name self.description = description self.period = period self.remaining_days = remaining_days self.remaining_format_id = remaining_format_id self.category_id = category_id self.shipment = shipment self.price = price self.state = state self.user_id = user_id def postRecord(self): db.session.add(self) db.session.commit() @classmethod def getProductById(cls, item_id): record = cls.query.filter_by(id=item_id).first() return record
class Asset(db.Model): __tablename__ = 'assets' id = db.Column(db.Integer, primary_key=True, autoincrement=True) ticker = db.Column(db.String, nullable=True, default=True) isin = db.Column(db.String, nullable=True, default=True) currency = db.Column(db.String, nullable=True, default='USD') candlesticks = db.relationship('Candlestick', back_populates='asset') def __repr__(self) -> str: return f'Asset(isin={self.isin}, currency={self.currency}, ticker={self.ticker})' __str__ = __repr__
class Page(db.Model): __tablename__ = "pages" # table name will default to name of the model # Create columns id = db.Column(db.Integer, primary_key=True) # page name name = db.Column(db.String(length=120)) # Creation time for page. created = db.Column(db.DateTime, default=datetime.utcnow) # set relationship pages = db.relationship('LanguageDetail', backref='pages', lazy=True) # this is not essential, but a valuable method to overwrite as this is what we will see when we print out an instance in a REPL. def __repr__(self): return "<Page(id='%s', name='%s', created='%s')>" % ( self.id, self.name, self.created)
class RemainingFormat(db.Model): __tablename__ = 'remaining_format' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(255), nullable=False) created_at = db.Column(db.DateTime, nullable=False, default=datetime.now) updated_at = db.Column(db.DateTime, nullable=False, default=datetime.now, onupdate=datetime.now) item = db.relationship('Item', backref='remaining_format') def __init__(self, name=''): self.name = name def setAttr(self, name=''): self.name = name def postRecord(self): db.session.add(self) db.session.commit() return self @classmethod def getRecord(cls, category_id): record = cls.query.filter_by(id=category_id).first() return record @classmethod def addTestData(cls): models = [] data_lists = ['whole', 'day', 'week', 'month'] for data in data_lists: models.append(cls(data)) db.session.add_all(models) db.session.commit()
class Category(db.Model): __tablename__ = 'category' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(255), nullable=False) created_at = db.Column(db.DateTime, nullable=False, default=datetime.now) updated_at = db.Column(db.DateTime, nullable=False, default=datetime.now, onupdate=datetime.now) item = db.relationship('Item', backref='category') def __init__(self, name=''): self.name = name def setAttr(self, name=''): self.name = name def postRecord(self): db.session.add(self) db.session.commit() return self @classmethod def getCategory(cls, category_id): record = cls.query.filter_by(id=category_id).first() return record @classmethod def addTestData(cls): categories = [] data_lists = ['grain', 'vegetable', 'fruit', 'other'] for data in data_lists: categories.append(cls(data)) db.session.add_all(categories) db.session.commit()