Files
api2/api/models/order.py
T
2020-01-23 16:33:29 +01:00

107 lines
3.1 KiB
Python

# coding=UTF-8
from datetime import datetime
from api.extensions import db
from flask_sqlalchemy import BaseQuery
class Order(db.Model):
__tablename__ = "order-orders"
id = db.Column("orderid", db.Integer, primary_key=True)
inserted = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
updated = db.Column(db.DateTime)
fields = db.relationship("OrderOrderField", backref="order", lazy="dynamic")
rows = db.relationship("OrderRow", backref="order", lazy="dynamic")
class OrderFieldQuery(BaseQuery):
def by_name(self, name):
return self.filter(OrderField.name == name).first()
class OrderField(db.Model):
__tablename__ = "order-fields"
query_class = OrderFieldQuery
id = db.Column("fieldid", db.Integer, primary_key=True)
name = db.Column(db.String)
inserted = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
class OrderOrderField(db.Model):
__tablename__ = "order-orders_fields"
orderid = db.Column(
db.Integer, db.ForeignKey("order-orders.orderid"), nullable=False
)
fieldid = db.Column(
db.Integer, db.ForeignKey("order-fields.fieldid"), nullable=False
)
value = db.Column(db.String, nullable=False)
inserted = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
updated = db.Column(db.DateTime)
field = db.relationship("OrderField", uselist=False)
__table_args__ = (db.PrimaryKeyConstraint(orderid, fieldid),)
def to_json(self):
return {
"orderid": self.orderid,
"fieldid": self.fieldid,
"value": self.value,
"inserted": self.inserted,
}
class OrderRow(db.Model):
__tablename__ = "order-rows"
id = db.Column("rowid", db.Integer, primary_key=True)
orderid = db.Column(
db.Integer, db.ForeignKey("order-orders.orderid"), nullable=False
)
details = db.relationship("OrderRowDetail", backref="OrderRow", lazy="dynamic")
class OrderRowFieldQuery(BaseQuery):
def by_name(self, name):
return self.filter(OrderRowField.name == name).first()
class OrderRowField(db.Model):
__tablename__ = "order-row_fields"
query_class = OrderRowFieldQuery
id = db.Column("fieldid", db.Integer, primary_key=True, nullable=False)
name = db.Column(db.String)
inserted = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
updated = db.Column(db.DateTime)
class OrderRowDetail(db.Model):
__tablename__ = "order-rows_details"
rowid = db.Column(db.Integer, db.ForeignKey("order-rows.rowid"), nullable=False)
fieldid = db.Column(
db.Integer, db.ForeignKey("order-row_fields.fieldid"), nullable=False
)
value = db.Column(db.String)
inserted = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
updated = db.Column(db.DateTime)
field = db.relationship("OrderRowField", uselist=False)
__table_args__ = (db.PrimaryKeyConstraint(rowid, fieldid),)
def to_json(self):
return {
"rowid": self.rowid,
"fieldid": self.fieldid,
"value": self.value,
"inserted": self.inserted,
}