init.sql 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  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 maplog_app NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN PASSWORD 'MAPlog';
  13. GRANT senslog TO maplog_app;
  14. CREATE DATABASE maplog WITH TEMPLATE = template0 ENCODING = 'UTF8' LOCALE_PROVIDER = 'libc' LOCALE = 'en_US.UTF-8';
  15. ALTER DATABASE maplog OWNER TO senslog;
  16. \connect maplog
  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. CREATE SCHEMA maplog;
  28. ALTER SCHEMA maplog OWNER TO senslog;
  29. ALTER SCHEMA public OWNER TO senslog;
  30. CREATE EXTENSION IF NOT EXISTS postgis WITH SCHEMA public;
  31. COMMENT ON EXTENSION postgis IS 'PostGIS geometry and geography spatial types and functions';
  32. SET default_tablespace = '';
  33. CREATE TABLE maplog.campaign (
  34. campaign_id INTEGER NOT NULL PRIMARY KEY,
  35. name TEXT NOT NULL,
  36. description TEXT NOT NULL,
  37. from_time TIMESTAMP WITH TIME ZONE NOT NULL,
  38. to_time TIMESTAMP WITH TIME ZONE NOT NULL
  39. );
  40. ALTER TABLE maplog.campaign OWNER TO senslog;
  41. CREATE SEQUENCE maplog.campaign_campaign_id_seq AS INTEGER START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
  42. ALTER TABLE maplog.campaign_campaign_id_seq OWNER TO senslog;
  43. ALTER SEQUENCE maplog.campaign_campaign_id_seq OWNED BY maplog.campaign.campaign_id;
  44. ALTER TABLE ONLY maplog.campaign ALTER COLUMN campaign_id SET DEFAULT nextval('maplog.campaign_campaign_id_seq'::regclass);
  45. CREATE TABLE maplog.obs_telemetry (
  46. obs_id BIGINT NOT NULL PRIMARY KEY ,
  47. time_stamp TIMESTAMP WITH TIME ZONE NOT NULL,
  48. unit_id BIGINT NOT NULL,
  49. observed_values jsonb NOT NULL,
  50. the_geom geometry,
  51. speed INTEGER NOT NULL,
  52. time_received TIMESTAMP WITH TIME ZONE DEFAULT now() NOT NULL
  53. );
  54. ALTER TABLE maplog.obs_telemetry OWNER TO senslog;
  55. CREATE SEQUENCE maplog.obs_telemetry_obs_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
  56. ALTER TABLE maplog.obs_telemetry_obs_id_seq OWNER TO senslog;
  57. ALTER SEQUENCE maplog.obs_telemetry_obs_id_seq OWNED BY maplog.obs_telemetry.obs_id;
  58. ALTER TABLE ONLY maplog.obs_telemetry ALTER COLUMN obs_id SET DEFAULT nextval('maplog.obs_telemetry_obs_id_seq'::regclass);
  59. CREATE TABLE maplog.driver_to_action (
  60. id INTEGER NOT NULL PRIMARY KEY,
  61. driver_id INTEGER NOT NULL,
  62. action_id INTEGER NOT NULL,
  63. unit_id BIGINT NOT NULL,
  64. from_time TIMESTAMP WITH TIME ZONE NOT NULL,
  65. to_time TIMESTAMP WITH TIME ZONE
  66. );
  67. ALTER TABLE maplog.driver_to_action OWNER TO senslog;
  68. CREATE SEQUENCE maplog.driver_to_action_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
  69. ALTER TABLE maplog.driver_to_action_id_seq OWNER TO senslog;
  70. ALTER SEQUENCE maplog.driver_to_action_id_seq OWNED BY maplog.driver_to_action.id;
  71. ALTER TABLE ONLY maplog.driver_to_action ALTER COLUMN id SET DEFAULT nextval('maplog.driver_to_action_id_seq'::regclass);
  72. CREATE TABLE maplog.phenomenon (
  73. phenomenon_id INTEGER NOT NULL PRIMARY KEY,
  74. phenomenon_name TEXT NOT NULL,
  75. uom CHARACTER VARYING(30) NOT NULL,
  76. uom_link TEXT
  77. );
  78. ALTER TABLE maplog.phenomenon OWNER TO senslog;
  79. CREATE SEQUENCE maplog.phenomenon_phenomenon_id_seq AS INTEGER START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
  80. ALTER TABLE maplog.phenomenon_phenomenon_id_seq OWNER TO senslog;
  81. ALTER SEQUENCE maplog.phenomenon_phenomenon_id_seq OWNED BY maplog.phenomenon.phenomenon_id;
  82. ALTER TABLE ONLY maplog.phenomenon ALTER COLUMN phenomenon_id SET DEFAULT nextval('maplog.phenomenon_phenomenon_id_seq'::regclass);
  83. CREATE TABLE maplog.sensor (
  84. sensor_id BIGINT NOT NULL PRIMARY KEY,
  85. sensor_name CHARACTER VARYING(100) UNIQUE,
  86. sensor_type TEXT,
  87. io_id INTEGER,
  88. min_range TEXT,
  89. max_range TEXT,
  90. phenomenon_id INTEGER NOT NULL
  91. );
  92. ALTER TABLE maplog.sensor OWNER TO senslog;
  93. CREATE SEQUENCE maplog.sensor_sensor_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
  94. ALTER TABLE maplog.sensor_sensor_id_seq OWNER TO senslog;
  95. ALTER SEQUENCE maplog.sensor_sensor_id_seq OWNED BY maplog.sensor.sensor_id;
  96. ALTER TABLE ONLY maplog.sensor ALTER COLUMN sensor_id SET DEFAULT nextval('maplog.sensor_sensor_id_seq'::regclass);
  97. CREATE TABLE maplog.system_user (
  98. user_id INTEGER NOT NULL PRIMARY KEY,
  99. name TEXT NOT NULL
  100. );
  101. ALTER TABLE maplog.system_user OWNER TO senslog;
  102. CREATE TABLE maplog.unit (
  103. unit_id BIGINT NOT NULL PRIMARY KEY,
  104. imei CHARACTER VARYING(20) NOT NULL UNIQUE,
  105. name CHARACTER VARYING(100) NOT NULL,
  106. description TEXT,
  107. is_mobile boolean DEFAULT true NOT NULL,
  108. unit_type_id CHARACTER VARYING(2) DEFAULT 'X'::CHARACTER VARYING NOT NULL
  109. );
  110. ALTER TABLE maplog.unit OWNER TO senslog;
  111. CREATE TABLE maplog.unit_to_campaign (
  112. id INTEGER NOT NULL PRIMARY KEY,
  113. camp_id INTEGER NOT NULL,
  114. unit_id BIGINT NOT NULL,
  115. from_time TIMESTAMP WITH TIME ZONE NOT NULL,
  116. to_time TIMESTAMP WITH TIME ZONE NOT NULL
  117. );
  118. ALTER TABLE maplog.unit_to_campaign OWNER TO senslog;
  119. CREATE SEQUENCE maplog.unit_to_campaign_id_seq AS INTEGER START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
  120. ALTER TABLE maplog.unit_to_campaign_id_seq OWNER TO senslog;
  121. ALTER SEQUENCE maplog.unit_to_campaign_id_seq OWNED BY maplog.unit_to_campaign.id;
  122. ALTER TABLE ONLY maplog.unit_to_campaign ALTER COLUMN id SET DEFAULT nextval('maplog.unit_to_campaign_id_seq'::regclass);
  123. CREATE TABLE maplog.unit_to_sensor (
  124. sensor_id BIGINT NOT NULL,
  125. unit_id BIGINT NOT NULL,
  126. PRIMARY KEY (unit_id, sensor_id)
  127. );
  128. ALTER TABLE maplog.unit_to_sensor OWNER TO senslog;
  129. CREATE TABLE maplog.unit_type (
  130. unit_type_id CHARACTER VARYING(2) NOT NULL PRIMARY KEY,
  131. type_name CHARACTER VARYING(20) NOT NULL,
  132. description TEXT
  133. );
  134. ALTER TABLE maplog.unit_type OWNER TO senslog;
  135. CREATE TABLE maplog.user_to_campaign (
  136. user_id INTEGER NOT NULL,
  137. campaign_id INTEGER NOT NULL,
  138. PRIMARY KEY (user_id, campaign_id)
  139. );
  140. ALTER TABLE maplog.user_to_campaign OWNER TO senslog;
  141. CREATE INDEX fki_obss_unitid_fk ON maplog.obs_telemetry USING btree (unit_id);
  142. CREATE INDEX fki_sens_phenom_fk ON maplog.sensor USING btree (phenomenon_id);
  143. CREATE INDEX fki_u2c_campid ON maplog.user_to_campaign USING btree (campaign_id);
  144. CREATE INDEX fki_u2c_campid_fk ON maplog.user_to_campaign USING btree (campaign_id);
  145. CREATE INDEX fki_u2c_userid_fk ON maplog.user_to_campaign USING btree (user_id);
  146. CREATE INDEX fki_un2c_campid ON maplog.unit_to_campaign USING btree (camp_id);
  147. CREATE INDEX fki_un2c_unitid ON maplog.unit_to_campaign USING btree (unit_id);
  148. CREATE INDEX fki_unit_unittype_fk ON maplog.unit USING btree (unit_type_id);
  149. CREATE INDEX fki_uts_sensorid_fk ON maplog.unit_to_sensor USING btree (sensor_id);
  150. CREATE INDEX fki_uts_unitid_fk ON maplog.unit_to_sensor USING btree (unit_id);
  151. CREATE INDEX fki_dta_unitid_fk ON maplog.driver_to_action USING btree (unit_id);
  152. ALTER TABLE ONLY maplog.obs_telemetry ADD CONSTRAINT obss_unitid_fk FOREIGN KEY (unit_id) REFERENCES maplog.unit(unit_id) ON UPDATE CASCADE ON DELETE CASCADE;
  153. ALTER TABLE ONLY maplog.sensor ADD CONSTRAINT sens_phenom_fk FOREIGN KEY (phenomenon_id) REFERENCES maplog.phenomenon(phenomenon_id);
  154. ALTER TABLE ONLY maplog.user_to_campaign ADD CONSTRAINT u2c_campid FOREIGN KEY (campaign_id) REFERENCES maplog.campaign(campaign_id) ON UPDATE CASCADE ON DELETE CASCADE;
  155. ALTER TABLE ONLY maplog.user_to_campaign ADD CONSTRAINT u2c_userid_fk FOREIGN KEY (user_id) REFERENCES maplog.system_user(user_id) ON UPDATE CASCADE ON DELETE CASCADE;
  156. ALTER TABLE ONLY maplog.unit_to_campaign ADD CONSTRAINT un2c_campid FOREIGN KEY (camp_id) REFERENCES maplog.campaign(campaign_id) ON UPDATE CASCADE ON DELETE CASCADE;
  157. ALTER TABLE ONLY maplog.unit_to_campaign ADD CONSTRAINT un2c_unitid FOREIGN KEY (unit_id) REFERENCES maplog.unit(unit_id) ON UPDATE CASCADE ON DELETE CASCADE;
  158. ALTER TABLE ONLY maplog.unit ADD CONSTRAINT unit_unittype_fk FOREIGN KEY (unit_type_id) REFERENCES maplog.unit_type(unit_type_id);
  159. ALTER TABLE ONLY maplog.unit_to_sensor ADD CONSTRAINT uts_sensorid_fk FOREIGN KEY (sensor_id) REFERENCES maplog.sensor(sensor_id) ON UPDATE CASCADE ON DELETE CASCADE;
  160. ALTER TABLE ONLY maplog.unit_to_sensor ADD CONSTRAINT uts_unitid_fk FOREIGN KEY (unit_id) REFERENCES maplog.unit(unit_id) ON UPDATE CASCADE ON DELETE CASCADE;
  161. ALTER TABLE ONLY maplog.driver_to_action ADD CONSTRAINT dta_unitid_fk FOREIGN KEY (unit_id) REFERENCES maplog.unit(unit_id) ON UPDATE CASCADE ON DELETE CASCADE;
  162. REVOKE USAGE ON SCHEMA public FROM PUBLIC;
  163. GRANT ALL ON SCHEMA public TO PUBLIC;