class Well(DataFrameMixin, db.Model): __tablename__ = "wells" # __table_args__ = {"schema": schema} id = db.Column(db.Integer, primary_key=True, nullable=False) well_name = db.Column(db.String(), nullable=True) well_type = db.Column(db.String(), nullable=True) well_alias = db.Column(db.String(), nullable=True) is_active = db.Column(db.Boolean(), default=False, nullable=False) latest_production_time = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) iwell_created_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) iwell_updated_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) created_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) updated_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) groups = db.relationship("WellGroupWell", backref="well", lazy=True) meters = db.relationship("Meter", backref="well", lazy=True) # meter_readings = db.relationship("MeterReading", backref="well", lazy=True) notes = db.relationship("WellNote", backref="well", lazy=True) fields = db.relationship("WellField", backref="well", lazy=True) # field_values = db.relationship("FieldValue", backref="well", lazy=True) production = db.relationship("Production", backref="well", lazy=True)
class WellField(DataFrameMixin, db.Model): __tablename__ = "well_fields" # __table_args__ = {"schema": schema} field_id = db.Column(db.Integer, db.ForeignKey(f"fields.id"), primary_key=True, nullable=False) well_id = db.Column(db.Integer, db.ForeignKey(f"wells.id"), primary_key=True, nullable=False) # field_name = db.Column(db.String(), nullable=True) # field_type = db.Column(db.String(), nullable=True) # field_unit = db.Column(db.String(), nullable=True) # field_order = db.Column(db.Integer, nullable=True) # is_historic = db.Column(db.Boolean(), default=False, nullable=False) # is_remembered = db.Column(db.Boolean(), default=False, nullable=False) # is_required = db.Column(db.Boolean(), default=False, nullable=False) iwell_created_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) iwell_updated_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) created_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) updated_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) field_values = db.relationship("FieldValue", backref="well_field", lazy=True)
class Meter(DataFrameMixin, db.Model): __tablename__ = "meters" # __table_args__ = {"schema": schema} id = db.Column(db.Integer, primary_key=True, nullable=False) well_id = db.Column(db.Integer, db.ForeignKey(f"wells.id"), primary_key=True, nullable=False) meter_name = db.Column(db.String(), nullable=True) meter_order = db.Column(db.Integer, nullable=True) product_type = db.Column(db.String(), nullable=True) iwell_created_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) iwell_updated_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) created_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) updated_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) readings = db.relationship("MeterReading", backref="meter", lazy=True)
class TankReading(DataFrameMixin, db.Model): __tablename__ = "tank_readings" # __table_args__ = {"schema": schema} id = db.Column(db.Integer, primary_key=True, nullable=False) tank_id = db.Column(db.Integer, db.ForeignKey(f"tanks.id"), primary_key=True, nullable=False) reading_at = db.Column(db.DateTime(timezone=True), nullable=False) # reading_time cut_feet = db.Column(db.Float, nullable=True, default=0) cut_inches = db.Column(db.Float, nullable=True, default=0) top_feet = db.Column(db.Float, nullable=True, default=0) top_inches = db.Column(db.Float, nullable=True, default=0) previous_cut_feet = db.Column(db.Float, nullable=True, default=0) previous_cut_inches = db.Column(db.Float, nullable=True, default=0) previous_top_feet = db.Column(db.Float, nullable=True, default=0) previous_top_inches = db.Column(db.Float, nullable=True, default=0) # updated_by = db.Column( # db.Integer, db.ForeignKey(f"users.id"), nullable=False # ) updated_by = db.Column(db.Integer, nullable=True) iwell_created_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) iwell_updated_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) created_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) updated_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) run_tickets = db.relationship("RunTicket", backref="tank_reading", lazy=True)
class Tank(DataFrameMixin, db.Model): __tablename__ = "tanks" # __table_args__ = {"schema": schema} id = db.Column(db.Integer, primary_key=True, nullable=False) tank_name = db.Column(db.String(), nullable=True) tank_type = db.Column(db.String(), nullable=True) capacity = db.Column(db.Integer, nullable=True) multiplier = db.Column(db.Float, nullable=True) iwell_created_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) iwell_updated_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) created_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) updated_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) readings = db.relationship("TankReading", backref="tank", lazy=True)
class WellGroup(DataFrameMixin, db.Model): __tablename__ = "well_groups" # __table_args__ = {"schema": schema} id = db.Column(db.Integer, primary_key=True, nullable=False) group_name = db.Column(db.String(), nullable=True) is_active = db.Column(db.Boolean(), default=False, nullable=False) group_latest_production_time = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) iwell_created_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) iwell_updated_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) created_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) updated_at = db.Column(db.DateTime(timezone=True), default=func.now(), nullable=False) wells = db.relationship("WellGroupWell", backref="well_group", lazy=True)