class Customer(db.Model): id = db.Column(db.Integer, primary_key=True) created_at = db.Column(db.DateTime, index=True, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow) email = db.Column(db.String(120), index=True, unique=True) name = db.Column(db.String(60)) # Relationship: One-to-Many orders = db.relationship('Order', backref='customer', lazy='dynamic') def __repr__(self): return '<Customer ID: {} Email: {}>'.format(self.id, self.email)
class Admin(UserMixin, db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), index=True, unique=True) email = db.Column(db.String(120), index=True, unique=True) password_hash = db.Column(db.String(128)) def __repr__(self): return '<Admin {}>'.format(self.username) def set_password(self, password): self.password_hash = generate_password_hash(password) def check_password(self, password): return check_password_hash(self.password_hash, password)
class Product(db.Model): id = db.Column(db.Integer, primary_key=True) created_at = db.Column(db.DateTime, index=True, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow) sku = db.Column(db.String(30), unique=True) weight = db.Column(db.Integer) length = db.Column(db.Integer) width = db.Column(db.Integer) height = db.Column(db.Integer) description = db.Column(db.String(60)) price = db.Column(db.Integer) ship_req_id = db.Column( db.Integer) # "Dummy" foreign key (TO DO: Create ShipReq table) # Relationship: One-to-Many line_items = db.relationship('LineItem', backref='product', lazy='dynamic') def __repr__(self): return '<Product ID: {}>'.format(self.id)
class Parcel(db.Model): id = db.Column(db.Integer, primary_key=True) created_at = db.Column(db.DateTime, index=True, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow) max_weight = db.Column(db.Integer) length = db.Column(db.Integer) width = db.Column(db.Integer) height = db.Column(db.Integer) package_type = db.Column(db.String(30)) # Relationships: One-to-Many shipments = db.relationship('Shipment', backref='parcel', lazy='dynamic') def __repr__(self): return '<Parcel ID: {} Max Wt: {}>'.format(self.id, self.max_weight)
class Carrier(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30)) created_at = db.Column(db.DateTime, index=True, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow) ep_carrier_id = db.Column(db.String(60)) from_country = db.Column(db.String(30)) from_state = db.Column(db.String(30)) to_country = db.Column(db.String(30)) to_state = db.Column(db.String(30)) # Relationships One-to-Many # shipments = db.relationship('Shipment', backref='carrier', lazy='dynamic') def __repr__(self): return '<Carrier ID: {} Carrier Name: {}>'.format(self.id, self.name)
class Address(db.Model): id = db.Column(db.Integer, primary_key=True) created_at = db.Column(db.DateTime, index=True, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow) company = db.Column(db.String(30)) name = db.Column(db.String(60)) email = db.Column(db.String(60)) street1 = db.Column(db.String(30)) street2 = db.Column(db.String(30)) street3 = db.Column(db.String(30)) city = db.Column(db.String(30)) state = db.Column(db.String(2)) zip = db.Column(db.String(10)) country = db.Column(db.String(2), default='US') residential = db.Column(db.Boolean()) verified = db.Column(db.Boolean()) ep_address_id = db.Column(db.String(30)) # shipments = db.relationship('Shipment', backref='address', lazy='dynamic') def __repr__(self): return '<Address ID: {}>'.format(self.id)