-- Связь сотрудник — участки (многие ко многим): один сотрудник может быть назначен на несколько участков
CREATE TABLE IF NOT EXISTS employee_districts (
  employee_id VARCHAR(50) NOT NULL REFERENCES employees(id) ON DELETE CASCADE,
  district_id VARCHAR(50) NOT NULL REFERENCES districts(id) ON DELETE CASCADE,
  created_at  TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  PRIMARY KEY (employee_id, district_id)
);

CREATE INDEX IF NOT EXISTS idx_employee_districts_employee ON employee_districts(employee_id);
CREATE INDEX IF NOT EXISTS idx_employee_districts_district ON employee_districts(district_id);
COMMENT ON TABLE employee_districts IS 'Назначения сотрудников на участки; один сотрудник может быть на нескольких участках';

-- Перенос существующих назначений из employees.assigned_district_id
INSERT INTO employee_districts (employee_id, district_id)
SELECT id, assigned_district_id
FROM employees
WHERE assigned_district_id IS NOT NULL AND assigned_district_id <> ''
ON CONFLICT (employee_id, district_id) DO NOTHING;
