Use the right date type for news

This commit is contained in:
Las Zenow 2016-09-04 12:32:58 -04:00
parent 15e1802a00
commit fd0b9cf53d
2 changed files with 17 additions and 6 deletions

View file

@ -16,9 +16,7 @@ CREATE TABLE books (
tsv tsvector tsv tsvector
); );
--
-- Books text search index -- Books text search index
--
CREATE FUNCTION books_trigger() RETURNS trigger AS $$ CREATE FUNCTION books_trigger() RETURNS trigger AS $$
declare declare
lang_config regconfig; lang_config regconfig;
@ -70,12 +68,14 @@ CREATE TRIGGER tsvectorupdate BEFORE INSERT OR UPDATE
ON books FOR EACH ROW EXECUTE PROCEDURE books_trigger(); ON books FOR EACH ROW EXECUTE PROCEDURE books_trigger();
CREATE INDEX books_idx ON books USING GIN (tsv); CREATE INDEX books_idx ON books USING GIN (tsv);
CREATE TABLE news ( CREATE TABLE news (
id serial unique, id serial unique,
date time, date timestamp,
text text text text
); );
CREATE TABLE users ( CREATE TABLE users (
id serial unique, id serial unique,
username varchar(255) unique, username varchar(255) unique,

View file

@ -1,6 +1,7 @@
package database package database
import ( import (
"fmt"
"time" "time"
) )
@ -13,17 +14,27 @@ type New struct {
// AddNews creates a new entry // AddNews creates a new entry
func (db *pgDB) AddNews(text string) error { func (db *pgDB) AddNews(text string) error {
return db.addRawNews(text, time.Now())
}
func (db *pgDB) addRawNews(text string, date time.Time) error {
return db.sql.Create(&New{ return db.sql.Create(&New{
Text: text, Text: text,
Date: time.Now(), Date: date,
}) })
} }
// GetNews returns all the news for the last 'days' limiting with a maximum of 'num' results // GetNews returns all the news for the last 'days' limiting with a maximum of 'num' results
func (db *pgDB) GetNews(num int, days int) ([]New, error) { func (db *pgDB) GetNews(num int, days int) ([]New, error) {
var news []New var news []New
err := db.sql.Model(&news). query := db.sql.Model(&news)
Limit(num).
if days != 0 {
daystr := fmt.Sprintf("%d days", days)
query = query.Where("date > CURRENT_TIMESTAMP-?::interval", daystr)
}
err := query.Limit(num).
Order("date DESC"). Order("date DESC").
Select() Select()
return news, err return news, err