feat(mcp): подготовить сервер и доступ к приёмке
This commit is contained in:
commit
bf3d50e1ff
3835 files changed
+537122
No files matched your search
@@ -0,0 +1,49 @@
|
||||
-- Approval-time configuration identity. DDL and its marker commit atomically.
|
||||
BEGIN;
|
||||
-- Existing rows retain all fields; the new epoch invalidates old complete proofs.
|
||||
-- This schema addition does not activate the delayed-approval execution protocol.
|
||||
LOCK TABLE public.traffic_settings, public.uptime_settings,
|
||||
public.internet_path_settings IN ACCESS EXCLUSIVE MODE;
|
||||
ALTER TABLE public.traffic_settings ADD COLUMN poll_configuration_epoch uuid NOT NULL DEFAULT pg_catalog.gen_random_uuid();
|
||||
ALTER TABLE public.uptime_settings ADD COLUMN poll_configuration_epoch uuid NOT NULL DEFAULT pg_catalog.gen_random_uuid();
|
||||
ALTER TABLE public.internet_path_settings ADD COLUMN poll_configuration_epoch uuid NOT NULL DEFAULT pg_catalog.gen_random_uuid();
|
||||
CREATE FUNCTION public.server_poll_settings_epoch_guard() RETURNS trigger
|
||||
LANGUAGE plpgsql SET search_path = pg_catalog AS $epoch$
|
||||
BEGIN
|
||||
IF TG_TABLE_SCHEMA <> 'public' OR TG_TABLE_NAME NOT IN
|
||||
('traffic_settings', 'uptime_settings', 'internet_path_settings')
|
||||
OR TG_LEVEL <> 'ROW' OR TG_WHEN <> 'BEFORE' THEN
|
||||
RAISE EXCEPTION 'unexpected poll settings epoch trigger target';
|
||||
END IF;
|
||||
IF TG_OP = 'INSERT' THEN
|
||||
-- Never accept an epoch supplied by an importer or application caller.
|
||||
NEW.poll_configuration_epoch := pg_catalog.gen_random_uuid();
|
||||
ELSIF TG_OP = 'UPDATE' THEN
|
||||
-- Every unknown/future field is configuration by default. Only these four
|
||||
-- current collector fields are excluded; created_at stays significant.
|
||||
IF (pg_catalog.to_jsonb(NEW) - ARRAY['poll_configuration_epoch',
|
||||
'last_collected_at', 'last_duration_ms', 'last_error', 'updated_at'])
|
||||
IS DISTINCT FROM
|
||||
(pg_catalog.to_jsonb(OLD) - ARRAY['poll_configuration_epoch',
|
||||
'last_collected_at', 'last_duration_ms', 'last_error', 'updated_at']) THEN
|
||||
NEW.poll_configuration_epoch := pg_catalog.gen_random_uuid();
|
||||
ELSE
|
||||
NEW.poll_configuration_epoch := OLD.poll_configuration_epoch;
|
||||
END IF;
|
||||
ELSE
|
||||
RAISE EXCEPTION 'unexpected poll settings epoch trigger operation';
|
||||
END IF;
|
||||
RETURN NEW;
|
||||
END;
|
||||
$epoch$;
|
||||
CREATE TRIGGER server_poll_settings_epoch BEFORE INSERT OR UPDATE ON public.traffic_settings
|
||||
FOR EACH ROW EXECUTE FUNCTION public.server_poll_settings_epoch_guard();
|
||||
CREATE TRIGGER server_poll_settings_epoch BEFORE INSERT OR UPDATE ON public.uptime_settings
|
||||
FOR EACH ROW EXECUTE FUNCTION public.server_poll_settings_epoch_guard();
|
||||
CREATE TRIGGER server_poll_settings_epoch BEFORE INSERT OR UPDATE ON public.internet_path_settings
|
||||
FOR EACH ROW EXECUTE FUNCTION public.server_poll_settings_epoch_guard();
|
||||
ALTER TABLE public.traffic_settings ENABLE ALWAYS TRIGGER server_poll_settings_epoch;
|
||||
ALTER TABLE public.uptime_settings ENABLE ALWAYS TRIGGER server_poll_settings_epoch;
|
||||
ALTER TABLE public.internet_path_settings ENABLE ALWAYS TRIGGER server_poll_settings_epoch;
|
||||
INSERT INTO schema_migrations(id) VALUES('0042_server_poll_settings_epoch') ON CONFLICT(id) DO NOTHING;
|
||||
COMMIT;
|
||||
Reference in new issue
Block a user