48 lines
1.7 KiB
MySQL
48 lines
1.7 KiB
MySQL
|
|
-- 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();
|