Migrate to Postgresql for better network handling. Add more user functionality.
This commit is contained in:
43
db/migrate/003_create_network_ranges.rb
Normal file
43
db/migrate/003_create_network_ranges.rb
Normal file
@@ -0,0 +1,43 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class CreateNetworkRanges < ActiveRecord::Migration[8.1]
|
||||
def change
|
||||
create_table :network_ranges, force: :cascade do |t|
|
||||
# Postgres inet type handles both IPv4 and IPv6 networks
|
||||
t.inet :network, null: false, index: { unique: true, name: 'index_network_ranges_on_network_unique' }
|
||||
|
||||
|
||||
# Track the source of this network range
|
||||
t.string :source, default: 'api_imported', null: false, index: true
|
||||
t.text :creation_reason
|
||||
|
||||
# Network intelligence metadata
|
||||
t.integer :asn, index: true
|
||||
t.string :asn_org, index: true
|
||||
t.string :company, index: true
|
||||
t.string :country, index: true
|
||||
|
||||
# Network classification flags
|
||||
t.boolean :is_datacenter, default: false, index: true
|
||||
t.boolean :is_proxy, default: false
|
||||
t.boolean :is_vpn, default: false
|
||||
t.index [:is_datacenter, :is_proxy, :is_vpn], name: 'idx_network_flags'
|
||||
|
||||
# JSON fields for additional data
|
||||
t.text :abuser_scores
|
||||
t.text :additional_data
|
||||
|
||||
# API enrichment tracking
|
||||
t.datetime :last_api_fetch
|
||||
|
||||
# Track creation (optional - some ranges are auto-imported)
|
||||
t.references :user, foreign_key: true
|
||||
|
||||
t.timestamps
|
||||
|
||||
# Postgres network indexes for performance
|
||||
# GiST index for network containment operations (>>=, <<=, &&)
|
||||
t.index :network, using: :gist, opclass: :inet_ops
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user