Project

General

Profile

1 43877 claudio.at
-- query performed by IIS to bulk load project details
2 48460 claudio.at
DROP TABLE project_details;
3
CREATE TABLE project_details AS (
4 48139 alessia.ba
	SELECT
5
		p.id               AS projectid,
6
		p.acronym          AS acronym,
7
		p.code             AS code,
8
		p.jsonextrainfo    AS jsonextrainfo,
9
		array_agg(fp.path) AS fundingpath
10
	FROM projects p
11
		LEFT OUTER JOIN project_fundingpath pf ON (pf.project = p.id)
12
		LEFT OUTER JOIN fundingpaths fp ON (fp.id = pf.funding)
13 59018 alessia.ba
	WHERE p.collectedfrom <> 'openaire____::dfgf'
14
	AND p.collectedfrom <> 'openaire____::innoviris'
15
	AND p.collectedfrom <> 'openaire____::sgov'
16
	AND p.collectedfrom <> 'openaire____::conicytf'
17
	AND p.collectedfrom <> 'openaire____::anr'
18
	AND p.collectedfrom <> 'openaire____::gsrt'
19
	AND p.collectedfrom <> 'openaire____::rif'
20
	AND p.collectedfrom <> 'openaire____::rsf'
21
	AND p.collectedfrom <> 'openaire____::miur'
22 48139 alessia.ba
	GROUP BY p.id
23 43877 claudio.at
);
24
25 48460 claudio.at
GRANT SELECT ON project_details TO dnetapi;
26
27
28 43877 claudio.at
-- used to serve queries from api tsv exporter
29 48460 claudio.at
DROP TABLE projects_tsv;
30
CREATE TABLE projects_tsv AS (
31 51175 claudio.at
  SELECT
32
     nextval('projects_tsv_ids') AS rowid,
33
    p.code,
34
    p.acronym,
35
    p.title,
36
    p.call_identifier,
37
    p.startdate,
38
    p.enddate,
39
    p.ec_sc39,
40
    p.oa_mandate_for_publications,
41
    p.ec_article29_3 AS oa_mandate_for_datasets,
42
    p.contactfullname AS contactfullname,
43
    p.contactemail AS contactemail,
44
    org.legalname AS legalname,
45 53133 claudio.at
    org.country AS country,
46 51175 claudio.at
    (array_agg(f.id))[1] AS fundingpathid,
47
    (array_agg(f.description))[1] AS description,
48
    (array_agg(CASE WHEN po.participantnumber = 1
49
      THEN 'coordinator'
50
    ELSE '' END))[1] AS role
51
52
  FROM projects p
53
    LEFT OUTER JOIN project_organization po ON (p.id = po.project)
54 53133 claudio.at
    LEFT OUTER JOIN dsm_organizations org ON (po.resporganization = org.id)
55 51175 claudio.at
    LEFT OUTER JOIN project_fundingpath pf ON (p.id = pf.project)
56
    LEFT OUTER JOIN fundingpaths f ON (pf.funding = f.id)
57
  GROUP BY
58
  	p.code,
59
  	p.acronym,
60
    p.title,
61
    p.call_identifier,
62
    p.startdate,
63
    p.enddate,
64
    p.ec_sc39,
65
    p.oa_mandate_for_publications,
66
    p.ec_article29_3,
67
    p.contactfullname,
68
    p.contactemail,
69
    org.legalname,
70 53133 claudio.at
    org.country
71 51175 claudio.at
  ORDER BY p.acronym
72 48460 claudio.at
);
73 43877 claudio.at
74 48460 claudio.at
CREATE INDEX projects_tsv_fundingpathid_idx ON projects_tsv (fundingpathid);
75
CREATE INDEX projects_tsv_oa_mandate_for_datasets_idx ON projects_tsv (oa_mandate_for_datasets);
76
GRANT SELECT ON projects_tsv TO dnetapi;
77
78 43877 claudio.at
-- used to serve queries from dspace and eprints exporter
79 48460 claudio.at
DROP TABLE projects_api;
80
CREATE TABLE projects_api AS (
81 48139 alessia.ba
	SELECT
82 48460 claudio.at
		p.id,
83 48139 alessia.ba
		p.acronym          AS acronym,
84
		p.title            AS title,
85
		p.code             AS code,
86
		p.startdate        AS startdate,
87
		p.enddate          AS enddate,
88 48460 claudio.at
		(array_agg(org.legalshortname))[1] AS funder,
89
		(array_agg(fp.jurisdiction))[1]    AS jurisdiction,
90
		(array_agg(fp.id))[1]              AS fundingpathid
91 48139 alessia.ba
	FROM projects p
92
		LEFT OUTER JOIN project_fundingpath pfp ON (p.id = pfp.project)
93
		LEFT OUTER JOIN fundingpaths fp ON (pfp.funding = fp.id)
94 53133 claudio.at
		LEFT OUTER JOIN dsm_organizations org ON (org.id = fp.funder)
95 48460 claudio.at
	GROUP BY p.id);
