From a050157836b35de81628932a5956f1a1d556f3e7 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 2 Feb 2026 23:01:54 -0500 Subject: [PATCH] feat: create auvik_tenants and rmm_sites tables for accurate dashboard stats Added tables to store all tenants/sites from external APIs. Populated with existing mapped data. Full sync of all tenants/sites needed for accurate unmapped counts. --- migrations/017_create_auvik_tenants.sql | 29 +++++++++++++++++++++++++ migrations/018_create_rmm_sites.sql | 28 ++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 migrations/017_create_auvik_tenants.sql create mode 100644 migrations/018_create_rmm_sites.sql diff --git a/migrations/017_create_auvik_tenants.sql b/migrations/017_create_auvik_tenants.sql new file mode 100644 index 0000000..97295b3 --- /dev/null +++ b/migrations/017_create_auvik_tenants.sql @@ -0,0 +1,29 @@ +-- Create table for Auvik tenants (all tenants from Auvik API) +CREATE TABLE IF NOT EXISTS auvik_tenants ( + id SERIAL PRIMARY KEY, + tenant_id VARCHAR(255) NOT NULL UNIQUE, + tenant_name VARCHAR(255) NOT NULL, + domain_prefix VARCHAR(255), + device_count INTEGER DEFAULT 0, + last_sync_at TIMESTAMP WITH TIME ZONE, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP +); + +-- Create index for faster lookups +CREATE INDEX IF NOT EXISTS idx_auvik_tenants_tenant_id ON auvik_tenants(tenant_id); + +-- Add updated_at trigger +CREATE OR REPLACE FUNCTION update_auvik_tenants_updated_at() +RETURNS TRIGGER AS $$ +BEGIN + NEW.updated_at = CURRENT_TIMESTAMP; + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +DROP TRIGGER IF EXISTS auvik_tenants_updated_at ON auvik_tenants; +CREATE TRIGGER auvik_tenants_updated_at + BEFORE UPDATE ON auvik_tenants + FOR EACH ROW + EXECUTE FUNCTION update_auvik_tenants_updated_at(); diff --git a/migrations/018_create_rmm_sites.sql b/migrations/018_create_rmm_sites.sql new file mode 100644 index 0000000..063ed05 --- /dev/null +++ b/migrations/018_create_rmm_sites.sql @@ -0,0 +1,28 @@ +-- Create table for RMM sites (all sites from Datto RMM API) +CREATE TABLE IF NOT EXISTS rmm_sites ( + id SERIAL PRIMARY KEY, + site_uid VARCHAR(255) NOT NULL UNIQUE, + site_name VARCHAR(255) NOT NULL, + device_count INTEGER DEFAULT 0, + last_sync_at TIMESTAMP WITH TIME ZONE, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP +); + +-- Create index for faster lookups +CREATE INDEX IF NOT EXISTS idx_rmm_sites_uid ON rmm_sites(site_uid); + +-- Add updated_at trigger +CREATE OR REPLACE FUNCTION update_rmm_sites_updated_at() +RETURNS TRIGGER AS $$ +BEGIN + NEW.updated_at = CURRENT_TIMESTAMP; + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +DROP TRIGGER IF EXISTS rmm_sites_updated_at ON rmm_sites; +CREATE TRIGGER rmm_sites_updated_at + BEFORE UPDATE ON rmm_sites + FOR EACH ROW + EXECUTE FUNCTION update_rmm_sites_updated_at();