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.

pr_foreigntable_for_es.sql 5.0 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. DROP FOREIGN TABLE public.pull_request_es;
  2. CREATE FOREIGN TABLE public.pull_request_es
  3. (
  4. id bigint NOT NULL,
  5. type integer,
  6. status integer,
  7. conflicted_files json,
  8. commits_ahead integer,
  9. commits_behind integer,
  10. issue_id bigint,
  11. index bigint,
  12. head_repo_id bigint,
  13. base_repo_id bigint,
  14. head_branch character varying(255),
  15. base_branch character varying(255),
  16. merge_base character varying(40),
  17. has_merged boolean,
  18. merged_commit_id character varying(40),
  19. merger_id bigint,
  20. merged_unix bigint,
  21. is_transformed boolean NOT NULL DEFAULT false,
  22. amount integer NOT NULL DEFAULT 0
  23. )SERVER multicorn_es
  24. OPTIONS
  25. (
  26. host '192.168.207.94',
  27. port '9200',
  28. index 'pr-es-index',
  29. rowid_column 'id',
  30. default_sort '_id'
  31. )
  32. ;
  33. delete from public.pull_request_es;
  34. INSERT INTO public.pull_request_es(
  35. id,
  36. type,
  37. status,
  38. conflicted_files,
  39. commits_ahead,
  40. commits_behind,
  41. issue_id,
  42. index,
  43. head_repo_id,
  44. base_repo_id,
  45. head_branch,
  46. base_branch,
  47. merge_base,
  48. has_merged,
  49. merged_commit_id,
  50. merger_id,
  51. merged_unix,
  52. is_transformed,
  53. amount)
  54. SELECT
  55. b.id,
  56. b.type,
  57. b.status,
  58. b.conflicted_files,
  59. b.commits_ahead,
  60. b.commits_behind,
  61. b.issue_id,
  62. b.index,
  63. b.head_repo_id,
  64. b.base_repo_id,
  65. b.head_branch,
  66. b.base_branch,
  67. b.merge_base,
  68. b.has_merged,
  69. b.merged_commit_id,
  70. b.merger_id,
  71. b.merged_unix,
  72. b.is_transformed,
  73. b.amount
  74. FROM public.pull_request b,public.repository c where b.base_repo_id=c.id and c.is_private=false;
  75. CREATE OR REPLACE FUNCTION public.insert_pull_request_data() RETURNS trigger AS
  76. $def$
  77. DECLARE
  78. privateValue boolean=false;
  79. BEGIN
  80. select into privateValue is_private from public.repository where id=NEW.base_repo_id;
  81. if not privateValue then
  82. INSERT INTO public.pull_request_es(
  83. id,
  84. type,
  85. status,
  86. conflicted_files,
  87. commits_ahead,
  88. commits_behind,
  89. issue_id,
  90. index,
  91. head_repo_id,
  92. base_repo_id,
  93. head_branch,
  94. base_branch,
  95. merge_base,
  96. has_merged,
  97. merged_commit_id,
  98. merger_id,
  99. merged_unix,
  100. is_transformed,
  101. amount)
  102. VALUES (
  103. NEW.id,
  104. NEW.type,
  105. NEW.status,
  106. NEW.conflicted_files,
  107. NEW.commits_ahead,
  108. NEW.commits_behind,
  109. NEW.issue_id,
  110. NEW.index,
  111. NEW.head_repo_id,
  112. NEW.base_repo_id,
  113. NEW.head_branch,
  114. NEW.base_branch,
  115. NEW.merge_base,
  116. NEW.has_merged,
  117. NEW.merged_commit_id,
  118. NEW.merger_id,
  119. NEW.merged_unix,
  120. NEW.is_transformed,
  121. NEW.amount
  122. );
  123. UPDATE public.issue_es SET pr_id=NEW.id where id=NEW.issue_id;
  124. end if;
  125. RETURN NEW;
  126. END;
  127. $def$
  128. LANGUAGE plpgsql;
  129. DROP TRIGGER IF EXISTS es_insert_pull_request on public.pull_request;
  130. CREATE TRIGGER es_insert_pull_request
  131. AFTER INSERT ON public.pull_request
  132. FOR EACH ROW EXECUTE PROCEDURE insert_pull_request_data();
  133. ALTER TABLE public.pull_request ENABLE ALWAYS TRIGGER es_insert_pull_request;
  134. CREATE OR REPLACE FUNCTION public.update_pull_request() RETURNS trigger AS
  135. $def$
  136. declare
  137. BEGIN
  138. UPDATE public.pull_request_es
  139. SET has_merged=NEW.has_merged
  140. where id=NEW.id;
  141. return new;
  142. END
  143. $def$
  144. LANGUAGE plpgsql;
  145. DROP TRIGGER IF EXISTS es_update_pull_request on public.pull_request;
  146. CREATE TRIGGER es_update_pull_request
  147. AFTER UPDATE ON public.pull_request
  148. FOR EACH ROW EXECUTE PROCEDURE update_pull_request();
  149. ALTER TABLE public.pull_request ENABLE ALWAYS TRIGGER es_update_pull_request;
  150. CREATE OR REPLACE FUNCTION public.delete_pull_request() RETURNS trigger AS
  151. $def$
  152. declare
  153. BEGIN
  154. DELETE FROM public.pull_request_es where id=OLD.id;
  155. return new;
  156. END
  157. $def$
  158. LANGUAGE plpgsql;
  159. DROP TRIGGER IF EXISTS es_delete_pull_request on public.pull_request;
  160. CREATE TRIGGER es_delete_pull_request
  161. AFTER DELETE ON public.pull_request
  162. FOR EACH ROW EXECUTE PROCEDURE delete_pull_request();
  163. ALTER TABLE public.pull_request ENABLE ALWAYS TRIGGER es_delete_pull_request;