<?php

defined('BASEPATH') or exit('No direct script access allowed');

class Migration_Version_211 extends App_module_migration
{
    /** @var CI_DB_query_builder */
    protected $db;

    public function __construct()
    {
        parent::__construct();

        // Properly initialize the database once the migration is constructed
        $CI = &get_instance();
        $CI->load->database();
        $this->db = $CI->db;
    }

    public function up()
    {
        // Add rate limiting columns to api_usage_logs table
        if (!$this->db->field_exists('rate_limit_checked', db_prefix() . 'api_usage_logs')) {
            $this->db->query("
                ALTER TABLE `" . db_prefix() . "api_usage_logs`
                ADD `rate_limit_checked` tinyint(1) NOT NULL DEFAULT 0 AFTER `user_agent`,
                ADD `rate_limit_type` varchar(20) NULL AFTER `rate_limit_checked`,
                ADD `rate_limit_limit` int(11) NULL AFTER `rate_limit_type`,
                ADD `rate_limit_current` int(11) NULL AFTER `rate_limit_limit`,
                ADD `rate_limit_exceeded` tinyint(1) NOT NULL DEFAULT 0 AFTER `rate_limit_current`
            ");
        }
    }

    public function down()
    {
        // Remove rate limiting columns from api_usage_logs table
        if ($this->db->field_exists('rate_limit_checked', db_prefix() . 'api_usage_logs')) {
            $this->db->query("
                ALTER TABLE `" . db_prefix() . "api_usage_logs`
                DROP COLUMN `rate_limit_checked`,
                DROP COLUMN `rate_limit_type`,
                DROP COLUMN `rate_limit_limit`,
                DROP COLUMN `rate_limit_current`,
                DROP COLUMN `rate_limit_exceeded`
            ");
        }
    }
}