wulf-pulse/migrations/027_create_datto_rmm_tables.sql

103 lines
3.4 KiB
MySQL
Raw Normal View History

-- Datto RMM sync tables: sites, devices, alerts
-- Sites map to Autotask companies via autotask_company_id
CREATE TABLE IF NOT EXISTS datto_rmm_sites (
id INTEGER PRIMARY KEY,
uid TEXT UNIQUE NOT NULL,
account_uid TEXT,
name TEXT NOT NULL,
description TEXT,
notes TEXT,
on_demand BOOLEAN DEFAULT false,
autotask_company_id INTEGER REFERENCES companies(id),
autotask_company_name TEXT,
number_of_devices INTEGER DEFAULT 0,
number_of_online_devices INTEGER DEFAULT 0,
number_of_offline_devices INTEGER DEFAULT 0,
portal_url TEXT,
synced_at TIMESTAMPTZ DEFAULT NOW(),
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS datto_rmm_devices (
id INTEGER PRIMARY KEY,
uid TEXT UNIQUE NOT NULL,
site_id INTEGER REFERENCES datto_rmm_sites(id),
site_uid TEXT,
site_name TEXT,
hostname TEXT,
description TEXT,
device_type_category TEXT,
device_type TEXT,
operating_system TEXT,
domain TEXT,
int_ip_address TEXT,
ext_ip_address TEXT,
last_logged_in_user TEXT,
last_seen TIMESTAMPTZ,
last_reboot TIMESTAMPTZ,
last_audit_date TIMESTAMPTZ,
creation_date TIMESTAMPTZ,
online BOOLEAN DEFAULT false,
suspended BOOLEAN DEFAULT false,
deleted BOOLEAN DEFAULT false,
reboot_required BOOLEAN DEFAULT false,
a64_bit BOOLEAN DEFAULT true,
cag_version TEXT,
display_version TEXT,
antivirus_product TEXT,
antivirus_status TEXT,
patch_status TEXT,
patches_approved_pending INTEGER DEFAULT 0,
patches_not_approved INTEGER DEFAULT 0,
patches_installed INTEGER DEFAULT 0,
software_status TEXT,
portal_url TEXT,
web_remote_url TEXT,
warranty_date TIMESTAMPTZ,
snmp_enabled BOOLEAN DEFAULT false,
device_class TEXT,
network_probe BOOLEAN DEFAULT false,
udf JSONB,
synced_at TIMESTAMPTZ DEFAULT NOW(),
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS datto_rmm_alerts (
alert_uid TEXT PRIMARY KEY,
device_uid TEXT,
device_name TEXT,
site_uid TEXT,
site_name TEXT,
priority TEXT,
alert_context JSONB,
alert_monitor_info JSONB,
diagnostics TEXT,
resolved BOOLEAN DEFAULT false,
resolved_by TEXT,
resolved_on TIMESTAMPTZ,
muted BOOLEAN DEFAULT false,
ticket_number TEXT,
autoresolve_mins INTEGER,
response_actions JSONB,
timestamp TIMESTAMPTZ NOT NULL,
synced_at TIMESTAMPTZ DEFAULT NOW(),
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Indexes
CREATE INDEX IF NOT EXISTS idx_datto_rmm_sites_uid ON datto_rmm_sites(uid);
CREATE INDEX IF NOT EXISTS idx_datto_rmm_sites_company ON datto_rmm_sites(autotask_company_id);
CREATE INDEX IF NOT EXISTS idx_datto_rmm_devices_uid ON datto_rmm_devices(uid);
CREATE INDEX IF NOT EXISTS idx_datto_rmm_devices_site ON datto_rmm_devices(site_id);
CREATE INDEX IF NOT EXISTS idx_datto_rmm_devices_hostname ON datto_rmm_devices(hostname);
CREATE INDEX IF NOT EXISTS idx_datto_rmm_devices_online ON datto_rmm_devices(online);
CREATE INDEX IF NOT EXISTS idx_datto_rmm_alerts_device ON datto_rmm_alerts(device_uid);
CREATE INDEX IF NOT EXISTS idx_datto_rmm_alerts_site ON datto_rmm_alerts(site_uid);
CREATE INDEX IF NOT EXISTS idx_datto_rmm_alerts_resolved ON datto_rmm_alerts(resolved);
CREATE INDEX IF NOT EXISTS idx_datto_rmm_alerts_timestamp ON datto_rmm_alerts(timestamp);
CREATE INDEX IF NOT EXISTS idx_datto_rmm_alerts_ticket ON datto_rmm_alerts(ticket_number);