From 60cca7d40fd62ae130ae89d331056e3d1dbcd16c Mon Sep 17 00:00:00 2001 From: Danny Date: Tue, 8 May 2018 15:41:48 +0200 Subject: [PATCH] add support for postgres too. closes #9 --- pkg/datastore/datastore.go | 4 +- .../migrations/postgres/1_initial_tables.sql | 64 +++++++++++++++++++ 2 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 pkg/datastore/migrations/postgres/1_initial_tables.sql diff --git a/pkg/datastore/datastore.go b/pkg/datastore/datastore.go index d55af92..e079d25 100644 --- a/pkg/datastore/datastore.go +++ b/pkg/datastore/datastore.go @@ -4,9 +4,9 @@ import ( "errors" _ "github.com/go-sql-driver/mysql" // mysql driver - "github.com/jmoiron/sqlx" - //_ "github.com/lib/pq" // postgresql driver "github.com/gobuffalo/packr" + "github.com/jmoiron/sqlx" + _ "github.com/lib/pq" // postgresql driver _ "github.com/mattn/go-sqlite3" //sqlite3 driver migrate "github.com/rubenv/sql-migrate" log "github.com/sirupsen/logrus" diff --git a/pkg/datastore/migrations/postgres/1_initial_tables.sql b/pkg/datastore/migrations/postgres/1_initial_tables.sql new file mode 100644 index 0000000..04784ff --- /dev/null +++ b/pkg/datastore/migrations/postgres/1_initial_tables.sql @@ -0,0 +1,64 @@ +-- +migrate Up + +CREATE TABLE users( + id SERIAL PRIMARY KEY NOT NULL, + email VARCHAR(255) NOT NULL, + password VARCHAR(255) NOT NULL +); + +CREATE TABLE pageviews( + id SERIAL PRIMARY KEY NOT NULL, + hostname VARCHAR(255) NOT NULL, + pathname VARCHAR(255) NOT NULL, + session_id VARCHAR(16) NOT NULL, + is_new_visitor BOOLEAN NOT NULL, + is_new_session BOOLEAN NOT NULL, + is_unique BOOLEAN NOT NULL, + is_bounce BOOLEAN NULL, + referrer VARCHAR(255) NULL, + duration INTEGER NULL, + timestamp TIMESTAMP NOT NULL +); + +CREATE TABLE daily_page_stats( + hostname VARCHAR(255) NOT NULL, + pathname VARCHAR(255) NOT NULL, + pageviews INTEGER NOT NULL, + visitors INTEGER NOT NULL, + entries INTEGER NOT NULL, + bounce_rate NUMERIC(2) NOT NULL, + avg_duration INTEGER NOT NULL, + date DATE NOT NULL +); + +CREATE TABLE daily_site_stats( + pageviews INTEGER NOT NULL, + visitors INTEGER NOT NULL, + sessions INTEGER NOT NULL, + bounce_rate NUMERIC(2) NOT NULL, + avg_duration INTEGER NOT NULL, + date DATE NOT NULL +); + +CREATE TABLE daily_referrer_stats( + url VARCHAR(255) NOT NULL, + pageviews INTEGER NOT NULL, + visitors INTEGER NOT NULL, + bounce_rate NUMERIC(2) NOT NULL, + avg_duration INTEGER NOT NULL, + date DATE NOT NULL +); + +CREATE UNIQUE INDEX unique_user_email ON users(email); +CREATE UNIQUE INDEX unique_daily_site_stats ON daily_site_stats(date); +CREATE UNIQUE INDEX unique_daily_page_stats ON daily_page_stats(pathname, date); +CREATE UNIQUE INDEX unique_daily_referrer_stats ON daily_referrer_stats(url, date); + +-- +migrate Down + +DROP TABLE IF EXISTS users; +DROP TABLE IF EXISTS pageviews; +DROP TABLE IF EXISTS daily_page_stats; +DROP TABLE IF EXISTS daily_site_stats; +DROP TABLE IF EXISTS daily_referrer_stats; +