CREATE FOREIGN TABLE public.repository_es ( id bigint NOT NULL, owner_id bigint, owner_name character varying(255), lower_name character varying(255) NOT NULL, name character varying(255) NOT NULL, description text, website character varying(2048), original_service_type integer, original_url character varying(2048), default_branch character varying(255), num_watches integer, num_stars integer, num_forks integer, num_issues integer, num_closed_issues integer, num_pulls integer, num_closed_pulls integer, num_milestones integer DEFAULT 0 NOT NULL, num_closed_milestones integer DEFAULT 0 NOT NULL, is_private boolean, is_empty boolean, is_archived boolean, is_mirror boolean, status integer DEFAULT 0 NOT NULL, is_fork boolean DEFAULT false NOT NULL, fork_id bigint, is_template boolean DEFAULT false NOT NULL, template_id bigint, size bigint DEFAULT 0 NOT NULL, is_fsck_enabled boolean DEFAULT true NOT NULL, close_issues_via_commit_in_any_branch boolean DEFAULT false NOT NULL, topics json, avatar character varying(64), created_unix bigint, updated_unix bigint, contract_address character varying(255), block_chain_status integer DEFAULT 0 NOT NULL, balance character varying(255) DEFAULT '0'::character varying NOT NULL, clone_cnt bigint DEFAULT 0 NOT NULL, license character varying(100), download_cnt bigint DEFAULT 0 NOT NULL, num_commit bigint DEFAULT 0 NOT NULL, git_clone_cnt bigint DEFAULT 0 NOT NULL, lang character varying(2048) ) SERVER multicorn_es OPTIONS ( host '192.168.207.94', port '9200', index 'repository-es-index', rowid_column 'id' ) ; CREATE OR REPLACE FUNCTION public.insert_repository_data() RETURNS trigger AS $def$ BEGIN INSERT INTO public.repository_es (id, owner_id, owner_name, lower_name, name, description, website, original_service_type, original_url, default_branch, num_watches, num_stars, num_forks, num_issues, num_closed_issues, num_pulls, num_closed_pulls, num_milestones, num_closed_milestones, is_private, is_empty, is_archived, is_mirror, status, is_fork, fork_id, is_template, template_id, size, is_fsck_enabled, close_issues_via_commit_in_any_branch, topics, avatar, created_unix, updated_unix, contract_address, block_chain_status, balance, clone_cnt, num_commit, git_clone_cnt) VALUES (NEW.id, NEW.owner_id, NEW.owner_name, NEW.lower_name, NEW.name, NEW.description, NEW.website, NEW.original_service_type, NEW.original_url, NEW.default_branch, NEW.num_watches, NEW.num_stars, NEW.num_forks, NEW.num_issues, NEW.num_closed_issues, NEW.num_pulls, NEW.num_closed_pulls, NEW.num_milestones, NEW.num_closed_milestones, NEW.is_private, NEW.is_empty, NEW.is_archived, NEW.is_mirror, NEW.status, NEW.is_fork, NEW.fork_id, NEW.is_template, NEW.template_id, NEW.size, NEW.is_fsck_enabled, NEW.close_issues_via_commit_in_any_branch, NEW.topics, NEW.avatar, NEW.created_unix, NEW.updated_unix, NEW.contract_address, NEW.block_chain_status, NEW.balance, NEW.clone_cnt, NEW.num_commit, NEW.git_clone_cnt); RETURN NEW; END; $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_insert_repository on public.repository; CREATE TRIGGER es_insert_repository AFTER INSERT ON public.repository FOR EACH ROW EXECUTE PROCEDURE insert_repository_data(); CREATE OR REPLACE FUNCTION public.update_repository_description() RETURNS trigger AS $def$ declare BEGIN UPDATE public.repository_es SET description=NEW.description where id=NEW.id; return new; END $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_update_repository_description on public.repository; CREATE TRIGGER es_update_repository_description AFTER UPDATE OF "description" ON public.repository FOR EACH ROW EXECUTE PROCEDURE update_repository_description(); CREATE OR REPLACE FUNCTION public.update_repository_name() RETURNS trigger AS $def$ declare BEGIN UPDATE public.repository_es SET name=NEW.name,lower_name=NEW.lower_name where id=NEW.id; return new; END $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_update_repository_name on public.repository; CREATE TRIGGER es_update_repository_name AFTER UPDATE OF "name","lower_name" ON public.repository FOR EACH ROW EXECUTE PROCEDURE update_repository_name(); CREATE OR REPLACE FUNCTION public.update_repository_ownername() RETURNS trigger AS $def$ declare BEGIN UPDATE public.repository_es SET owner_name=NEW.owner_name where id=NEW.id; return new; END $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_update_repository_ownername on public.repository; CREATE TRIGGER es_update_repository_ownername AFTER UPDATE OF "owner_name" ON public.repository FOR EACH ROW EXECUTE PROCEDURE update_repository_ownername(); CREATE OR REPLACE FUNCTION public.update_repository_website() RETURNS trigger AS $def$ declare BEGIN UPDATE public.repository_es SET website=NEW.website where id=NEW.id; return new; END $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_update_repository_website on public.repository; CREATE TRIGGER es_update_repository_website AFTER UPDATE OF "website" ON public.repository FOR EACH ROW EXECUTE PROCEDURE update_repository_website(); CREATE OR REPLACE FUNCTION public.update_repository_topics() RETURNS trigger AS $def$ declare BEGIN UPDATE public.repository_es SET topics=NEW.topics where id=NEW.id; return new; END $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_update_repository_topics on public.repository; CREATE TRIGGER es_update_repository_topics AFTER UPDATE OF "topics" ON public.repository FOR EACH ROW EXECUTE PROCEDURE update_repository_topics(); CREATE OR REPLACE FUNCTION public.update_repository_updated_unix() RETURNS trigger AS $def$ declare BEGIN UPDATE public.repository_es SET updated_unix=NEW.updated_unix where id=NEW.id; return new; END $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_update_repository_updated_unix on public.repository; CREATE TRIGGER es_update_repository_updated_unix AFTER UPDATE OF "updated_unix" ON public.repository FOR EACH ROW EXECUTE PROCEDURE update_repository_updated_unix(); CREATE OR REPLACE FUNCTION public.update_repository_num_watches() RETURNS trigger AS $def$ declare BEGIN UPDATE public.repository_es SET num_watches=NEW.num_watches where id=NEW.id; return new; END $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_update_repository_num_watches on public.repository; CREATE TRIGGER es_update_repository_num_watches AFTER UPDATE OF "num_watches" ON public.repository FOR EACH ROW EXECUTE PROCEDURE update_repository_num_watches(); CREATE OR REPLACE FUNCTION public.update_repository_num_stars() RETURNS trigger AS $def$ declare BEGIN UPDATE public.repository_es SET num_stars=NEW.num_stars where id=NEW.id; return new; END $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_update_repository_num_stars on public.repository; CREATE TRIGGER es_update_repository_num_stars AFTER UPDATE OF "num_stars" ON public.repository FOR EACH ROW EXECUTE PROCEDURE update_repository_num_stars(); CREATE OR REPLACE FUNCTION public.update_repository_num_forks() RETURNS trigger AS $def$ declare BEGIN UPDATE public.repository_es SET num_forks=NEW.num_forks where id=NEW.id; return new; END $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_update_repository_num_forks on public.repository; CREATE TRIGGER es_update_repository_num_forks AFTER UPDATE OF "num_forks" ON public.repository FOR EACH ROW EXECUTE PROCEDURE update_repository_num_forks(); CREATE OR REPLACE FUNCTION public.delete_repository() RETURNS trigger AS $def$ declare BEGIN DELETE FROM public.repository_es where id=OLD.id; return new; END $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_delete_repository on public.repository; CREATE TRIGGER es_delete_repository AFTER DELETE ON public.repository FOR EACH ROW EXECUTE PROCEDURE delete_repository(); CREATE OR REPLACE FUNCTION public.udpate_repository_lang() RETURNS trigger AS $def$ BEGIN if (TG_OP = 'DELETE') then 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; elsif (TG_OP = 'UPDATE') then 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; elsif (TG_OP = 'INSERT') then 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; end if; return null; END; $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_udpate_repository_lang on public.language_stat; CREATE TRIGGER es_udpate_repository_lang AFTER INSERT OR UPDATE OR DELETE ON public.language_stat FOR EACH ROW EXECUTE PROCEDURE udpate_repository_lang();