110 lines
3.2 KiB
Python
110 lines
3.2 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,
|
|
}
|