52 lines
1.9 KiB
SQL
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;
|