# ST_Collect and ST_Union seem to produce the same result, but since we do topojson locally, there is no point
# to do the same optimization in both Postgress and Javascript, thus doing the simpler ST_Collect.
# We should do a/b test later to see which is overall faster
direct: 
  sql: |
    SELECT id, ST_AsGeoJSON(ST_Transform(way, 4326)) as data 
    FROM (
    SELECT id, ST_Multi(ST_Union(way)) AS way
      FROM (
        SELECT tags->'wikidata' AS id, (ST_Dump(way)).geom AS way
        FROM $1~
        WHERE tags ? 'wikidata' AND tags->'wikidata' IN ($2:csv)
        ) combq
      GROUP BY id
    ) subq
simplify: 
  sql: |
    SELECT id, ST_AsGeoJSON(ST_Transform(ST_Simplify(way, $3), 4326)) as data
    FROM (
    SELECT id, ST_Multi(ST_Union(way)) AS way
      FROM (
        SELECT tags->'wikidata' AS id, (ST_Dump(way)).geom AS way
        FROM $1~
        WHERE tags ? 'wikidata' AND tags->'wikidata' IN ($2:csv)
        ) combq
      GROUP BY id
    ) subq
  params:
    - name: 'arg1'
      default: 10000
# Convert geometry (in mercator) to a bbox, calc area, sqrt of that
simplifyarea: 
  sql: |
    SELECT id, ST_AsGeoJSON(ST_Transform(ST_Simplify(way, $3*sqrt(ST_Area(ST_Envelope(way)))), 4326)) as data
    FROM (
    SELECT id, ST_Multi(ST_Union(way)) AS way
      FROM (
        SELECT tags->'wikidata' AS id, (ST_Dump(way)).geom AS way
        FROM $1~
        WHERE tags ? 'wikidata' AND tags->'wikidata' IN ($2:csv)
        ) combq
      GROUP BY id
    ) subq
  params:
    - name: 'arg1'
      default: 0.001
removerepeat: 
  sql: |
    SELECT id, ST_AsGeoJSON(ST_Transform(ST_RemoveRepeatedPoints(way, $3), 4326)) as data
    FROM (
    SELECT id, ST_Multi(ST_Union(way)) AS way
      FROM (
        SELECT tags->'wikidata' AS id, (ST_Dump(way)).geom AS way
        FROM $1~
        WHERE tags ? 'wikidata' AND tags->'wikidata' IN ($2:csv)
        ) combq
      GROUP BY id
    ) subq 
  params:
    - name: 'arg1'
      default: 10000