fix sqlite datastore compat, concat does note xist there

This commit is contained in:
Danny 2018-05-30 13:29:20 +02:00
parent 72868c5964
commit b856477d2a
2 changed files with 18 additions and 9 deletions

View File

@ -4,15 +4,24 @@ ALTER TABLE daily_referrer_stats ADD COLUMN groupname VARCHAR(255) NULL;
ALTER TABLE daily_referrer_stats ADD COLUMN hostname VARCHAR(255);
ALTER TABLE daily_referrer_stats ADD COLUMN pathname VARCHAR(255);
UPDATE daily_referrer_stats SET hostname = SUBSTR(url, 0, INSTR(url, '://')+3+INSTR(SUBSTR(url, INSTR(url, '://')+3), '/'-1)) WHERE url != '' AND hostname = '';
UPDATE daily_referrer_stats SET pathname = SUBSTR(url, LENGTH(hostname)) WHERE url != '' AND pathname = '';
UPDATE daily_referrer_stats SET hostname = SUBSTR(url, 0, (INSTR(url, '://')+3+INSTR(SUBSTR(url, INSTR(url, '://')+3), '/')-1)) WHERE url != '' AND (hostname = '' OR hostname IS NULL);
UPDATE daily_referrer_stats SET pathname = SUBSTR(url, LENGTH(hostname)+1) WHERE url != '' AND (pathname = '' OR pathname IS NULL);
ALTER TABLE daily_referrer_stats DROP COLUMN url;
-- drop `url` column... oh sqlite
ALTER TABLE daily_referrer_stats RENAME TO daily_referrer_stats_old;
CREATE TABLE daily_referrer_stats(
hostname VARCHAR(255) NOT NULL,
pathname VARCHAR(255) NOT NULL,
groupname VARCHAR(255) NULL,
pageviews INTEGER NOT NULL,
visitors INTEGER NOT NULL,
bounce_rate FLOAT NOT NULL,
avg_duration FLOAT NOT NULL,
known_durations INTEGER NOT NULL DEFAULT 0,
date DATE NOT NULL
);
INSERT INTO daily_referrer_stats SELECT hostname, pathname, groupname, pageviews, visitors, bounce_rate, avg_duration, known_durations, date FROM daily_referrer_stats_old;
-- +migrate Down
ALTER TABLE daily_referrer_stats DROP COLUMN groupname;
ALTER TABLE daily_referrer_stats DROP COLUMN hostname;
ALTER TABLE daily_referrer_stats DROP COLUMN pathname;
ALTER TABLE daily_referrer_stats ADD COLUMN url VARCHAR(255) NOT NULL;
-- TODO....

View File

@ -42,7 +42,7 @@ func (db *sqlstore) GetAggregatedReferrerStats(startDate time.Time, endDate time
COALESCE(ROUND(SUM(avg_duration*pageviews)/SUM(pageviews), 4), 0.00) AS avg_duration
FROM daily_referrer_stats
WHERE date >= ? AND date <= ?
GROUP BY COALESCE(groupname, CONCAT(hostname, pathname)) ORDER BY pageviews DESC LIMIT ?`)
GROUP BY COALESCE(groupname, hostname, pathname) ORDER BY pageviews DESC LIMIT ?`)
err := db.Select(&result, query, startDate.Format("2006-01-02"), endDate.Format("2006-01-02"), limit)
return result, err
}