42 lines
862 B
Go
42 lines
862 B
Go
package database
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
// New entry in the news table
|
|
type New struct {
|
|
ID int `pg:"type:serial"`
|
|
Date time.Time `pg:"type:timestamp"`
|
|
Text string
|
|
}
|
|
|
|
// AddNews creates a new entry
|
|
func (db *pgDB) AddNews(text string) error {
|
|
return db.AddRawNews(text, time.Now())
|
|
}
|
|
|
|
func (db *pgDB) AddRawNews(text string, date time.Time) error {
|
|
_, err := db.sql.Model(&New{
|
|
Text: text,
|
|
Date: date,
|
|
}).Insert()
|
|
return err
|
|
}
|
|
|
|
// 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) {
|
|
var news []New
|
|
query := db.sql.Model(&news)
|
|
|
|
if days != 0 {
|
|
daystr := fmt.Sprintf("%d days", days)
|
|
query = query.Where("date > CURRENT_TIMESTAMP-?::interval", daystr)
|
|
}
|
|
|
|
err := query.Limit(num).
|
|
Order("date DESC").
|
|
Select()
|
|
return news, err
|
|
}
|