init.sql 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. SET statement_timeout = 0;
  2. SET lock_timeout = 0;
  3. SET idle_in_transaction_session_timeout = 0;
  4. SET client_encoding = 'UTF8';
  5. SET standard_conforming_strings = on;
  6. SELECT pg_catalog.set_config('search_path', '', false);
  7. SET check_function_bodies = false;
  8. SET xmloption = content;
  9. SET client_min_messages = warning;
  10. SET row_security = off;
  11. CREATE ROLE senslog NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT;
  12. CREATE ROLE analytics_app NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN PASSWORD 'analytics';
  13. GRANT senslog TO analytics_app;
  14. CREATE DATABASE analytics WITH TEMPLATE = template0 ENCODING = 'UTF8' LOCALE_PROVIDER = 'libc' LOCALE = 'en_US.UTF-8';
  15. ALTER DATABASE analytics OWNER TO senslog;
  16. \connect analytics
  17. SET statement_timeout = 0;
  18. SET lock_timeout = 0;
  19. SET idle_in_transaction_session_timeout = 0;
  20. SET client_encoding = 'UTF8';
  21. SET standard_conforming_strings = on;
  22. SELECT pg_catalog.set_config('search_path', '', false);
  23. SET check_function_bodies = false;
  24. SET xmloption = content;
  25. SET client_min_messages = warning;
  26. SET row_security = off;
  27. SET default_tablespace = '';
  28. CREATE SCHEMA analytics;
  29. ALTER SCHEMA analytics OWNER TO senslog;
  30. ALTER SCHEMA public OWNER TO senslog;
  31. -- CREATE EXTENSION IF NOT EXISTS postgis WITH SCHEMA public;
  32. CREATE TYPE analytics.attribute_type AS ENUM ('MIN', 'MAX', 'AVG', 'VAL');
  33. CREATE TYPE analytics.threshold_mode AS ENUM ('LT', 'LE', 'GE', 'GT', 'NE', 'EQ');
  34. CREATE TYPE analytics.collector_type AS ENUM ('DOUBLE', 'MOLD');
  35. CREATE TYPE analytics.notify_trigger_mode AS ENUM ('INSTANT', 'ON_CHANGE', 'DISABLED');
  36. -- CREATE TYPE message_broker_type AS ENUM ('SENSLOG_ALERT');
  37. create table analytics.entity_source (
  38. id SERIAL PRIMARY KEY NOT NULL,
  39. unit_id BIGINT NOT NULL,
  40. sensor_id BIGINT NOT NULL,
  41. UNIQUE (unit_id, sensor_id)
  42. );
  43. alter table analytics.entity_source OWNER TO senslog;
  44. create table analytics.analytic_group (
  45. id SERIAL PRIMARY KEY NOT NULL,
  46. name VARCHAR(200) NOT NULL DEFAULT 'no_name',
  47. time_interval INTEGER NOT NULL, -- interval in seconds
  48. persistence BOOLEAN NOT NULL,
  49. collector_type analytics.collector_type
  50. );
  51. alter table analytics.analytic_group OWNER TO senslog;
  52. create table analytics.entity_source_to_analytic_group (
  53. id SERIAL PRIMARY KEY NOT NULL,
  54. entity_source_id BIGINT REFERENCES analytics.entity_source(id),
  55. analytic_group_id INTEGER REFERENCES analytics.analytic_group(id),
  56. time_created TIMESTAMP WITH TIME ZONE DEFAULT now() NOT NULL
  57. );
  58. alter table analytics.entity_source_to_analytic_group OWNER TO senslog;
  59. create table analytics.record (
  60. id SERIAL PRIMARY KEY NOT NULL,
  61. analytic_group_id INTEGER NOT NULL,
  62. attribute_type analytics.attribute_type NOT NULL,
  63. calculated_value DOUBLE PRECISION NOT NULL,
  64. time_interval INTEGER NOT NULL, -- interval in seconds
  65. time_stamp TIMESTAMP WITH TIME ZONE NOT NULL,
  66. time_created TIMESTAMP WITH TIME ZONE DEFAULT now() NOT NULL,
  67. UNIQUE (analytic_group_id, attribute_type, time_stamp)
  68. );
  69. alter table analytics.record OWNER TO senslog;
  70. create table analytics.threshold (
  71. id SERIAL PRIMARY KEY NOT NULL,
  72. analytic_group_id INTEGER NOT NULL,
  73. notify_trigger_mode analytics.notify_trigger_mode NOT NULL,
  74. attribute_type analytics.attribute_type NOT NULL,
  75. process_on_fail BOOLEAN NOT NULL
  76. );
  77. alter table analytics.threshold OWNER TO senslog;
  78. create table analytics.threshold_rule (
  79. id SERIAL PRIMARY KEY NOT NULL,
  80. threshold_id INTEGER NOT NULL REFERENCES analytics.threshold(id),
  81. threshold_mode analytics.threshold_mode NOT NULL,
  82. threshold_value DOUBLE PRECISION NOT NULL
  83. );
  84. alter table analytics.threshold_rule OWNER TO senslog;
  85. -- create table analytics.alert_broker (
  86. -- id SERIAL PRIMARY KEY NOT NULL,
  87. -- broker_type message_broker_type NOT NULL,
  88. -- config jsonb NOT NULL
  89. -- );
  90. --
  91. -- alter table analytics.alert_broker OWNER TO senslog;
  92. --
  93. -- create table analytics.notify_to_msg_broker (
  94. -- id SERIAL PRIMARY KEY NOT NULL,
  95. -- threshold_id integer REFERENCES analytics.thresholds(id),
  96. -- message_broker_id integer REFERENCES analytics.alert_broker(id),
  97. -- properties json NOT NULL
  98. -- );
  99. --
  100. -- alter table analytics.notify_to_msg_broker OWNER TO senslog;