96 43877 claudio.at
97 48460 claudio.at
CREATE INDEX projects_api_fundingpathid_idx ON projects_api (fundingpathid);
98
CREATE INDEX projects_api_startdate_idx ON projects_api (startdate);
99
CREATE INDEX projects_api_enddate_idx ON projects_api (enddate);
100
GRANT SELECT ON projects_api TO dnetapi;
101
102 45280 claudio.at
103 48139 alessia.ba
DROP MATERIALIZED VIEW projects_mv;
104
CREATE MATERIALIZED VIEW projects_mv AS (
105
	SELECT
106
		p.id                                                                                                       AS projectid,
107
		p.code                                                                                                     AS code,
108
		p.websiteurl                                                                                               AS websiteurl,
109
		p.acronym                                                                                                  AS acronym,
110
		p.title                                                                                                    AS title,
111
		p.startdate                                                                                                AS startdate,
112
		p.enddate                                                                                                  AS enddate,
113
		p.call_identifier                                                                                          AS callidentifier,
114
		p.keywords                                                                                                 AS keywords,
115
		p.duration                                                                                                 AS duration,
116
		p.ec_sc39                                                                                                  AS ecsc39,
117
		p.oa_mandate_for_publications                                                                              AS oamandatepublications,
118
		p.ec_article29_3                                                                                           AS ecarticle29_3,
119
		p.dateofcollection                                                                                         AS dateofcollection,
120 52338 alessia.ba
		p.lastupdate                                                                                               AS dateoftransformation,
121 48139 alessia.ba
		p.inferred                                                                                                 AS inferred,
122
		p.deletedbyinference                                                                                       AS deletedbyinference,
123
		p.trust                                                                                                    AS trust,
124
		p.inferenceprovenance                                                                                      AS inferenceprovenance,
125
		p.optional1                                                                                                AS optional1,
126
		p.optional2                                                                                                AS optional2,
127
		p.jsonextrainfo                                                                                            AS jsonextrainfo,
128 48962 claudio.at
		p.contactfullname                                                                                          AS contactfullname,
129
		p.contactfax                                                                                               AS contactfax,
130
		p.contactphone                                                                                             AS contactphone,
131
		p.contactemail                                                                                             AS contactemail,
132 57353 claudio.at
		p.summary                                                                                                  AS summary,
133
		p.currency                                                                                                 AS currency,
134
		p.totalcost                                                                                                AS totalcost,
135
        p.fundedamount                                                                                             AS fundedamount,
136 48139 alessia.ba
		dc.id                                                                                                      AS collectedfromid,
137
		dc.officialname                                                                                            AS collectedfromname,
138 57300 alessia.ba
		p.contracttype || '@@@' || p.contracttypename || '@@@' || p.contracttypescheme || '@@@' || p.contracttypescheme     AS contracttype,
139 48139 alessia.ba
		pac.code || '@@@' || pac.name || '@@@' || pas.code || '@@@' || pas.name                                    AS provenanceaction,
140 53708 claudio.at
		array_agg(DISTINCT i.pid || '###' || i.issuertype)                                                         AS pid,
141 48139 alessia.ba
		array_agg(DISTINCT s.name || '###' || sc.code || '@@@' || sc.name || '@@@' || ss.code || '@@@' || ss.name) AS subjects,
142 52191 claudio.at
		array_agg(DISTINCT fp.path)                                                                                AS fundingtree
143 48139 alessia.ba
	FROM projects p
144
		LEFT OUTER JOIN class pac ON (pac.code = p.provenanceactionclass)
145
		LEFT OUTER JOIN scheme pas ON (pas.code = p.provenanceactionscheme)
146
147
		LEFT OUTER JOIN projectpids pp ON (pp.project = p.id)
148 53708 claudio.at
		LEFT OUTER JOIN dsm_identities i ON (i.pid = pp.pid)
149 48139 alessia.ba
150 52325 claudio.at
		LEFT OUTER JOIN dsm_datasources dc ON (dc.id = p.collectedfrom)
151 48139 alessia.ba
152
		LEFT OUTER JOIN project_fundingpath pf ON (pf.project = p.id)
153
		LEFT OUTER JOIN fundingpaths fp ON (fp.id = pf.funding)
154
155
		LEFT OUTER JOIN project_subject ps ON (ps.project = p.id)
156
		LEFT OUTER JOIN subjects s ON (s.id = ps.subject)
157
158
		LEFT OUTER JOIN class sc ON (sc.code = s.semanticclass)
159
		LEFT OUTER JOIN scheme ss ON (ss.code = s.semanticscheme)
160
161
	GROUP BY
162
		p.id,
163
		p.code,
164
		p.websiteurl,
165
		p.acronym,
166
		p.title,
167
		p.startdate,
168
		p.enddate,
169
		p.call_identifier,
170
		p.keywords,
171
		p.duration,
172
		p.ec_sc39,
173
		p.oa_mandate_for_publications,
174
		p.ec_article29_3,
175
		p.dateofcollection,
176
		p.inferred,
177
		p.deletedbyinference,
178
		p.trust,
179
		p.inferenceprovenance,
180 48962 claudio.at
		p.contactfullname,
181
		p.contactfax,
182
		p.contactphone,
183
		p.contactemail,
184 57300 alessia.ba
		p.contracttype,
185 57353 claudio.at
		p.summary,
186
		p.currency,
187
		p.totalcost,
188
		p.fundedamount,
189 48139 alessia.ba
		dc.id,
190
		dc.officialname,
191
		pac.code, pac.name, pas.code, pas.name
192
);
193 48962 claudio.at
CREATE INDEX projects_mv_id_idx	ON projects_mv (projectid);
194 48139 alessia.ba
195 48460 claudio.at
GRANT SELECT ON fundingpaths TO dnetapi;
196 51175 claudio.at