database.schema.sql 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530
  1. --
  2. -- PostgreSQL database dump
  3. --
  4. -- Dumped from database version 9.6.6
  5. -- Dumped by pg_dump version 9.6.6
  6. SET statement_timeout = 0;
  7. SET lock_timeout = 0;
  8. SET idle_in_transaction_session_timeout = 0;
  9. SET client_encoding = 'UTF8';
  10. SET standard_conforming_strings = on;
  11. SET check_function_bodies = false;
  12. SET client_min_messages = warning;
  13. SET row_security = off;
  14. --
  15. -- Name: plpgsql; Type: EXTENSION; Schema: -; Owner:
  16. --
  17. CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
  18. --
  19. -- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner:
  20. --
  21. COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
  22. SET search_path = public, pg_catalog;
  23. SET default_tablespace = '';
  24. SET default_with_oids = false;
  25. --
  26. -- Name: channels; Type: TABLE; Schema: public; Owner: pyRot
  27. --
  28. CREATE TABLE channels (
  29. id integer NOT NULL,
  30. name character varying(64) NOT NULL,
  31. network character varying(40) NOT NULL,
  32. autojoin boolean,
  33. join_greeting boolean,
  34. statistics_commands boolean,
  35. games boolean,
  36. aggressiveness character varying(20) DEFAULT 'defense_only'::character varying,
  37. chat boolean,
  38. key character varying(32),
  39. last_lame timestamp without time zone
  40. );
  41. ALTER TABLE channels OWNER TO "pyRot";
  42. --
  43. -- Name: channel_id_seq; Type: SEQUENCE; Schema: public; Owner: pyRot
  44. --
  45. CREATE SEQUENCE channel_id_seq
  46. START WITH 1
  47. INCREMENT BY 1
  48. NO MINVALUE
  49. NO MAXVALUE
  50. CACHE 1;
  51. ALTER TABLE channel_id_seq OWNER TO "pyRot";
  52. --
  53. -- Name: channel_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: pyRot
  54. --
  55. ALTER SEQUENCE channel_id_seq OWNED BY channels.id;
  56. --
  57. -- Name: joins; Type: TABLE; Schema: public; Owner: pyRot
  58. --
  59. CREATE TABLE joins (
  60. id integer NOT NULL,
  61. channel character varying(64) NOT NULL,
  62. channel_network character varying(40) NOT NULL,
  63. "user" character varying(31) NOT NULL,
  64. user_network character varying(40) NOT NULL,
  65. joins integer DEFAULT 0,
  66. stopgreet boolean
  67. );
  68. ALTER TABLE joins OWNER TO "pyRot";
  69. --
  70. -- Name: joins_id_seq; Type: SEQUENCE; Schema: public; Owner: pyRot
  71. --
  72. CREATE SEQUENCE joins_id_seq
  73. START WITH 1
  74. INCREMENT BY 1
  75. NO MINVALUE
  76. NO MAXVALUE
  77. CACHE 1;
  78. ALTER TABLE joins_id_seq OWNER TO "pyRot";
  79. --
  80. -- Name: joins_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: pyRot
  81. --
  82. ALTER SEQUENCE joins_id_seq OWNED BY joins.id;
  83. --
  84. -- Name: kicks; Type: TABLE; Schema: public; Owner: pyRot
  85. --
  86. CREATE TABLE kicks (
  87. id integer NOT NULL,
  88. channel character varying(64) NOT NULL,
  89. channel_network character varying(40) NOT NULL,
  90. "user" character varying(31) NOT NULL,
  91. user_network character varying(40) NOT NULL,
  92. given integer DEFAULT 0,
  93. received integer DEFAULT 0
  94. );
  95. ALTER TABLE kicks OWNER TO "pyRot";
  96. --
  97. -- Name: kicks_id_seq; Type: SEQUENCE; Schema: public; Owner: pyRot
  98. --
  99. CREATE SEQUENCE kicks_id_seq
  100. START WITH 1
  101. INCREMENT BY 1
  102. NO MINVALUE
  103. NO MAXVALUE
  104. CACHE 1;
  105. ALTER TABLE kicks_id_seq OWNER TO "pyRot";
  106. --
  107. -- Name: kicks_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: pyRot
  108. --
  109. ALTER SEQUENCE kicks_id_seq OWNED BY kicks.id;
  110. --
  111. -- Name: messages; Type: TABLE; Schema: public; Owner: pyRot
  112. --
  113. CREATE TABLE messages (
  114. id integer NOT NULL,
  115. channel character varying(64) NOT NULL,
  116. channel_network character varying(40) NOT NULL,
  117. "user" character varying(31) NOT NULL,
  118. user_network character varying(40) NOT NULL,
  119. messages integer DEFAULT 0,
  120. messages_words bigint DEFAULT 0,
  121. messages_characters bigint DEFAULT 0,
  122. actions integer DEFAULT 0,
  123. actions_words bigint DEFAULT 0,
  124. actions_characters bigint DEFAULT 0,
  125. notices integer DEFAULT 0,
  126. notices_words bigint DEFAULT 0,
  127. notices_characters bigint DEFAULT 0
  128. );
  129. ALTER TABLE messages OWNER TO "pyRot";
  130. --
  131. -- Name: messages_id_seq; Type: SEQUENCE; Schema: public; Owner: pyRot
  132. --
  133. CREATE SEQUENCE messages_id_seq
  134. START WITH 1
  135. INCREMENT BY 1
  136. NO MINVALUE
  137. NO MAXVALUE
  138. CACHE 1;
  139. ALTER TABLE messages_id_seq OWNER TO "pyRot";
  140. --
  141. -- Name: messages_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: pyRot
  142. --
  143. ALTER SEQUENCE messages_id_seq OWNED BY messages.id;
  144. --
  145. -- Name: networks; Type: TABLE; Schema: public; Owner: pyRot
  146. --
  147. CREATE TABLE networks (
  148. id integer NOT NULL,
  149. name character varying(40) NOT NULL,
  150. host character varying(60) NOT NULL,
  151. port integer DEFAULT 6667,
  152. use_ssl boolean,
  153. nickname character varying(31) DEFAULT 'RotBot'::character varying,
  154. username character varying(31) DEFAULT 'pyRot'::character varying,
  155. password character varying(31),
  156. home_channel character varying(64) DEFAULT '#RotBot'::character varying NOT NULL,
  157. command_character character(1) DEFAULT '!'::bpchar,
  158. help_character character(1) DEFAULT '@'::bpchar
  159. );
  160. ALTER TABLE networks OWNER TO "pyRot";
  161. --
  162. -- Name: networks_id_seq; Type: SEQUENCE; Schema: public; Owner: pyRot
  163. --
  164. CREATE SEQUENCE networks_id_seq
  165. START WITH 1
  166. INCREMENT BY 1
  167. NO MINVALUE
  168. NO MAXVALUE
  169. CACHE 1;
  170. ALTER TABLE networks_id_seq OWNER TO "pyRot";
  171. --
  172. -- Name: networks_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: pyRot
  173. --
  174. ALTER SEQUENCE networks_id_seq OWNED BY networks.id;
  175. --
  176. -- Name: users; Type: TABLE; Schema: public; Owner: pyRot
  177. --
  178. CREATE TABLE users (
  179. id integer NOT NULL,
  180. name character varying(31) NOT NULL,
  181. network character varying(40) NOT NULL,
  182. last_act_type character varying(20),
  183. last_act_datetime timestamp without time zone,
  184. last_act_channel character varying(64),
  185. last_act_channel_network character varying(40),
  186. last_act character varying(510),
  187. last_act_auxiliary character varying(255),
  188. away boolean,
  189. away_reason character varying(510),
  190. xp_spent integer DEFAULT 0,
  191. level integer DEFAULT 0,
  192. coin numeric DEFAULT 10
  193. );
  194. ALTER TABLE users OWNER TO "pyRot";
  195. --
  196. -- Name: users_id_seq; Type: SEQUENCE; Schema: public; Owner: pyRot
  197. --
  198. CREATE SEQUENCE users_id_seq
  199. START WITH 1
  200. INCREMENT BY 1
  201. NO MINVALUE
  202. NO MAXVALUE
  203. CACHE 1;
  204. ALTER TABLE users_id_seq OWNER TO "pyRot";
  205. --
  206. -- Name: users_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: pyRot
  207. --
  208. ALTER SEQUENCE users_id_seq OWNED BY users.id;
  209. --
  210. -- Name: channels id; Type: DEFAULT; Schema: public; Owner: pyRot
  211. --
  212. ALTER TABLE ONLY channels ALTER COLUMN id SET DEFAULT nextval('channel_id_seq'::regclass);
  213. --
  214. -- Name: joins id; Type: DEFAULT; Schema: public; Owner: pyRot
  215. --
  216. ALTER TABLE ONLY joins ALTER COLUMN id SET DEFAULT nextval('joins_id_seq'::regclass);
  217. --
  218. -- Name: kicks id; Type: DEFAULT; Schema: public; Owner: pyRot
  219. --
  220. ALTER TABLE ONLY kicks ALTER COLUMN id SET DEFAULT nextval('kicks_id_seq'::regclass);
  221. --
  222. -- Name: messages id; Type: DEFAULT; Schema: public; Owner: pyRot
  223. --
  224. ALTER TABLE ONLY messages ALTER COLUMN id SET DEFAULT nextval('messages_id_seq'::regclass);
  225. --
  226. -- Name: networks id; Type: DEFAULT; Schema: public; Owner: pyRot
  227. --
  228. ALTER TABLE ONLY networks ALTER COLUMN id SET DEFAULT nextval('networks_id_seq'::regclass);
  229. --
  230. -- Name: users id; Type: DEFAULT; Schema: public; Owner: pyRot
  231. --
  232. ALTER TABLE ONLY users ALTER COLUMN id SET DEFAULT nextval('users_id_seq'::regclass);
  233. --
  234. -- Name: channels channel_pkey; Type: CONSTRAINT; Schema: public; Owner: pyRot
  235. --
  236. ALTER TABLE ONLY channels
  237. ADD CONSTRAINT channel_pkey PRIMARY KEY (id);
  238. --
  239. -- Name: channels channels_name_network_key; Type: CONSTRAINT; Schema: public; Owner: pyRot
  240. --
  241. ALTER TABLE ONLY channels
  242. ADD CONSTRAINT channels_name_network_key UNIQUE (name, network);
  243. --
  244. -- Name: joins joins_channel_channel_network_user_user_network_key; Type: CONSTRAINT; Schema: public; Owner: pyRot
  245. --
  246. ALTER TABLE ONLY joins
  247. ADD CONSTRAINT joins_channel_channel_network_user_user_network_key UNIQUE (channel, channel_network, "user", user_network);
  248. --
  249. -- Name: joins joins_pkey; Type: CONSTRAINT; Schema: public; Owner: pyRot
  250. --
  251. ALTER TABLE ONLY joins
  252. ADD CONSTRAINT joins_pkey PRIMARY KEY (id);
  253. --
  254. -- Name: kicks kicks_channel_channel_network_user_user_network_key; Type: CONSTRAINT; Schema: public; Owner: pyRot
  255. --
  256. ALTER TABLE ONLY kicks
  257. ADD CONSTRAINT kicks_channel_channel_network_user_user_network_key UNIQUE (channel, channel_network, "user", user_network);
  258. --
  259. -- Name: kicks kicks_pkey; Type: CONSTRAINT; Schema: public; Owner: pyRot
  260. --
  261. ALTER TABLE ONLY kicks
  262. ADD CONSTRAINT kicks_pkey PRIMARY KEY (id);
  263. --
  264. -- Name: messages messages_channel_channel_network_user_user_network_key; Type: CONSTRAINT; Schema: public; Owner: pyRot
  265. --
  266. ALTER TABLE ONLY messages
  267. ADD CONSTRAINT messages_channel_channel_network_user_user_network_key UNIQUE (channel, channel_network, "user", user_network);
  268. --
  269. -- Name: messages messages_pkey; Type: CONSTRAINT; Schema: public; Owner: pyRot
  270. --
  271. ALTER TABLE ONLY messages
  272. ADD CONSTRAINT messages_pkey PRIMARY KEY (id);
  273. --
  274. -- Name: networks networks_host_key; Type: CONSTRAINT; Schema: public; Owner: pyRot
  275. --
  276. ALTER TABLE ONLY networks
  277. ADD CONSTRAINT networks_host_key UNIQUE (host);
  278. --
  279. -- Name: networks networks_name_key; Type: CONSTRAINT; Schema: public; Owner: pyRot
  280. --
  281. ALTER TABLE ONLY networks
  282. ADD CONSTRAINT networks_name_key UNIQUE (name);
  283. --
  284. -- Name: networks networks_pkey; Type: CONSTRAINT; Schema: public; Owner: pyRot
  285. --
  286. ALTER TABLE ONLY networks
  287. ADD CONSTRAINT networks_pkey PRIMARY KEY (id);
  288. --
  289. -- Name: users users_name_network_key; Type: CONSTRAINT; Schema: public; Owner: pyRot
  290. --
  291. ALTER TABLE ONLY users
  292. ADD CONSTRAINT users_name_network_key UNIQUE (name, network);
  293. --
  294. -- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: pyRot
  295. --
  296. ALTER TABLE ONLY users
  297. ADD CONSTRAINT users_pkey PRIMARY KEY (id);
  298. --
  299. -- Name: channels channels_network_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pyRot
  300. --
  301. ALTER TABLE ONLY channels
  302. ADD CONSTRAINT channels_network_fkey FOREIGN KEY (network) REFERENCES networks(name) ON UPDATE CASCADE ON DELETE CASCADE;
  303. --
  304. -- Name: joins joins_channel_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pyRot
  305. --
  306. ALTER TABLE ONLY joins
  307. ADD CONSTRAINT joins_channel_fkey FOREIGN KEY (channel, channel_network) REFERENCES channels(name, network) ON UPDATE CASCADE ON DELETE CASCADE;
  308. --
  309. -- Name: joins joins_user_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pyRot
  310. --
  311. ALTER TABLE ONLY joins
  312. ADD CONSTRAINT joins_user_fkey FOREIGN KEY ("user", user_network) REFERENCES users(name, network) ON UPDATE CASCADE ON DELETE CASCADE;
  313. --
  314. -- Name: kicks kicks_channel_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pyRot
  315. --
  316. ALTER TABLE ONLY kicks
  317. ADD CONSTRAINT kicks_channel_fkey FOREIGN KEY (channel, channel_network) REFERENCES channels(name, network) ON UPDATE CASCADE ON DELETE CASCADE;
  318. --
  319. -- Name: kicks kicks_user_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pyRot
  320. --
  321. ALTER TABLE ONLY kicks
  322. ADD CONSTRAINT kicks_user_fkey FOREIGN KEY ("user", user_network) REFERENCES users(name, network) ON UPDATE CASCADE ON DELETE CASCADE;
  323. --
  324. -- Name: messages messages_channel_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pyRot
  325. --
  326. ALTER TABLE ONLY messages
  327. ADD CONSTRAINT messages_channel_fkey FOREIGN KEY (channel, channel_network) REFERENCES channels(name, network) ON UPDATE CASCADE ON DELETE CASCADE;
  328. --
  329. -- Name: messages messages_user_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pyRot
  330. --
  331. ALTER TABLE ONLY messages
  332. ADD CONSTRAINT messages_user_fkey FOREIGN KEY ("user", user_network) REFERENCES users(name, network) ON UPDATE CASCADE ON DELETE CASCADE;
  333. --
  334. -- Name: users users_last_act_channel_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pyRot
  335. --
  336. ALTER TABLE ONLY users
  337. ADD CONSTRAINT users_last_act_channel_fkey FOREIGN KEY (last_act_channel, last_act_channel_network) REFERENCES channels(name, network) ON UPDATE CASCADE ON DELETE CASCADE;
  338. --
  339. -- Name: users users_network_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pyRot
  340. --
  341. ALTER TABLE ONLY users
  342. ADD CONSTRAINT users_network_fkey FOREIGN KEY (network) REFERENCES networks(name) ON UPDATE CASCADE ON DELETE CASCADE;
  343. -- new stuff
  344. CREATE RULE update_username AS ON UPDATE TO users WHERE OLD.name <> NEW.name DO INSTEAD (
  345. INSERT INTO users (name, network, last_act_type, last_act_datetime, last_act_channel, last_act_channel_network, last_act, last_act_auxiliary, away, away_reason, xp_spent, level, coin) VALUES (NEW.name, NEW.network, NEW.last_act_type, NEW.last_act_datetime, NEW.last_act_channel, NEW.last_act_channel_network, NEW.last_act, NEW.last_act_auxiliary, NEW.away, NEW.away_reason, NEW.xp_spent, NEW.level, NEW.coin);
  346. UPDATE joins SET "user"=NEW.name WHERE "user"=OLD.name AND user_network=OLD.network;
  347. UPDATE kicks SET "user"=NEW.name WHERE "user"=OLD.name AND user_network=OLD.network;
  348. UPDATE messages SET "user"=NEW.name WHERE "user"=OLD.name AND user_network=OLD.network;
  349. DELETE FROM users WHERE name=OLD.name AND network=OLD.network;
  350. );
  351. CREATE RULE update_channel_name AS ON UPDATE TO channels WHERE OLD.name <> NEW.name DO INSTEAD (
  352. INSERT INTO channels (name, network, autojoin, join_greeting, statistics_commands, games, aggressiveness, chat, key, last_lame) VALUES (NEW.name, NEW.network, NEW.autojoin, NEW.join_greeting, NEW.statistics_commands, NEW.games, NEW.aggressiveness, NEW.chat, NEW.key, NEW.last_lame);
  353. UPDATE joins SET "user"=NEW.name WHERE "user"=OLD.name AND user_network=OLD.network;
  354. UPDATE kicks SET "user"=NEW.name WHERE "user"=OLD.name AND user_network=OLD.network;
  355. UPDATE messages SET "user"=NEW.name WHERE "user"=OLD.name AND user_network=OLD.network;
  356. UPDATE users SET last_act_channel=NEW.name WHERE last_act_channel=OLD.name AND network=OLD.network;
  357. DELETE FROM channels WHERE name=OLD.name AND network=OLD.network;
  358. );
  359. --
  360. -- PostgreSQL database dump complete
  361. --