from connection.connection import Database

class EC2Model:
    def __init__(self):
        self.db = Database()

    def create_ec2_metric(self, instance_id, cpu_utilization, start_time, end_time):
        query = """
        INSERT INTO ec2_metrics (instance_id, cpu_utilization, start_time, end_time) 
        VALUES (%s, %s, %s, %s) RETURNING id;
        """
        try:
            return self.db.execute(query, (instance_id, cpu_utilization, start_time, end_time), fetchone=True)
        except Exception as e:
            print(f"Error creating EC2 metric: {e}")
            return None

    def get_ec2_metric(self, metric_id):
        query = "SELECT id, instance_id, cpu_utilization, start_time, end_time FROM ec2_metrics WHERE id = %s;"
        try:
            return self.db.execute(query, (metric_id,), fetchone=True)
        except Exception as e:
            print(f"Error fetching EC2 metric: {e}")
            return None

    def update_ec2_metric(self, metric_id, cpu_utilization=None):
        query = """
        UPDATE ec2_metrics SET cpu_utilization = COALESCE(%s, cpu_utilization)
        WHERE id = %s RETURNING id;
        """
        try:
            return self.db.execute(query, (cpu_utilization, metric_id), fetchone=True)
        except Exception as e:
            print(f"Error updating EC2 metric: {e}")
            return None

    def delete_ec2_metric(self, metric_id):
        query = "DELETE FROM ec2_metrics WHERE id = %s RETURNING id;"
        try:
            return self.db.execute(query, (metric_id,), fetchone=True)
        except Exception as e:
            print(f"Error deleting EC2 metric: {e}")
            return None
