You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

issue_foreigntable_for_es.sql 5.2 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. DROP FOREIGN TABLE public.issue_es;
  2. CREATE FOREIGN TABLE public.issue_es
  3. (
  4. id bigint NOT NULL,
  5. repo_id bigint,
  6. index bigint,
  7. poster_id bigint,
  8. original_author character varying(255),
  9. original_author_id bigint,
  10. name character varying(255) ,
  11. content text,
  12. comment text,
  13. milestone_id bigint,
  14. priority integer,
  15. is_closed boolean,
  16. is_pull boolean,
  17. pr_id bigint,
  18. num_comments integer,
  19. ref character varying(255),
  20. deadline_unix bigint,
  21. created_unix bigint,
  22. updated_unix bigint,
  23. closed_unix bigint,
  24. is_locked boolean NOT NULL,
  25. amount bigint,
  26. is_transformed boolean NOT NULL
  27. )SERVER multicorn_es
  28. OPTIONS
  29. (
  30. host '192.168.207.94',
  31. port '9200',
  32. index 'user_es-index',
  33. rowid_column 'id',
  34. default_sort '_id'
  35. )
  36. ;
  37. DELETE FROM public.issue_es;
  38. INSERT INTO public.issue_es(
  39. id,
  40. repo_id,
  41. index,
  42. poster_id,
  43. original_author,
  44. original_author_id,
  45. name,
  46. content,
  47. milestone_id,
  48. priority,
  49. is_closed,
  50. is_pull,
  51. num_comments,
  52. ref,
  53. deadline_unix,
  54. created_unix,
  55. updated_unix,
  56. closed_unix,
  57. is_locked,
  58. amount,
  59. is_transformed,comment)
  60. SELECT
  61. id,
  62. repo_id,
  63. index,
  64. poster_id,
  65. original_author,
  66. original_author_id,
  67. name,
  68. content,
  69. milestone_id,
  70. priority,
  71. is_closed,
  72. is_pull,
  73. num_comments,
  74. ref,
  75. deadline_unix,
  76. created_unix,
  77. updated_unix,
  78. closed_unix,
  79. is_locked,
  80. amount,
  81. is_transformed,
  82. (select array_to_string(array_agg(content order by created_unix desc),',') from public.comment a where a.issue_id=b.id)
  83. FROM public.issue b;
  84. CREATE OR REPLACE FUNCTION public.insert_issue_data() RETURNS trigger AS
  85. $def$
  86. BEGIN
  87. INSERT INTO public.issue_es(
  88. id,
  89. repo_id,
  90. index,
  91. poster_id,
  92. original_author,
  93. original_author_id,
  94. name,
  95. content,
  96. milestone_id,
  97. priority,
  98. is_closed,
  99. is_pull,
  100. num_comments,
  101. ref,
  102. deadline_unix,
  103. created_unix,
  104. updated_unix,
  105. closed_unix,
  106. is_locked,
  107. amount,
  108. is_transformed)
  109. VALUES (
  110. NEW.id,
  111. NEW.repo_id,
  112. NEW.index,
  113. NEW.poster_id,
  114. NEW.original_author,
  115. NEW.original_author_id,
  116. NEW.name,
  117. NEW.content,
  118. NEW.milestone_id,
  119. NEW.priority,
  120. NEW.is_closed,
  121. NEW.is_pull,
  122. NEW.num_comments,
  123. NEW.ref,
  124. NEW.deadline_unix,
  125. NEW.created_unix,
  126. NEW.updated_unix,
  127. NEW.closed_unix,
  128. NEW.is_locked,
  129. NEW.amount,
  130. NEW.is_transformed
  131. );
  132. RETURN NEW;
  133. END;
  134. $def$
  135. LANGUAGE plpgsql;
  136. DROP TRIGGER IF EXISTS es_insert_issue on public.issue;
  137. CREATE TRIGGER es_insert_issue
  138. AFTER INSERT ON public.issue
  139. FOR EACH ROW EXECUTE PROCEDURE insert_issue_data();
  140. CREATE OR REPLACE FUNCTION public.udpate_issue_comment() RETURNS trigger AS
  141. $def$
  142. BEGIN
  143. if (TG_OP = 'DELETE') then
  144. update public.issue_es SET comment=(select array_to_string(array_agg(content order by created_unix desc),',') from public.comment where issue_id=OLD.issue_id) where id=OLD.issue_id;
  145. elsif (TG_OP = 'UPDATE') then
  146. update public.issue_es SET comment=(select array_to_string(array_agg(content order by created_unix desc),',') from public.comment where issue_id=NEW.issue_id) where id=NEW.issue_id;
  147. end if;
  148. return null;
  149. END;
  150. $def$
  151. LANGUAGE plpgsql;
  152. DROP TRIGGER IF EXISTS es_udpate_issue_comment on public.comment;
  153. CREATE TRIGGER es_udpate_issue_comment
  154. AFTER DELETE OR UPDATE ON public.comment
  155. FOR EACH ROW EXECUTE PROCEDURE udpate_issue_comment();
  156. CREATE OR REPLACE FUNCTION public.update_issue() RETURNS trigger AS
  157. $def$
  158. declare
  159. BEGIN
  160. UPDATE public.issue_es
  161. SET content=NEW.content,
  162. name=NEW.name,
  163. is_closed=NEW.is_closed,
  164. num_comments=NEW.num_comments,
  165. comment=(select array_to_string(array_agg(content order by created_unix desc),',') from public.comment where issue_id=NEW.id)
  166. where id=NEW.id;
  167. return new;
  168. END
  169. $def$
  170. LANGUAGE plpgsql;
  171. DROP TRIGGER IF EXISTS es_update_issue on public.issue;
  172. CREATE TRIGGER es_update_issue
  173. AFTER UPDATE ON public.issue
  174. FOR EACH ROW EXECUTE PROCEDURE update_issue();
  175. CREATE OR REPLACE FUNCTION public.delete_issue() RETURNS trigger AS
  176. $def$
  177. declare
  178. BEGIN
  179. DELETE FROM public.issue_es where id=OLD.id;
  180. return new;
  181. END
  182. $def$
  183. LANGUAGE plpgsql;
  184. DROP TRIGGER IF EXISTS es_delete_issue on public.issue;
  185. CREATE TRIGGER es_delete_issue
  186. AFTER DELETE ON public.issue
  187. FOR EACH ROW EXECUTE PROCEDURE delete_issue();