package hn import ( "net/http" "time" "github.com/flosch/pongo2" "github.com/jinzhu/gorm" "github.com/labstack/echo" ) type RequestHandlerSet struct { db *gorm.DB } func NewRequestHandlerSet(db *gorm.DB) *RequestHandlerSet { rhs := new(RequestHandlerSet) rhs.db = db return rhs } func (r *RequestHandlerSet) indexHandler(c echo.Context) error { var fpi []HNFrontPage r.db.Where("disappeared is not ?", SQLITE_NULL_DATETIME).Order("disappeared desc").Find(&fpi) type fprow struct { Duration string URL string Title string HighestRank uint HNID uint TimeGone string } var fprows []fprow for _, item := range fpi { fprows = append(fprows, fprow{ Duration: item.Disappeared.Round(time.Minute).Sub(item.Appeared.Round(time.Minute)).String(), URL: item.URL, HNID: item.HNID, Title: item.Title, HighestRank: item.HighestRank, TimeGone: time.Now().Round(time.Minute).Sub(item.Disappeared.Round(time.Minute)).String(), }) } type rowtwo struct { Duration string URL string Title string HighestRank uint HNID uint Rank uint } var currentfp []rowtwo var cur []HNFrontPage r.db.Where("disappeared is ?", SQLITE_NULL_DATETIME).Order("rank asc").Find(&cur) for _, item := range cur { currentfp = append(currentfp, rowtwo{ Duration: time.Now().Round(time.Minute).Sub(item.Appeared.Round(time.Minute)).String(), URL: item.URL, HNID: item.HNID, Title: item.Title, HighestRank: item.HighestRank, Rank: item.Rank, }) } tc := pongo2.Context{ "time": time.Now().UTC().Format(time.RFC3339Nano), "exits": fprows, "current": currentfp, } return c.Render(http.StatusOK, "index.html", tc) } func (r *RequestHandlerSet) aboutHandler(c echo.Context) error { tc := pongo2.Context{ "time": time.Now().UTC().Format(time.RFC3339Nano), } return c.Render(http.StatusOK, "about.html", tc) }