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 4.6 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  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. id,
  56. type,
  57. status,
  58. conflicted_files,
  59. commits_ahead,
  60. commits_behind,
  61. issue_id,
  62. index,
  63. head_repo_id,
  64. base_repo_id,
  65. head_branch,
  66. base_branch,
  67. merge_base,
  68. has_merged,
  69. merged_commit_id,
  70. merger_id,
  71. merged_unix,
  72. is_transformed,
  73. amount
  74. FROM public.pull_request;
  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.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. end if;
  124. RETURN NEW;
  125. END;
  126. $def$
  127. LANGUAGE plpgsql;
  128. DROP TRIGGER IF EXISTS es_insert_pull_request on public.pull_request;
  129. CREATE TRIGGER es_insert_pull_request
  130. AFTER INSERT ON public.pull_request
  131. FOR EACH ROW EXECUTE PROCEDURE insert_pull_request_data();
  132. CREATE OR REPLACE FUNCTION public.update_pull_request() RETURNS trigger AS
  133. $def$
  134. declare
  135. BEGIN
  136. UPDATE public.pull_request_es
  137. SET has_merged=NEW.has_merged
  138. where id=NEW.id;
  139. return new;
  140. END
  141. $def$
  142. LANGUAGE plpgsql;
  143. DROP TRIGGER IF EXISTS es_update_pull_request on public.pull_request;
  144. CREATE TRIGGER es_update_pull_request
  145. AFTER UPDATE ON public.pull_request
  146. FOR EACH ROW EXECUTE PROCEDURE update_pull_request();
  147. CREATE OR REPLACE FUNCTION public.delete_pull_request() RETURNS trigger AS
  148. $def$
  149. declare
  150. BEGIN
  151. DELETE FROM public.pull_request_es where id=OLD.id;
  152. return new;
  153. END
  154. $def$
  155. LANGUAGE plpgsql;
  156. DROP TRIGGER IF EXISTS es_delete_pull_request on public.pull_request;
  157. CREATE TRIGGER es_delete_pull_request
  158. AFTER DELETE ON public.pull_request
  159. FOR EACH ROW EXECUTE PROCEDURE delete_pull_request();