feat: auto-populate auvik_tenants and rmm_sites tables when fetching mappings

When includeUnmapped=true, the mapping APIs now populate the
auvik_tenants and rmm_sites tables with all fetched data.
This ensures accurate mapped/unmapped counts on the dashboard.
This commit is contained in:
root 2026-02-02 23:12:35 -05:00
parent c0190c7dd1
commit 4d531b2f2d
2 changed files with 35 additions and 0 deletions

View file

@ -42,6 +42,24 @@ export async function GET(request: NextRequest) {
const auvikClient = getAuvikClient();
const allTenants = await auvikClient.getTenants();
// Populate auvik_tenants table with all tenants
for (const tenant of allTenants) {
try {
await pool.query(
`INSERT INTO auvik_tenants (tenant_id, tenant_name, domain_prefix, last_sync_at)
VALUES ($1, $2, $3, CURRENT_TIMESTAMP)
ON CONFLICT (tenant_id) DO UPDATE SET
tenant_name = EXCLUDED.tenant_name,
domain_prefix = EXCLUDED.domain_prefix,
last_sync_at = CURRENT_TIMESTAMP,
updated_at = CURRENT_TIMESTAMP`,
[tenant.id, tenant.domainPrefix, tenant.domainPrefix]
);
} catch (err) {
console.error(`Failed to upsert tenant ${tenant.id}:`, err);
}
}
const mappedTenantIds = new Set(mappings.map((m) => m.auvikTenantId));
const unmappedTenants = allTenants

View file

@ -73,6 +73,23 @@ export async function GET(request: NextRequest) {
const rmmClient = getDattoRMMClient();
const allSites = await rmmClient.getSites();
// Populate rmm_sites table with all sites
for (const site of allSites) {
try {
await pool.query(
`INSERT INTO rmm_sites (site_uid, site_name, last_sync_at)
VALUES ($1, $2, CURRENT_TIMESTAMP)
ON CONFLICT (site_uid) DO UPDATE SET
site_name = EXCLUDED.site_name,
last_sync_at = CURRENT_TIMESTAMP,
updated_at = CURRENT_TIMESTAMP`,
[site.uid, site.name]
);
} catch (err) {
console.error(`Failed to upsert site ${site.uid}:`, err);
}
}
// Get list of already mapped site UIDs
const mappedSiteUids = new Set(mappings.map((m: any) => m.rmm_site_uid));