from models.database import execute_query, execute_single_query, execute_update_query

class SurveyModel:
    @staticmethod
    def get_all_surveys():
        query = "SELECT * FROM surveys ORDER BY created_at DESC"
        return execute_query(query)
    
    @staticmethod
    def get_survey_by_id(survey_id):
        query = "SELECT * FROM surveys WHERE id = %s"
        return execute_single_query(query, (survey_id,))
    
    @staticmethod
    def create_survey(name, is_active=True):
        query = "INSERT INTO surveys (name, is_active) VALUES (%s, %s)"
        return execute_update_query(query, (name, is_active))
    
    @staticmethod
    def update_survey(survey_id, name, is_active):
        query = "UPDATE surveys SET name = %s, is_active = %s WHERE id = %s"
        return execute_update_query(query, (name, is_active, survey_id))
    
    @staticmethod
    def delete_survey(survey_id):
        query = "DELETE FROM surveys WHERE id = %s"
        return execute_update_query(query, (survey_id,))
    
    @staticmethod
    def get_surveys_count():
        query = "SELECT COUNT(*) as count FROM surveys"
        result = execute_single_query(query)
        return result['count'] if result else 0
    
    @staticmethod
    def get_survey_features_count(survey_id):
        query = "SELECT COUNT(*) as count FROM features WHERE survey_id = %s"
        result = execute_single_query(query, (survey_id,))
        return result['count'] if result else 0
    
    @staticmethod
    def get_survey_questions_count(survey_id):
        query = """
        SELECT COUNT(q.id) as count 
        FROM questions q 
        JOIN features f ON q.feature_id = f.id 
        WHERE f.survey_id = %s
        """
        result = execute_single_query(query, (survey_id,))
        return result['count'] if result else 0