M .env => .env +1 -0
@@ 67,3 67,4 @@ MAPPY_SUB=mappy
CHAT_SUB=chat
OSMSM_SUB=osmsm
RSS_SUB=rss
+FINISHED_SUB=finished
A finished/Dockerfile => finished/Dockerfile +3 -0
@@ 0,0 1,3 @@
+FROM nginx
+
+RUN sed -i '/location \/ {$/ a autoindex on; autoindex_format json;' /etc/nginx/conf.d/default.conf
M gen.yml => gen.yml +3 -0
@@ 6,6 6,8 @@ services:
env_file: .env
networks:
default:
+ volumes:
+ - finished-areas:/finished
osmsm_gen:
build:
context: osmsm_gen
@@ 25,3 27,4 @@ services:
volumes:
osmsm-volume:
damn-rss-volume:
+ finished-areas:
M http.yml => http.yml +14 -0
@@ 78,6 78,19 @@ services:
- "traefik.http.routers.rss.tls.certresolver=le"
volumes:
- damn-rss-volume:/usr/share/nginx/html
+ finished_www:
+ build:
+ context: finished
+ env_file: .env
+ restart: always
+ environment:
+ - NGINX_HOST=${FINISHED_SUB}.${DOMAIN_NAME}
+ labels:
+ - "traefik.http.routers.finished.rule=Host(`${FINISHED_SUB}.${DOMAIN_NAME}`)"
+ - "traefik.http.routers.finished.tls=true"
+ - "traefik.http.routers.finished.tls.certresolver=le"
+ volumes:
+ - finished-areas:/usr/share/nginx/html
www:
build:
context: ${WWW_REPO}
@@ 167,3 180,4 @@ volumes:
damndb-volume:
osmsm-volume:
damn-rss-volume:
+ finished-areas:
M upkeep/Dockerfile => upkeep/Dockerfile +1 -1
@@ 7,7 7,7 @@ ENV POSTGRES_PASSWORD ${POSTGRES_PASSWORD:-pass}
ENV POSTGRES_USER ${POSTGRES_USER:-damnuser}
ENV POSTGRES_DB ${POSTGRES_DB:-damndb}
+COPY ./finish_areas_with_priority_-10.sh /finish_areas_with_priority_-10.sh
COPY ./run_scripts.sh /run_scripts.sh
-RUN chmod +x /run_scripts.sh
COPY ./scripts /scripts
ENTRYPOINT ["/run_scripts.sh"]
A upkeep/finish_areas_with_priority_-10.sh => upkeep/finish_areas_with_priority_-10.sh +64 -0
@@ 0,0 1,64 @@
+#!/bin/sh
+OD="/finished"
+if [ ! -d "$OD" ]
+then
+ echo "Directory $OD does not exists."
+ exit 1
+fi
+run_psql()
+# Run psql query that returns JSON formatted rows.
+{
+ db="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_HOST}/${POSTGRES_DB}"
+ psql -1 -c "$1" "$db"
+ if [ x"$?" != "x0" ]
+ then
+ exit 1
+ fi
+}
+run_psql_json()
+{
+ run_psql "$1" | grep '^ *{'
+}
+get_aid()
+{
+ echo "$1" | grep -o '"aid":[0-9]\{4,4\}' | grep -o '[0-9]\{4,4\}'
+}
+get_fn()
+{
+ echo "$(date --iso-8601).$(get_aid "$1").json"
+}
+CA="current_areas ca"
+CS="current_squares cs"
+CC="current_commits cc"
+SQL1="with lasts as (select distinct on (aid) aid, date
+ from current_commits order by aid, cid desc)
+select row_to_json(ca) from $CA, lasts
+where ca.aid=lasts.aid and ca.priority=-10
+ and lasts.date + interval '1 month' < now()"
+SQL2="select row_to_json(cs) from $CS where aid="
+SQL3="select row_to_json(cc) from $CC where aid="
+run_psql_json "$SQL1" | while read -r area
+do
+ aid=$(get_aid "$area")
+ fn="$OD/$(get_fn "$area")"
+ echo "{" > "$fn"
+ echo "\"area\":$area," >> "$fn"
+ echo "\"squares\":[" >> "$fn"
+ run_psql_json "$SQL2$aid order by sid" | while read -r square
+ do
+ echo "$square," >> "$fn"
+ done
+ sed -i '$ s/.$//' "$fn"
+ echo "]," >> "$fn"
+ echo "\"commits\":[" >> "$fn"
+ run_psql_json "$SQL3$aid order by cid desc" | while read -r commit
+ do
+ echo "$commit," >> "$fn"
+ done
+ sed -i '$ s/.$//' "$fn"
+ echo "]}" >> "$fn"
+ DC="delete from $CC where cc.aid=$aid;"
+ DS="delete from $CS where cs.aid=$aid;"
+ DA="delete from $CA where ca.aid=$aid;"
+ run_psql "$DC$DS$DA"
+done
M upkeep/run_scripts.sh => upkeep/run_scripts.sh +4 -3
@@ 1,6 1,7 @@
-#!/bin/bash
+#!/bin/sh
for s in `ls /scripts`
do
- psql -1 -f /scripts/$s \
- postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_HOST}/${POSTGRES_DB}
+ psql -1 -f /scripts/$s \
+ postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_HOST}/${POSTGRES_DB}
done
+/finish_areas_with_priority_-10.sh