Skip to content

danieka/gore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gore

Gore is a reporting server that makes it easy to write and manange you data reports.

Reports are a written in a single gore file and contains both a query for getting data from an input source and one or many formatters for outputting the data. The outputs of these reports are then exposed through a REST API. So Gore handles all the shuffling of data, you just decleratively define what data you want formatted how. Gore handles fetching data, rendering outputs and serving the finished reports.

Supported input formats are MySQL.

Installation

Right now the only way to install Gore is to clone the repo, download Go and then go run *.go in the repository.

Getting started

To get started you need to configure a data source and write your first report. The format for configuring the data source is:

sources:
  default:
    type: mysql
    host: 127.0.0.1
    port: 3306
    database: test
    username: user
    password: passwd

Edit this and save it as config.yaml in the repository. Now you need to create your first report. The format for reports is:

<info>
id: test
</info>
<source sql>
SELECT id, description FROM article
</source>
<output json>
[
    {{ range .Rows }}
    {
        "id": "{{ .id }}",
        "description": "{{ .description }}",
    },
    {{ end }}
]
</output>

Save this file as test.gore in the repository. Now you can start Gore with go run *.go. Gore will now start a web server and your report will be accesible on http://localhost:16772/report/{id}.

The info section contains metadata about the report. The id attribute is used when accessing the report through the rest API.

The source section contains the SQL query for fetching data. If no specific source is given it uses the default source.

The output section contains a template detailing how the data should be formatted when outputted. Supported formats right now are json, xlsx and csv but also expect HTML and PDF in the future. Output uses the Go templating language. The variable .Rows is the rows resulting from the query. Also available is the .Cols variable which is a []string of the column names from the database.

If you you leave the output tag empty Gore will use a default template. This template should be usable for most cases. XLSX only has a default format, so any custom formatting you enter will not be taken into account.

Gore command

gore [flags]
  -i	Run server in interactive mode (suitable for development)
  -s string
    	filesystem path where reports sources are
  -w	Watch .gore files for changes and reload reports on changes