Files
ip-manager/database/schema.sql
2026-01-16 19:48:04 +00:00

52 lines
1.9 KiB
SQL

-- Geofeed Manager Database Schema
-- For MariaDB/MySQL
CREATE DATABASE IF NOT EXISTS geofeed_manager;
USE geofeed_manager;
-- Main geofeed entries table
CREATE TABLE IF NOT EXISTS geofeed_entries (
id INT AUTO_INCREMENT PRIMARY KEY,
ip_prefix VARCHAR(50) NOT NULL,
country_code CHAR(2) DEFAULT NULL,
region_code VARCHAR(10) DEFAULT NULL,
city VARCHAR(255) DEFAULT NULL,
postal_code VARCHAR(50) DEFAULT NULL,
notes TEXT DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY unique_prefix (ip_prefix),
INDEX idx_country (country_code),
INDEX idx_region (region_code),
INDEX idx_city (city)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Audit log for tracking changes
CREATE TABLE IF NOT EXISTS geofeed_audit_log (
id INT AUTO_INCREMENT PRIMARY KEY,
entry_id INT,
action ENUM('INSERT', 'UPDATE', 'DELETE') NOT NULL,
old_values JSON DEFAULT NULL,
new_values JSON DEFAULT NULL,
changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
changed_by VARCHAR(255) DEFAULT NULL,
INDEX idx_entry (entry_id),
INDEX idx_action (action),
INDEX idx_changed_at (changed_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Settings table for app configuration
CREATE TABLE IF NOT EXISTS geofeed_settings (
setting_key VARCHAR(100) PRIMARY KEY,
setting_value TEXT,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Insert default settings
INSERT INTO geofeed_settings (setting_key, setting_value) VALUES
('bunny_cdn_storage_zone', ''),
('bunny_cdn_api_key', ''),
('bunny_cdn_file_path', '/geofeed.csv'),
('last_export_at', NULL)
ON DUPLICATE KEY UPDATE setting_key = setting_key;