setup.sql 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852
  1. CREATE DATABASE gm CHARACTER SET utf8 COLLATE utf8_bin;
  2. SET NAMES utf8;
  3. CONNECT gm;
  4. DROP TABLE IF EXISTS user;
  5. CREATE TABLE user (
  6. id INT AUTO_INCREMENT PRIMARY KEY,
  7. username VARCHAR(64) NOT NULL,
  8. email VARCHAR(128) NOT NULL,
  9. password CHAR(128) NOT NULL,
  10. salt CHAR(128) NOT NULL,
  11. fname VARCHAR(64),
  12. lname VARCHAR(64),
  13. picture VARCHAR(100),
  14. phone VARCHAR(16),
  15. cp VARCHAR(6),
  16. admin BOOLEAN NOT NULL DEFAULT 0,
  17. active BOOLEAN NOT NULL DEFAULT 0
  18. );
  19. DROP TABLE IF EXISTS login_attempts;
  20. CREATE TABLE login_attempts (
  21. user INT NOT NULL references user.id,
  22. dtime VARCHAR(30) NOT NULL
  23. );
  24. DROP TABLE IF EXISTS permissions;
  25. CREATE TABLE permissions(
  26. user INT PRIMARY KEY references user.id,
  27. access BOOLEAN NOT NULL DEFAULT 1,
  28. post BOOLEAN NOT NULL DEFAULT 1,
  29. settings BOOLEAN NOT NULL DEFAULT 1,
  30. money_r BOOLEAN NOT NULL DEFAULT 0,
  31. money_w BOOLEAN NOT NULL DEFAULT 0,
  32. manager BOOLEAN NOT NULL DEFAULT 0
  33. );
  34. DROP TABLE IF EXISTS post;
  35. CREATE TABLE post (
  36. id INT AUTO_INCREMENT PRIMARY KEY,
  37. permalink VARCHAR(300) NOT NULL,
  38. title_es VARCHAR(300) NOT NULL,
  39. title_en VARCHAR(300),
  40. title_eu VARCHAR(300),
  41. text_es VARCHAR(5000) NOT NULL,
  42. text_en VARCHAR(5000),
  43. text_eu VARCHAR(5000),
  44. user INT NOT NULL DEFAULT 1 REFERENCES user.id,
  45. dtime TIMESTAMP NOT NULL DEFAULT now(),
  46. visible BOOLEAN NOT NULL DEFAULT 1,
  47. comments BOOLEAN NOT NULL DEFAULT 1
  48. );
  49. DROP TABLE IF EXISTS post_tag;
  50. CREATE TABLE post_tag (
  51. post INT NOT NULL REFERENCES post.id,
  52. tag VARCHAR(64) NOT NULL,
  53. PRIMARY KEY (post, tag)
  54. );
  55. DROP TABLE IF EXISTS post_image;
  56. CREATE TABLE post_image (
  57. id INT AUTO_INCREMENT PRIMARY KEY,
  58. post INT NOT NULL REFERENCES post.id,
  59. image VARCHAR(300) NOT NULL,
  60. idx INT NOT NULL
  61. );
  62. DROP TABLE IF EXISTS post_comment;
  63. CREATE TABLE post_comment (
  64. id INT AUTO_INCREMENT PRIMARY KEY,
  65. post INT NOT NULL REFERENCES post(id),
  66. text VARCHAR(5000) NOT NULL,
  67. dtime TIMESTAMP NOT NULL DEFAULT now(),
  68. user INT REFERENCES user.id,
  69. username VARCHAR(200),
  70. lang VARCHAR(10),
  71. approved BOOLEAN NOT NULL DEFAULT 1,
  72. visit INT REFERENCES stat_visit.id,
  73. app VARCHAR(24),
  74. app_user VARCHAR(64)
  75. );
  76. DROP TABLE IF EXISTS place;
  77. CREATE TABLE place (
  78. id INT AUTO_INCREMENT PRIMARY KEY,
  79. name_es VARCHAR(100) NOT NULL,
  80. name_en VARCHAR(100),
  81. name_eu VARCHAR(100),
  82. address_es VARCHAR(200) NOT NULL,
  83. address_en VARCHAR(200),
  84. address_eu VARCHAR(200),
  85. cp VARCHAR(10),
  86. lat DOUBLE,
  87. lon DOUBLE
  88. );
  89. DROP TABLE IF EXISTS route;
  90. CREATE TABLE route (
  91. id INT AUTO_INCREMENT PRIMARY KEY,
  92. name VARCHAR(32),
  93. mins INT,
  94. c_lat DOUBLE NOT NULL,
  95. c_lon DOUBLE NOT NULL,
  96. zoom INT DEFAULT 16
  97. );
  98. DROP TABLE IF EXISTS route_point;
  99. CREATE TABLE route_point (
  100. id INT AUTO_INCREMENT PRIMARY KEY,
  101. route INT NOT NULL DEFAULT 0,
  102. part INT NOT NULL,
  103. place_o INT REFERENCES place.id,
  104. lat_o DOUBLE,
  105. lon_o DOUBLE,
  106. place_d INT REFERENCES place.id,
  107. lat_d DOUBLE,
  108. lon_d DOUBLE,
  109. mins INT,
  110. visible BOOLEAN NOT NULL DEFAULT 1
  111. );
  112. DROP TABLE IF EXISTS sponsor;
  113. CREATE TABLE sponsor (
  114. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  115. name_es VARCHAR(100) NOT NULL,
  116. name_en VARCHAR(100),
  117. name_eu VARCHAR(100),
  118. text_es VARCHAR(1000),
  119. text_en VARCHAR(1000),
  120. text_eu VARCHAR(1000),
  121. image VARCHAR(100),
  122. local BOOLEAN NOT NULL DEFAULT 1,
  123. address_es VARCHAR(200),
  124. address_en VARCHAR(200),
  125. address_eu VARCHAR(200),
  126. link VARCHAR(300),
  127. lat DOUBLE,
  128. lon DOUBLE,
  129. ammount INT,
  130. print INT NOT NULL DEFAULT 0,
  131. print_static INT NOT NULL DEFAULT 0,
  132. click INT NOT NULL DEFAULT 0
  133. );
  134. DROP TABLE IF EXISTS stat_visit;
  135. CREATE TABLE stat_visit (
  136. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  137. ip VARCHAR(50),
  138. uagent VARCHAR(400),
  139. os VARCHAR(150),
  140. browser VARCHAR(150)
  141. );
  142. DROP TABLE IF EXISTS stat_view;
  143. CREATE TABLE stat_view (
  144. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  145. visit INT NOT NULL REFERENCES stat_visit.id,
  146. section VARCHAR(80) NOT NULL,
  147. entry VARCHAR(100) NOT NULL,
  148. dtime TIMESTAMP NOT NULL DEFAULT now()
  149. );
  150. CREATE INDEX visit_dtime ON stat_view(visit, dtime);
  151. DROP TABLE IF EXISTS sync;
  152. CREATE TABLE sync (
  153. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  154. dtime TIMESTAMP NOT NULL DEFAULT now(),
  155. client VARCHAR(64),
  156. user VARCHAR(64),
  157. fg INT NOT NULL DEFAULT 0,
  158. synced BOOLEAN NOT NULL DEFAULT 0,
  159. error VARCHAR(256),
  160. ip VARCHAR(128),
  161. os VARCHAR(128),
  162. uagent VARCHAR(256)
  163. );
  164. DROP TABLE IF EXISTS stat_sync;
  165. CREATE TABLE stat_sync (
  166. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  167. dtime TIMESTAMP NOT NULL DEFAULT now(),
  168. user VARCHAR(64) NOT NULL,
  169. fg INT NOT NULL DEFAULT 1,
  170. os VARCHAR(64) NOT NULL,
  171. ip VARCHAR(50) NOT NULL,
  172. synced INT NOT NULL DEFAULT 0
  173. );
  174. DROP TABLE IF EXISTS photo;
  175. CREATE TABLE photo (
  176. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  177. file VARCHAR(100) NOT NULL UNIQUE,
  178. permalink VARCHAR(100) NOT NULL UNIQUE,
  179. title_es VARCHAR(100),
  180. title_en VARCHAR(100),
  181. title_eu VARCHAR(100),
  182. description_es VARCHAR(1000),
  183. description_en VARCHAR(1000),
  184. description_eu VARCHAR(1000),
  185. dtime DATETIME,
  186. uploaded TIMESTAMP NOT NULL DEFAULT now(),
  187. place INT REFERENCES place.id,
  188. width INT,
  189. height INT,
  190. size BIGINT,
  191. approved BOOLEAN NOT NULL DEFAULT 1,
  192. user INT NOT NULL DEFAULT 1 REFERENCES user.id,
  193. username VARCHAR(64)
  194. );
  195. DROP TABLE IF EXISTS album;
  196. CREATE TABLE album (
  197. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  198. permalink VARCHAR(100) NOT NULL,
  199. title_es VARCHAR(100) NOT NULL,
  200. title_en VARCHAR(100),
  201. title_eu VARCHAR(100),
  202. description_es VARCHAR(1000),
  203. description_en VARCHAR(1000),
  204. description_eu VARCHAR(1000),
  205. user INT NOT NULL DEFAULT 1 REFERENCES user.id,
  206. open BOOLEAN NOT NULL DEFAULT 1,
  207. dtime TIMESTAMP NOT NULL DEFAULT now()
  208. );
  209. DROP TABLE IF EXISTS photo_album;
  210. CREATE TABLE photo_album (
  211. photo INT NOT NULL REFERENCES photo.id,
  212. album INT NOT NULL REFERENCES album.id,
  213. PRIMARY KEY (photo, album)
  214. );
  215. DROP TABLE IF EXISTS photo_comment;
  216. CREATE TABLE photo_comment (
  217. id INT AUTO_INCREMENT PRIMARY KEY,
  218. photo INT NOT NULL REFERENCES photo(id),
  219. text VARCHAR(5000) NOT NULL,
  220. dtime TIMESTAMP NOT NULL DEFAULT now(),
  221. user INT REFERENCES user.id,
  222. username VARCHAR(200),
  223. lang VARCHAR(10),
  224. approved BOOLEAN NOT NULL DEFAULT 1,
  225. visit INT REFERENCES stat_visit.id,
  226. app VARCHAR(24),
  227. app_user VARCHAR(64)
  228. );
  229. DROP TABLE IF EXISTS activity;
  230. CREATE TABLE activity (
  231. id INT AUTO_INCREMENT PRIMARY KEY,
  232. permalink VARCHAR(100) NOT NULL,
  233. date DATE NOT NULL,
  234. city VARCHAR(100) NOT NULL DEFAULT "Vitoria-Gasteiz",
  235. title_es VARCHAR(300) NOT NULL,
  236. title_en VARCHAR(300),
  237. title_eu VARCHAR(300),
  238. text_es TEXT NOT NULL,
  239. text_en TEXT,
  240. text_eu TEXT,
  241. after_es VARCHAR(2000),
  242. after_en VARCHAR(2000),
  243. after_eu VARCHAR(2000),
  244. price FLOAT NOT NULL,
  245. inscription BOOLEAN NOT NULL DEFAULT 1,
  246. people INT DEFAULT 0,
  247. max_people INT,
  248. album INT REFERENCES album.id,
  249. user INT NOT NULL DEFAULT 1 REFERENCES user.id,
  250. dtime TIMESTAMP NOT NULL DEFAULT now(),
  251. visible BOOLEAN NOT NULL DEFAULT 1,
  252. comments BOOLEAN NOT NULL DEFAULT 1
  253. );
  254. DROP TABLE IF EXISTS activity_tag;
  255. CREATE TABLE activity_tag (
  256. activity INT NOT NULL REFERENCES activity.id,
  257. tag VARCHAR(64) NOT NULL,
  258. PRIMARY KEY (activity, tag)
  259. );
  260. DROP TABLE IF EXISTS activity_image;
  261. CREATE TABLE activity_image (
  262. id INT AUTO_INCREMENT PRIMARY KEY,
  263. activity INT NOT NULL REFERENCES activity.id,
  264. image VARCHAR(64) NOT NULL,
  265. idx INT NOT NULL
  266. );
  267. DROP TABLE IF EXISTS activity_itinerary;
  268. CREATE TABLE activity_itinerary (
  269. id INT AUTO_INCREMENT PRIMARY KEY,
  270. activity INT NOT NULL REFERENCES activity.id,
  271. name_es VARCHAR(64) NOT NULL,
  272. name_en VARCHAR(64),
  273. name_eu VARCHAR(64),
  274. description_es VARCHAR(1000),
  275. description_en VARCHAR(1000),
  276. description_eu VARCHAR(1000),
  277. start DATETIME NOT NULL,
  278. end DATETIME,
  279. place INT REFERENCES place.id,
  280. route INT REFERENCES route.id
  281. );
  282. DROP TABLE IF EXISTS activity_comment;
  283. CREATE TABLE activity_comment (
  284. id INT AUTO_INCREMENT PRIMARY KEY,
  285. activity INT NOT NULL REFERENCES post(id),
  286. text VARCHAR(5000) NOT NULL,
  287. dtime TIMESTAMP NOT NULL DEFAULT now(),
  288. user INT REFERENCES user.id,
  289. username VARCHAR(200),
  290. lang VARCHAR(10),
  291. approved BOOLEAN NOT NULL DEFAULT 1,
  292. visit INT REFERENCES stat_visit.id,
  293. app VARCHAR(24),
  294. app_user VARCHAR(64)
  295. );
  296. DROP TABLE IF EXISTS festival;
  297. CREATE TABLE festival (
  298. id INT AUTO_INCREMENT PRIMARY KEY,
  299. year INT UNIQUE,
  300. text_es VARCHAR(3000) NOT NULL,
  301. text_en VARCHAR(3000),
  302. text_eu VARCHAR(3000),
  303. summary_es VARCHAR(3000),
  304. summary_en VARCHAR(3000),
  305. summary_eu VARCHAR(3000),
  306. img VARCHAR(2000)
  307. );
  308. DROP TABLE IF EXISTS festival_day;
  309. CREATE TABLE festival_day (
  310. id INT AUTO_INCREMENT PRIMARY KEY,
  311. date DATE NOT NULL,
  312. name_es VARCHAR(60) NOT NULL,
  313. name_en VARCHAR(60),
  314. name_eu VARCHAR(60),
  315. price INT NOT NULL,
  316. people INT NOT NULL DEFAULT 0,
  317. max_people INT NOT NULL DEFAULT 0
  318. );
  319. DROP TABLE IF EXISTS festival_offer;
  320. CREATE TABLE festival_offer (
  321. id INT AUTO_INCREMENT PRIMARY KEY,
  322. year INT,
  323. name_es VARCHAR(60) NOT NULL,
  324. name_en VARCHAR(60),
  325. name_eu VARCHAR(60),
  326. description_es VARCHAR(500),
  327. description_en VARCHAR(500),
  328. description_eu VARCHAR(500),
  329. days INT NOT NULL,
  330. price INT NOT NULL
  331. );
  332. DROP TABLE IF EXISTS location;
  333. CREATE TABLE location (
  334. id INT AUTO_INCREMENT PRIMARY KEY,
  335. action VARCHAR(1) NOT NULL,
  336. dtime TIMESTAMP NOT NULL DEFAULT now(),
  337. lat DOUBLE,
  338. lon DOUBLE,
  339. start INT,
  340. user INT NOT NULL REFERENCES user.id
  341. );
  342. DROP TABLE IF EXISTS notification;
  343. CREATE TABLE notification (
  344. id INT AUTO_INCREMENT PRIMARY KEY,
  345. user INT NOT NULL REFERENCES user.id,
  346. dtime TIMESTAMP NOT NULL DEFAULT now(),
  347. duration INT NOT NULL DEFAULT 60,
  348. action VARCHAR(20) NOT NULL DEFAULT 'message',
  349. title_es VARCHAR(100) NOT NULL,
  350. title_en VARCHAR(100),
  351. title_eu VARCHAR(100),
  352. text_es VARCHAR(1000),
  353. text_en VARCHAR(1000),
  354. text_eu VARCHAR(1000),
  355. internal BOOLEAN NOT NULL DEFAULT 0
  356. );
  357. DROP TABLE IF EXISTS people;
  358. CREATE TABLE people (
  359. id INT AUTO_INCREMENT PRIMARY KEY,
  360. name_es VARCHAR(100) NOT NULL,
  361. name_en VARCHAR(100),
  362. name_eu VARCHAR(100),
  363. link VARCHAR(300)
  364. );
  365. DROP TABLE IF EXISTS festival_event;
  366. CREATE TABLE festival_event (
  367. id INT AUTO_INCREMENT PRIMARY KEY,
  368. gm BOOLEAN DEFAULT 0,
  369. title_es VARCHAR(200) NOT NULL,
  370. title_en VARCHAR(200),
  371. title_eu VARCHAR(200),
  372. description_es VARCHAR(5000),
  373. description_en VARCHAR(5000),
  374. description_eu VARCHAR(5000),
  375. host INT REFERENCES people.id,
  376. sponsor INT REFERENCES people.id,
  377. place INT REFERENCES place.id,
  378. route INT REFERENCES route.id,
  379. start DATETIME NOT NULL,
  380. end DATETIME,
  381. interest INT NOT NULL DEFAULT 2
  382. );
  383. DROP TABLE IF EXISTS festival_event_image;
  384. CREATE TABLE festival_event_image (
  385. id INT AUTO_INCREMENT PRIMARY KEY,
  386. event INT NOT NULL REFERENCES activity.id,
  387. image VARCHAR(64) NOT NULL,
  388. idx INT NOT NULL
  389. );
  390. DROP TABLE IF EXISTS settings;
  391. CREATE TABLE settings (
  392. name VARCHAR(64) PRIMARY KEY,
  393. value VARCHAR(64) NOT NULL,
  394. user INT REFERENCES user.id,
  395. changed TIMESTAMP NOT NULL DEFAULT now()
  396. );
  397. DROP TABLE IF EXISTS version;
  398. CREATE TABLE version (
  399. section VARCHAR(128) PRIMARY KEY,
  400. version INT NOT NULL DEFAULT 1
  401. );
  402. DROP TABLE IF EXISTS member;
  403. CREATE TABLE member (
  404. id INT AUTO_INCREMENT PRIMARY KEY,
  405. name VARCHAR(64) NOT NULL,
  406. lname VARCHAR(128) NOT NULL,
  407. lname2 VARCHAR(128),
  408. alias VARCHAR(32),
  409. dni VARCHAR(16),
  410. bdate DATE,
  411. phone VARCHAR(32),
  412. mail VARCHAR(128),
  413. address VARCHAR(512),
  414. jdate DATE,
  415. joined VARCHAR(16),
  416. board BOOLEAN NOT NULL DEFAULT 0,
  417. facebook VARCHAR(1024),
  418. twitter VARCHAR(1024),
  419. googleplus VARCHAR(1024)
  420. );
  421. DROP TABLE IF EXISTS member_activity;
  422. CREATE TABLE member_activity(
  423. member INT REFERENCES member.id,
  424. activity INT REFERENCES activity.id,
  425. paid BOOLEAN NOT NULL DEFAULT 1,
  426. PRIMARY KEY(member, activity)
  427. );
  428. DROP TABLE IF EXISTS intolerance;
  429. CREATE TABLE intolerance(
  430. member INT REFERENCES member.id,
  431. element VARCHAR(128),
  432. PRIMARY KEY(member, element)
  433. );
  434. DROP TABLE IF EXISTS member_day;
  435. CREATE TABLE member_day(
  436. member INT REFERENCES member.id,
  437. day INT REFERENCES festival_day.id,
  438. paid BOOLEAN NOT NULL DEFAULT 1,
  439. PRIMARY KEY (member, day)
  440. );
  441. DROP TABLE IF EXISTS transac_category;
  442. CREATE TABLE transac_category(
  443. id INT AUTO_INCREMENT PRIMARY KEY,
  444. title_internal VARCHAR(510) NOT NULL,
  445. title_es VARCHAR(510) NOT NULL,
  446. title_en VARCHAR(510),
  447. title_eu VARCHAR(510),
  448. description_internal VARCHAR(510) NOT NULL,
  449. description_es VARCHAR(510) NOT NULL,
  450. description_en VARCHAR(510),
  451. description_eu VARCHAR(510)
  452. );
  453. DROP TABLE IF EXISTS transact;
  454. CREATE TABLE transact(
  455. id INT AUTO_INCREMENT PRIMARY KEY,
  456. dtime TIMESTAMP NOT NULL DEFAULT now(),
  457. ammount FLOAT NOT NULL,
  458. user INT NOT NULL REFERENCES user.id,
  459. concept VARCHAR(1024),
  460. category INT NOT NULL REFERENCES transac_category.id
  461. );
  462. DROP TABLE IF EXISTS translation;
  463. CREATE TABLE translation(
  464. id INT AUTO_INCREMENT PRIMARY KEY,
  465. dtime TIMESTAMP NOT NULL DEFAULT now(),
  466. username VARCHAR(255) NOT NULL DEFAULT 'unknown',
  467. tab VARCHAR(255) NOT NULL,
  468. field VARCHAR(255) NOT NULL,
  469. eid INT NOT NULL,
  470. lang VARCHAR(2) NOT NULL,
  471. text VARCHAR(9000) NOT NULL,
  472. applied DATETIME
  473. );
  474. # Create views for festival_event
  475. CREATE OR REPLACE VIEW festival_event_gm AS SELECT id, title_es, title_en, title_eu, description_es, description_en, description_eu, host, sponsor, place, route, start, end, interest FROM festival_event WHERE gm = 1;
  476. CREATE OR REPLACE VIEW festival_event_city AS SELECT id, title_es, title_en, title_eu, description_es, description_en, description_eu, host, sponsor, place, route, start, end, interest FROM festival_event WHERE gm = 0;
  477. # Populate table version
  478. DELETE FROM version;
  479. INSERT INTO version VALUES ('activity', 1);
  480. INSERT INTO version VALUES ('activity_comment', 1);
  481. INSERT INTO version VALUES ('activity_image', 1);
  482. INSERT INTO version VALUES ('activity_itinerary', 1);
  483. INSERT INTO version VALUES ('activity_tag', 1);
  484. INSERT INTO version VALUES ('album', 1);
  485. INSERT INTO version VALUES ('festival', 1);
  486. INSERT INTO version VALUES ('festival_day', 1);
  487. INSERT INTO version VALUES ('festival_event_city', 1);
  488. INSERT INTO version VALUES ('festival_event_gm', 1);
  489. INSERT INTO version VALUES ('festival_event_image', 1);
  490. INSERT INTO version VALUES ('festival_offer', 1);
  491. INSERT INTO version VALUES ('people', 1);
  492. INSERT INTO version VALUES ('photo', 1);
  493. INSERT INTO version VALUES ('photo_album', 1);
  494. INSERT INTO version VALUES ('photo_comment', 1);
  495. INSERT INTO version VALUES ('place', 1);
  496. INSERT INTO version VALUES ('post', 1);
  497. INSERT INTO version VALUES ('post_comment', 1);
  498. INSERT INTO version VALUES ('post_image', 1);
  499. INSERT INTO version VALUES ('post_tag', 1);
  500. INSERT INTO version VALUES ('route', 1);
  501. INSERT INTO version VALUES ('route_point', 1);
  502. INSERT INTO version VALUES ('settings', 1);
  503. INSERT INTO version VALUES ('sponsor', 1);
  504. # Triggers to update versions
  505. DELIMITER //
  506. CREATE OR REPLACE PROCEDURE version_up (IN section_name VARCHAR(128))
  507. BEGIN
  508. UPDATE version SET version = version + 1 WHERE section = section_name;
  509. END//
  510. CREATE OR REPLACE TRIGGER version_i_activity AFTER INSERT ON activity FOR EACH ROW
  511. BEGIN
  512. CALL version_up('activity');
  513. END//
  514. CREATE OR REPLACE TRIGGER version_d_activity AFTER DELETE ON activity FOR EACH ROW
  515. BEGIN
  516. CALL version_up('activity');
  517. END//
  518. CREATE OR REPLACE TRIGGER version_u_activity AFTER UPDATE ON activity FOR EACH ROW
  519. BEGIN
  520. CALL version_up('activity');
  521. END//
  522. CREATE OR REPLACE TRIGGER version_i_activity_comment AFTER INSERT ON activity_comment FOR EACH ROW
  523. BEGIN
  524. CALL version_up('activity_comment');
  525. END//
  526. CREATE OR REPLACE TRIGGER version_d_activity_comment AFTER DELETE ON activity_comment FOR EACH ROW
  527. BEGIN
  528. CALL version_up('activity_comment');
  529. END//
  530. CREATE OR REPLACE TRIGGER version_u_activity_comment AFTER UPDATE ON activity_comment FOR EACH ROW
  531. BEGIN
  532. CALL version_up('activity_comment');
  533. END//
  534. CREATE OR REPLACE TRIGGER version_i_activity_image AFTER INSERT ON activity_image FOR EACH ROW
  535. BEGIN
  536. CALL version_up('activity_image');
  537. END//
  538. CREATE OR REPLACE TRIGGER version_d_activity_image AFTER DELETE ON activity_image FOR EACH ROW
  539. BEGIN
  540. CALL version_up('activity_image');
  541. END//
  542. CREATE OR REPLACE TRIGGER version_u_activity_image AFTER UPDATE ON activity_image FOR EACH ROW
  543. BEGIN
  544. CALL version_up('activity_image');
  545. END//
  546. CREATE OR REPLACE TRIGGER version_i_activity_itinerary AFTER INSERT ON activity_itinerary FOR EACH ROW
  547. BEGIN
  548. CALL version_up('activity_itinerary');
  549. END//
  550. CREATE OR REPLACE TRIGGER version_d_activity_itinerary AFTER DELETE ON activity_itinerary FOR EACH ROW
  551. BEGIN
  552. CALL version_up('activity_itinerary');
  553. END//
  554. CREATE OR REPLACE TRIGGER version_u_activity_itinerary AFTER UPDATE ON activity_itinerary FOR EACH ROW
  555. BEGIN
  556. CALL version_up('activity_itinerary');
  557. END//
  558. CREATE OR REPLACE TRIGGER version_i_activity_tag AFTER INSERT ON activity_tag FOR EACH ROW
  559. BEGIN
  560. CALL version_up('activity_tag');
  561. END//
  562. CREATE OR REPLACE TRIGGER version_d_activity_tag AFTER DELETE ON activity_tag FOR EACH ROW
  563. BEGIN
  564. CALL version_up('activity_tag');
  565. END//
  566. CREATE OR REPLACE TRIGGER version_u_activity_tag AFTER UPDATE ON activity_tag FOR EACH ROW
  567. BEGIN
  568. CALL version_up('activity_tag');
  569. END//
  570. CREATE OR REPLACE TRIGGER version_i_album AFTER INSERT ON album FOR EACH ROW
  571. BEGIN
  572. CALL version_up('album');
  573. END//
  574. CREATE OR REPLACE TRIGGER version_d_album AFTER DELETE ON album FOR EACH ROW
  575. BEGIN
  576. CALL version_up('album');
  577. END//
  578. CREATE OR REPLACE TRIGGER version_u_album AFTER UPDATE ON album FOR EACH ROW
  579. BEGIN
  580. CALL version_up('album');
  581. END//
  582. CREATE OR REPLACE TRIGGER version_i_festival AFTER INSERT ON festival FOR EACH ROW
  583. BEGIN
  584. CALL version_up('festival');
  585. END//
  586. CREATE OR REPLACE TRIGGER version_d_festival AFTER DELETE ON festival FOR EACH ROW
  587. BEGIN
  588. CALL version_up('festival');
  589. END//
  590. CREATE OR REPLACE TRIGGER version_u_festival AFTER UPDATE ON festival FOR EACH ROW
  591. BEGIN
  592. CALL version_up('festival');
  593. END//
  594. CREATE OR REPLACE TRIGGER version_i_festival_day AFTER INSERT ON festival_day FOR EACH ROW
  595. BEGIN
  596. CALL version_up('festival_day');
  597. END//
  598. CREATE OR REPLACE TRIGGER version_d_festival_day AFTER DELETE ON festival_day FOR EACH ROW
  599. BEGIN
  600. CALL version_up('festival_day');
  601. END//
  602. CREATE OR REPLACE TRIGGER version_u_festival_day AFTER UPDATE ON festival_day FOR EACH ROW
  603. BEGIN
  604. CALL version_up('festival_day');
  605. END//
  606. CREATE OR REPLACE TRIGGER version_i_festival_event AFTER INSERT ON festival_event FOR EACH ROW
  607. BEGIN
  608. IF NEW.gm = 0 THEN
  609. CALL version_up('festival_event_city');
  610. ELSE
  611. CALL version_up('festival_event_gm');
  612. END IF;
  613. END//
  614. CREATE OR REPLACE TRIGGER version_d_festival_event AFTER DELETE ON festival_event FOR EACH ROW
  615. BEGIN
  616. IF OLD.gm = 0 THEN
  617. CALL version_up('festival_event_city');
  618. ELSE
  619. CALL version_up('festival_event_gm');
  620. END IF;
  621. END//
  622. CREATE OR REPLACE TRIGGER version_u_festival_event AFTER UPDATE ON festival_event FOR EACH ROW
  623. BEGIN
  624. IF NEW.gm = 0 THEN
  625. CALL version_up('festival_event_city');
  626. ELSE
  627. CALL version_up('festival_event_gm');
  628. END IF;
  629. END//
  630. CREATE OR REPLACE TRIGGER version_i_festival_event_image AFTER INSERT ON festival_event_image FOR EACH ROW
  631. BEGIN
  632. CALL version_up('festival_event_image');
  633. END//
  634. CREATE OR REPLACE TRIGGER version_d_festival_event_image AFTER DELETE ON festival_event_image FOR EACH ROW
  635. BEGIN
  636. CALL version_up('festival_event_image');
  637. END//
  638. CREATE OR REPLACE TRIGGER version_u_festival_event_image AFTER UPDATE ON festival_event_image FOR EACH ROW
  639. BEGIN
  640. CALL version_up('festival_event_image');
  641. END//
  642. CREATE OR REPLACE TRIGGER version_i_festival_offer AFTER INSERT ON festival_offer FOR EACH ROW
  643. BEGIN
  644. CALL version_up('festival_offer');
  645. END//
  646. CREATE OR REPLACE TRIGGER version_d_festival_offer AFTER DELETE ON festival_offer FOR EACH ROW
  647. BEGIN
  648. CALL version_up('festival_offer');
  649. END//
  650. CREATE OR REPLACE TRIGGER version_u_festival_offer AFTER UPDATE ON festival_offer FOR EACH ROW
  651. BEGIN
  652. CALL version_up('festival_offer');
  653. END//
  654. CREATE OR REPLACE TRIGGER version_i_people AFTER INSERT ON people FOR EACH ROW
  655. BEGIN
  656. CALL version_up('people');
  657. END//
  658. CREATE OR REPLACE TRIGGER version_d_people AFTER DELETE ON people FOR EACH ROW
  659. BEGIN
  660. CALL version_up('people');
  661. END//
  662. CREATE OR REPLACE TRIGGER version_u_people AFTER UPDATE ON people FOR EACH ROW
  663. BEGIN
  664. CALL version_up('people');
  665. END//
  666. CREATE OR REPLACE TRIGGER version_i_photo AFTER INSERT ON photo FOR EACH ROW
  667. BEGIN
  668. CALL version_up('photo');
  669. END//
  670. CREATE OR REPLACE TRIGGER version_d_photo AFTER DELETE ON photo FOR EACH ROW
  671. BEGIN
  672. CALL version_up('photo');
  673. END//
  674. CREATE OR REPLACE TRIGGER version_u_photo AFTER UPDATE ON photo FOR EACH ROW
  675. BEGIN
  676. CALL version_up('photo');
  677. END//
  678. CREATE OR REPLACE TRIGGER version_i_photo_album AFTER INSERT ON photo_album FOR EACH ROW
  679. BEGIN
  680. CALL version_up('photo_album');
  681. END//
  682. CREATE OR REPLACE TRIGGER version_d_photo_album AFTER DELETE ON photo_album FOR EACH ROW
  683. BEGIN
  684. CALL version_up('photo_album');
  685. END//
  686. CREATE OR REPLACE TRIGGER version_u_photo_album AFTER UPDATE ON photo_album FOR EACH ROW
  687. BEGIN
  688. CALL version_up('photo_album');
  689. END//
  690. CREATE OR REPLACE TRIGGER version_i_photo_comment AFTER INSERT ON photo_comment FOR EACH ROW
  691. BEGIN
  692. CALL version_up('photo_comment');
  693. END//
  694. CREATE OR REPLACE TRIGGER version_d_photo_comment AFTER DELETE ON photo_comment FOR EACH ROW
  695. BEGIN
  696. CALL version_up('photo_comment');
  697. END//
  698. CREATE OR REPLACE TRIGGER version_u_photo_comment AFTER UPDATE ON photo_comment FOR EACH ROW
  699. BEGIN
  700. CALL version_up('photo_comment');
  701. END//
  702. CREATE OR REPLACE TRIGGER version_i_place AFTER INSERT ON place FOR EACH ROW
  703. BEGIN
  704. CALL version_up('place');
  705. END//
  706. CREATE OR REPLACE TRIGGER version_d_place AFTER DELETE ON place FOR EACH ROW
  707. BEGIN
  708. CALL version_up('place');
  709. END//
  710. CREATE OR REPLACE TRIGGER version_u_place AFTER UPDATE ON place FOR EACH ROW
  711. BEGIN
  712. CALL version_up('place');
  713. END//
  714. CREATE OR REPLACE TRIGGER version_i_post AFTER INSERT ON post FOR EACH ROW
  715. BEGIN
  716. CALL version_up('post');
  717. END//
  718. CREATE OR REPLACE TRIGGER version_d_post AFTER DELETE ON post FOR EACH ROW
  719. BEGIN
  720. CALL version_up('post');
  721. END//
  722. CREATE OR REPLACE TRIGGER version_u_post AFTER UPDATE ON post FOR EACH ROW
  723. BEGIN
  724. CALL version_up('post');
  725. END//
  726. CREATE OR REPLACE TRIGGER version_i_post_comment AFTER INSERT ON post_comment FOR EACH ROW
  727. BEGIN
  728. CALL version_up('post_comment');
  729. END//
  730. CREATE OR REPLACE TRIGGER version_d_post_comment AFTER DELETE ON post_comment FOR EACH ROW
  731. BEGIN
  732. CALL version_up('post_comment');
  733. END//
  734. CREATE OR REPLACE TRIGGER version_u_post_comment AFTER UPDATE ON post_comment FOR EACH ROW
  735. BEGIN
  736. CALL version_up('post_comment');
  737. END//
  738. CREATE OR REPLACE TRIGGER version_i_post_image AFTER INSERT ON post_image FOR EACH ROW
  739. BEGIN
  740. CALL version_up('post_image');
  741. END//
  742. CREATE OR REPLACE TRIGGER version_d_post_image AFTER DELETE ON post_image FOR EACH ROW
  743. BEGIN
  744. CALL version_up('post_image');
  745. END//
  746. CREATE OR REPLACE TRIGGER version_u_post_image AFTER UPDATE ON post_image FOR EACH ROW
  747. BEGIN
  748. CALL version_up('post_image');
  749. END//
  750. CREATE OR REPLACE TRIGGER version_i_post_tag AFTER INSERT ON post_tag FOR EACH ROW
  751. BEGIN
  752. CALL version_up('post_tag');
  753. END//
  754. CREATE OR REPLACE TRIGGER version_d_post_tag AFTER DELETE ON post_tag FOR EACH ROW
  755. BEGIN
  756. CALL version_up('post_tag');
  757. END//
  758. CREATE OR REPLACE TRIGGER version_u_post_tag AFTER UPDATE ON post_tag FOR EACH ROW
  759. BEGIN
  760. CALL version_up('post_tag');
  761. END//
  762. CREATE OR REPLACE TRIGGER version_i_settings AFTER INSERT ON settings FOR EACH ROW
  763. BEGIN
  764. CALL version_up('settings');
  765. END//
  766. CREATE OR REPLACE TRIGGER version_d_settings AFTER DELETE ON settings FOR EACH ROW
  767. BEGIN
  768. CALL version_up('settings');
  769. END//
  770. CREATE OR REPLACE TRIGGER version_u_settings AFTER UPDATE ON settings FOR EACH ROW
  771. BEGIN
  772. CALL version_up('settings');
  773. END//
  774. CREATE OR REPLACE TRIGGER version_i_sponsor AFTER INSERT ON sponsor FOR EACH ROW
  775. BEGIN
  776. CALL version_up('sponsor');
  777. END//
  778. CREATE OR REPLACE TRIGGER version_d_sponsor AFTER DELETE ON sponsor FOR EACH ROW
  779. BEGIN
  780. CALL version_up('sponsor');
  781. END//
  782. CREATE OR REPLACE TRIGGER version_u_sponsor AFTER UPDATE ON sponsor FOR EACH ROW
  783. BEGIN
  784. IF (NEW.print = OLD.print AND NEW.print_static = OLD.print_static AND NEW.click = OLD.click AND NEW.ammount = OLD.ammount) THEN
  785. CALL version_up('sponsor');
  786. END IF;
  787. END//
  788. DELIMITER ;
  789. # Set up two users for database. File dbusers.sql contains:
  790. # GRANT SELECT ON gm.* TO 'XXXX'@'XXXX' IDENTIFIED BY 'XXXX'; GRANT SELECT, INSERT, DELETE, UPDATE ON gm.* TO 'XXXX'@'XXXX' IDENTIFIED BY 'XXXX';
  791. SOURCE dbusers.sql;