Module: ScraperUtils::DbUtils
- Defined in:
- lib/scraper_utils/db_utils.rb
Overview
Utilities for database operations in scrapers
Class Method Summary collapse
-
.save_record(record) ⇒ void
Saves a record to the SQLite database with validation and logging.
Class Method Details
.save_record(record) ⇒ void
This method returns an undefined value.
Saves a record to the SQLite database with validation and logging
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/scraper_utils/db_utils.rb', line 13 def self.save_record(record) # Validate required fields required_fields = %w[council_reference address description info_url date_scraped] required_fields.each do |field| if record[field].to_s.empty? raise ScraperUtils::UnprocessableRecord, "Missing required field: #{field}" end end # Validate date formats %w[date_scraped date_received on_notice_from on_notice_to].each do |date_field| Date.parse(record[date_field]) if record[date_field] rescue ArgumentError raise ScraperUtils::UnprocessableRecord, "Invalid date format for #{date_field}: #{record[date_field]}" end # Determine primary key based on presence of authority_label primary_key = if record.key?("authority_label") %w[authority_label council_reference] else ["council_reference"] end ScraperWiki.save_sqlite(primary_key, record) ScraperUtils::DataQualityMonitor.log_saved_record(record) end |