You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* use tables server_project and rollout instead of column project.etalon and table folder_diff_server
* drop column project.etalon
* remove api routest mirror_list and mirror_summary in /rest/project/:name/
left join rollout r2 on (r1.project_id, r1.prefix) = (r2.project_id, r2.prefix) and r2.id < r1.id
314
+
group by r1.project_id, r1.prefix
323
315
)
324
-
select s.id, s.region, s.country,
316
+
select s.id as server_id, name, prefix, name as project, country, region,
325
317
s.sponsor, s.sponsor_url,
326
318
s.hostname as hostname,
327
319
concat(s.hostname, s.urldir) as url,
328
320
case when (select rating from server_stability where capability = 'http' and server_id = s.id) > 0 then concat('http://', s.hostname, '/', s.urldir, '/') else '' end as http_url,
329
321
case when (select rating from server_stability where capability = 'https' and server_id = s.id) > 0 then concat('https://', s.hostname, '/', s.urldir, '/') else '' end as https_url,
330
322
( select msg from server_note where kind = 'Ftp' and server_note.hostname = s.hostname order by server_note.dt desc limit 1) as ftp_url,
331
323
( select msg from server_note where kind = 'Rsync' and server_note.hostname = s.hostname order by server_note.dt desc limit 1) as rsync_url,
332
-
project,
333
-
round(case when project_folder_count.cnt > 3 then s_eq * 100 / project_folder_count.cnt when s_eq = project_folder_count.cnt then 100 else 50 end, 0) score,
334
-
s_eq, s_ne, victim, project_folder_count.cnt
335
-
from (
336
-
select
337
-
cmp.project_id,
338
-
cmp.name project,
339
-
cmp.server_id,
340
-
sum(s_eq) s_eq, sum(s_ne) s_ne,
341
-
max(example) victim
342
-
from (
343
-
select
344
-
etalon.project_id,
345
-
etalon.name,
346
-
case when etalon.diff_id = fd.id then 1 else 0 end as s_eq,
347
-
case when etalon.diff_id != fd.id or fd.id is null then 1 else 0 end as s_ne,
348
-
case when etalon.diff_id != fd.id or fd.id is null then path else '' end example,
349
-
fds.server_id
350
-
from etalon
351
-
left join folder_diff fd on fd.folder_id = etalon.folder_id
352
-
left join folder_diff_server fds on fds.folder_diff_id = fd.id
353
-
) cmp
354
-
group by server_id, project_id, name
355
-
) smry
356
-
join project_folder_count on project_folder_count.project_id = smry.project_id
357
-
join server s on smry.server_id = s.id and s.enabled
358
-
order by region, country, score, hostname, project;
324
+
case when recent_rollout_server.server_id is null then
325
+
case when sp.state > 0 then 100 else 0 end
326
+
when 6*60*60 > unix_timestamp(last_dt) - unix_timestamp(rr2_dt) then 100
327
+
when 24*60*60 > unix_timestamp(prelast_dt) - unix_timestamp(rr1_dt) then 75
328
+
else 50
329
+
end as score
330
+
from
331
+
server s
332
+
left join server_project sp on s.id = sp.server_id
333
+
left join project on sp.project_id = project.id
334
+
left join (
335
+
select rs1.server_id, project_id, prefix, rs1.dt prelast_dt, rs2.dt last_dt, (select dt from rollout where id = rs1.rollout_id) rr1_dt, (select dt from rollout where id = rs2.rollout_id) rr2_dt
336
+
from recent_rollouts
337
+
left join rollout_server rs1 on rs1.rollout_id = recent_rollouts.prelast_rollout_id -- prelast
338
+
left join rollout_server rs2 on rs2.rollout_id = recent_rollouts.last_rollout_id and rs1.server_id = rs2.server_id -- last
339
+
) recent_rollout_server on recent_rollout_server.server_id = s.id and recent_rollout_server.project_id = project.id
0 commit comments