-- Migration 003: DBN Tools NOK pricing catalog support -- Run against dobetternorge_maindb: -- mysql -u root dobetternorge_maindb < scripts/sql/003_pricing_credit_catalog.sql -- -- Existing user_tool_credits columns are preserved: -- balance = monthly credits -- bonus_balance = prepaid/top-up credits START TRANSACTION; CREATE TABLE IF NOT EXISTS user_tool_credit_ledger ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, user_id INT UNSIGNED NOT NULL, event_type VARCHAR(40) NOT NULL, source VARCHAR(100) NOT NULL, credits_delta INT NOT NULL, metadata_json JSON NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_user_created (user_id, created_at DESC), KEY idx_event_type (event_type, created_at DESC) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Auditable DBN Tools credit grants, charges, and subscription refills'; CREATE TABLE IF NOT EXISTS user_tool_credit_reservations ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, user_id INT UNSIGNED NOT NULL, tool VARCHAR(40) NOT NULL, reserved_credits INT UNSIGNED NOT NULL, settled_credits INT UNSIGNED NULL, status ENUM('reserved','settled','released','expired') NOT NULL DEFAULT 'reserved', provider VARCHAR(40) NULL, duration_seconds DECIMAL(10,2) NULL, metadata_json JSON NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, settled_at DATETIME NULL, expires_at DATETIME NOT NULL, PRIMARY KEY (id), KEY idx_user_status (user_id, status, created_at DESC), KEY idx_expires (status, expires_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='STT reservation audit trail; v1 gates by estimate and settles on success'; COMMIT;