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.

repo_foreigntable_for_es.sql 12 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. CREATE FOREIGN TABLE public.repository_es (
  2. id bigint NOT NULL,
  3. owner_id bigint,
  4. owner_name character varying(255),
  5. lower_name character varying(255) NOT NULL,
  6. name character varying(255) NOT NULL,
  7. description text,
  8. website character varying(2048),
  9. original_service_type integer,
  10. original_url character varying(2048),
  11. default_branch character varying(255),
  12. num_watches integer,
  13. num_stars integer,
  14. num_forks integer,
  15. num_issues integer,
  16. num_closed_issues integer,
  17. num_pulls integer,
  18. num_closed_pulls integer,
  19. num_milestones integer DEFAULT 0 NOT NULL,
  20. num_closed_milestones integer DEFAULT 0 NOT NULL,
  21. is_private boolean,
  22. is_empty boolean,
  23. is_archived boolean,
  24. is_mirror boolean,
  25. status integer DEFAULT 0 NOT NULL,
  26. is_fork boolean DEFAULT false NOT NULL,
  27. fork_id bigint,
  28. is_template boolean DEFAULT false NOT NULL,
  29. template_id bigint,
  30. size bigint DEFAULT 0 NOT NULL,
  31. is_fsck_enabled boolean DEFAULT true NOT NULL,
  32. close_issues_via_commit_in_any_branch boolean DEFAULT false NOT NULL,
  33. topics json,
  34. avatar character varying(64),
  35. created_unix bigint,
  36. updated_unix bigint,
  37. contract_address character varying(255),
  38. block_chain_status integer DEFAULT 0 NOT NULL,
  39. balance character varying(255) DEFAULT '0'::character varying NOT NULL,
  40. clone_cnt bigint DEFAULT 0 NOT NULL,
  41. license character varying(100),
  42. download_cnt bigint DEFAULT 0 NOT NULL,
  43. num_commit bigint DEFAULT 0 NOT NULL,
  44. git_clone_cnt bigint DEFAULT 0 NOT NULL,
  45. lang character varying(2048)
  46. ) SERVER multicorn_es
  47. OPTIONS
  48. (
  49. host '192.168.207.94',
  50. port '9200',
  51. index 'repository-es-index',
  52. rowid_column 'id'
  53. )
  54. ;
  55. CREATE OR REPLACE FUNCTION public.insert_repository_data() RETURNS trigger AS
  56. $def$
  57. BEGIN
  58. INSERT INTO public.repository_es (id,
  59. owner_id,
  60. owner_name,
  61. lower_name,
  62. name,
  63. description,
  64. website,
  65. original_service_type,
  66. original_url,
  67. default_branch,
  68. num_watches,
  69. num_stars,
  70. num_forks,
  71. num_issues,
  72. num_closed_issues,
  73. num_pulls,
  74. num_closed_pulls,
  75. num_milestones,
  76. num_closed_milestones,
  77. is_private,
  78. is_empty,
  79. is_archived,
  80. is_mirror,
  81. status,
  82. is_fork,
  83. fork_id,
  84. is_template,
  85. template_id,
  86. size,
  87. is_fsck_enabled,
  88. close_issues_via_commit_in_any_branch,
  89. topics,
  90. avatar,
  91. created_unix,
  92. updated_unix,
  93. contract_address,
  94. block_chain_status,
  95. balance,
  96. clone_cnt,
  97. num_commit,
  98. git_clone_cnt) VALUES
  99. (NEW.id,
  100. NEW.owner_id,
  101. NEW.owner_name,
  102. NEW.lower_name,
  103. NEW.name,
  104. NEW.description,
  105. NEW.website,
  106. NEW.original_service_type,
  107. NEW.original_url,
  108. NEW.default_branch,
  109. NEW.num_watches,
  110. NEW.num_stars,
  111. NEW.num_forks,
  112. NEW.num_issues,
  113. NEW.num_closed_issues,
  114. NEW.num_pulls,
  115. NEW.num_closed_pulls,
  116. NEW.num_milestones,
  117. NEW.num_closed_milestones,
  118. NEW.is_private,
  119. NEW.is_empty,
  120. NEW.is_archived,
  121. NEW.is_mirror,
  122. NEW.status,
  123. NEW.is_fork,
  124. NEW.fork_id,
  125. NEW.is_template,
  126. NEW.template_id,
  127. NEW.size,
  128. NEW.is_fsck_enabled,
  129. NEW.close_issues_via_commit_in_any_branch,
  130. NEW.topics,
  131. NEW.avatar,
  132. NEW.created_unix,
  133. NEW.updated_unix,
  134. NEW.contract_address,
  135. NEW.block_chain_status,
  136. NEW.balance,
  137. NEW.clone_cnt,
  138. NEW.num_commit,
  139. NEW.git_clone_cnt);
  140. RETURN NEW;
  141. END;
  142. $def$
  143. LANGUAGE plpgsql;
  144. DROP TRIGGER IF EXISTS es_insert_repository on public.repository;
  145. CREATE TRIGGER es_insert_repository
  146. AFTER INSERT ON public.repository
  147. FOR EACH ROW EXECUTE PROCEDURE insert_repository_data();
  148. CREATE OR REPLACE FUNCTION public.update_repository_description() RETURNS trigger AS
  149. $def$
  150. declare
  151. BEGIN
  152. UPDATE public.repository_es SET description=NEW.description where id=NEW.id;
  153. return new;
  154. END
  155. $def$
  156. LANGUAGE plpgsql;
  157. DROP TRIGGER IF EXISTS es_update_repository_description on public.repository;
  158. CREATE TRIGGER es_update_repository_description
  159. AFTER UPDATE OF "description" ON public.repository
  160. FOR EACH ROW EXECUTE PROCEDURE update_repository_description();
  161. CREATE OR REPLACE FUNCTION public.update_repository_name() RETURNS trigger AS
  162. $def$
  163. declare
  164. BEGIN
  165. UPDATE public.repository_es SET name=NEW.name,lower_name=NEW.lower_name where id=NEW.id;
  166. return new;
  167. END
  168. $def$
  169. LANGUAGE plpgsql;
  170. DROP TRIGGER IF EXISTS es_update_repository_name on public.repository;
  171. CREATE TRIGGER es_update_repository_name
  172. AFTER UPDATE OF "name","lower_name" ON public.repository
  173. FOR EACH ROW EXECUTE PROCEDURE update_repository_name();
  174. CREATE OR REPLACE FUNCTION public.update_repository_ownername() RETURNS trigger AS
  175. $def$
  176. declare
  177. BEGIN
  178. UPDATE public.repository_es SET owner_name=NEW.owner_name where id=NEW.id;
  179. return new;
  180. END
  181. $def$
  182. LANGUAGE plpgsql;
  183. DROP TRIGGER IF EXISTS es_update_repository_ownername on public.repository;
  184. CREATE TRIGGER es_update_repository_ownername
  185. AFTER UPDATE OF "owner_name" ON public.repository
  186. FOR EACH ROW EXECUTE PROCEDURE update_repository_ownername();
  187. CREATE OR REPLACE FUNCTION public.update_repository_website() RETURNS trigger AS
  188. $def$
  189. declare
  190. BEGIN
  191. UPDATE public.repository_es SET website=NEW.website where id=NEW.id;
  192. return new;
  193. END
  194. $def$
  195. LANGUAGE plpgsql;
  196. DROP TRIGGER IF EXISTS es_update_repository_website on public.repository;
  197. CREATE TRIGGER es_update_repository_website
  198. AFTER UPDATE OF "website" ON public.repository
  199. FOR EACH ROW EXECUTE PROCEDURE update_repository_website();
  200. CREATE OR REPLACE FUNCTION public.update_repository_topics() RETURNS trigger AS
  201. $def$
  202. declare
  203. BEGIN
  204. UPDATE public.repository_es SET topics=NEW.topics where id=NEW.id;
  205. return new;
  206. END
  207. $def$
  208. LANGUAGE plpgsql;
  209. DROP TRIGGER IF EXISTS es_update_repository_topics on public.repository;
  210. CREATE TRIGGER es_update_repository_topics
  211. AFTER UPDATE OF "topics" ON public.repository
  212. FOR EACH ROW EXECUTE PROCEDURE update_repository_topics();
  213. CREATE OR REPLACE FUNCTION public.update_repository_updated_unix() RETURNS trigger AS
  214. $def$
  215. declare
  216. BEGIN
  217. UPDATE public.repository_es SET updated_unix=NEW.updated_unix where id=NEW.id;
  218. return new;
  219. END
  220. $def$
  221. LANGUAGE plpgsql;
  222. DROP TRIGGER IF EXISTS es_update_repository_updated_unix on public.repository;
  223. CREATE TRIGGER es_update_repository_updated_unix
  224. AFTER UPDATE OF "updated_unix" ON public.repository
  225. FOR EACH ROW EXECUTE PROCEDURE update_repository_updated_unix();
  226. CREATE OR REPLACE FUNCTION public.update_repository_num_watches() RETURNS trigger AS
  227. $def$
  228. declare
  229. BEGIN
  230. UPDATE public.repository_es SET num_watches=NEW.num_watches where id=NEW.id;
  231. return new;
  232. END
  233. $def$
  234. LANGUAGE plpgsql;
  235. DROP TRIGGER IF EXISTS es_update_repository_num_watches on public.repository;
  236. CREATE TRIGGER es_update_repository_num_watches
  237. AFTER UPDATE OF "num_watches" ON public.repository
  238. FOR EACH ROW EXECUTE PROCEDURE update_repository_num_watches();
  239. CREATE OR REPLACE FUNCTION public.update_repository_num_stars() RETURNS trigger AS
  240. $def$
  241. declare
  242. BEGIN
  243. UPDATE public.repository_es SET num_stars=NEW.num_stars where id=NEW.id;
  244. return new;
  245. END
  246. $def$
  247. LANGUAGE plpgsql;
  248. DROP TRIGGER IF EXISTS es_update_repository_num_stars on public.repository;
  249. CREATE TRIGGER es_update_repository_num_stars
  250. AFTER UPDATE OF "num_stars" ON public.repository
  251. FOR EACH ROW EXECUTE PROCEDURE update_repository_num_stars();
  252. CREATE OR REPLACE FUNCTION public.update_repository_num_forks() RETURNS trigger AS
  253. $def$
  254. declare
  255. BEGIN
  256. UPDATE public.repository_es SET num_forks=NEW.num_forks where id=NEW.id;
  257. return new;
  258. END
  259. $def$
  260. LANGUAGE plpgsql;
  261. DROP TRIGGER IF EXISTS es_update_repository_num_forks on public.repository;
  262. CREATE TRIGGER es_update_repository_num_forks
  263. AFTER UPDATE OF "num_forks" ON public.repository
  264. FOR EACH ROW EXECUTE PROCEDURE update_repository_num_forks();
  265. CREATE OR REPLACE FUNCTION public.delete_repository() RETURNS trigger AS
  266. $def$
  267. declare
  268. BEGIN
  269. DELETE FROM public.repository_es where id=OLD.id;
  270. return new;
  271. END
  272. $def$
  273. LANGUAGE plpgsql;
  274. DROP TRIGGER IF EXISTS es_delete_repository on public.repository;
  275. CREATE TRIGGER es_delete_repository
  276. AFTER DELETE ON public.repository
  277. FOR EACH ROW EXECUTE PROCEDURE delete_repository();
  278. CREATE OR REPLACE FUNCTION public.udpate_repository_lang() RETURNS trigger AS
  279. $def$
  280. BEGIN
  281. if (TG_OP = 'DELETE') then
  282. update public.repository_es SET lang=(select string_agg(language, ',') from public.language_stat where repo_id=OLD.repo_id) where id=OLD.repo_id;
  283. elsif (TG_OP = 'UPDATE') then
  284. update public.repository_es SET lang=(select string_agg(language, ',') from public.language_stat where repo_id=NEW.repo_id) where id=NEW.repo_id;
  285. elsif (TG_OP = 'INSERT') then
  286. update public.repository_es SET lang=(select string_agg(language, ',') from public.language_stat where repo_id=NEW.repo_id) where id=NEW.repo_id;
  287. end if;
  288. return null;
  289. END;
  290. $def$
  291. LANGUAGE plpgsql;
  292. DROP TRIGGER IF EXISTS es_udpate_repository_lang on public.language_stat;
  293. CREATE TRIGGER es_udpate_repository_lang
  294. AFTER INSERT OR UPDATE OR DELETE ON public.language_stat
  295. FOR EACH ROW EXECUTE PROCEDURE udpate_repository_lang();