from connection.connection import Database

class EBSModel:
    def __init__(self):
        self.db = Database()

    def create_ebs_metric(self, volume_id, volume_read_bytes, volume_read_ops, start_time, end_time):
        query = """
        INSERT INTO ebs_metrics (volume_id, volume_read_bytes, volume_read_ops, start_time, end_time) 
        VALUES (%s, %s, %s, %s, %s) RETURNING id;
        """
        try:
            return self.db.execute(query, (volume_id, volume_read_bytes, volume_read_ops, start_time, end_time), fetchone=True)
        except Exception as e:
            print(f"Error creating EBS metric: {e}")
            return None

    def get_ebs_metric(self, metric_id):
        query = "SELECT id, volume_id, volume_read_bytes, volume_read_ops, start_time, end_time FROM ebs_metrics WHERE id = %s;"
        try:
            return self.db.execute(query, (metric_id,), fetchone=True)
        except Exception as e:
            print(f"Error fetching EBS metric: {e}")
            return None

    def update_ebs_metric(self, metric_id, volume_read_bytes=None, volume_read_ops=None):
        query = """
        UPDATE ebs_metrics SET 
            volume_read_bytes = COALESCE(%s, volume_read_bytes),
            volume_read_ops = COALESCE(%s, volume_read_ops)
        WHERE id = %s RETURNING id;
        """
        try:
            return self.db.execute(query, (volume_read_bytes, volume_read_ops, metric_id), fetchone=True)
        except Exception as e:
            print(f"Error updating EBS metric: {e}")
            return None

    def delete_ebs_metric(self, metric_id):
        query = "DELETE FROM ebs_metrics WHERE id = %s RETURNING id;"
        try:
            return self.db.execute(query, (metric_id,), fetchone=True)
        except Exception as e:
            print(f"Error deleting EBS metric: {e}")
            return None