Today's project: create a Confluence report that shows hours logged for all users in a given month. Let the user specify the year/month in question, and optionally filter the set of reported users:

This report shows hours for all  users even if they haven't logged any this month, which is something Tempo's reports can't do.

Implementation

This was done with the free Play SQL Base plugin:

querying a view in the database:

Because PlaySQL has no security, I restrict it to querying only views in a queries  schema, using a dedicated jira_ro  user. Confluence's conf/server.xml  has a datasource defined for PlaySQL to use:

                    <Resource name="jdbc/QueriesDS" auth="Container" type="javax.sql.DataSource"
                           username="jira_ro"
                           password="<redacted>"
                           driverClassName="org.postgresql.Driver"
                           url="jdbc:postgresql://localhost:5432/jira?currentSchema=queries"
                           maxTotal="20"
                           validationQuery="select 1"/>

All quick and ugly, but it works.