- Added endpoints to list, upsert, and delete AnyDesk IDs associated with cases. - Introduced normalization for AnyDesk IDs and ensured case existence checks. - Enhanced session management with quick-connect functionality and local session synchronization. - Created a new job for syncing AnyDesk sessions from a local endpoint. - Added database migration for the new `sag_anydesk_ids` table to store AnyDesk IDs per case.
48 lines
1.7 KiB
PL/PgSQL
48 lines
1.7 KiB
PL/PgSQL
-- Migration 165: AnyDesk IDs per case (multi-ID support)
|
|
-- Stores quick-connect IDs on cases and optional hardware relation
|
|
|
|
CREATE TABLE IF NOT EXISTS sag_anydesk_ids (
|
|
id SERIAL PRIMARY KEY,
|
|
sag_id INTEGER NOT NULL REFERENCES sag_sager(id) ON DELETE CASCADE,
|
|
anydesk_id VARCHAR(64) NOT NULL,
|
|
hardware_asset_id INTEGER REFERENCES hardware_assets(id) ON DELETE SET NULL,
|
|
is_primary BOOLEAN NOT NULL DEFAULT FALSE,
|
|
note TEXT,
|
|
created_by_user_id INTEGER REFERENCES users(user_id) ON DELETE SET NULL,
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at TIMESTAMP WITH TIME ZONE,
|
|
UNIQUE (sag_id, anydesk_id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_sag_anydesk_ids_sag_id
|
|
ON sag_anydesk_ids(sag_id)
|
|
WHERE deleted_at IS NULL;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_sag_anydesk_ids_anydesk_id
|
|
ON sag_anydesk_ids(anydesk_id)
|
|
WHERE deleted_at IS NULL;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_sag_anydesk_ids_hardware_asset_id
|
|
ON sag_anydesk_ids(hardware_asset_id)
|
|
WHERE deleted_at IS NULL;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_sag_anydesk_ids_primary
|
|
ON sag_anydesk_ids(sag_id, is_primary)
|
|
WHERE deleted_at IS NULL;
|
|
|
|
-- Keep updated_at fresh
|
|
CREATE OR REPLACE FUNCTION update_sag_anydesk_ids_updated_at()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.updated_at = CURRENT_TIMESTAMP;
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
DROP TRIGGER IF EXISTS trg_update_sag_anydesk_ids_updated_at ON sag_anydesk_ids;
|
|
CREATE TRIGGER trg_update_sag_anydesk_ids_updated_at
|
|
BEFORE UPDATE ON sag_anydesk_ids
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION update_sag_anydesk_ids_updated_at();
|