2023-07-30 19:21:16 +02:00
package database
import (
"fmt"
)
type Link struct {
ID int
TitleSlug string ` db:"title_slug"" `
Year , Month , Day int
Title string ` db:"post_title" `
}
func ( l * Link ) GemtextLink ( ) string {
2023-08-01 10:07:48 +02:00
return fmt . Sprintf ( "=> /p/%d/%s %d-%d-%d - %s\n" , l . ID , l . TitleSlug , l . Year , l . Month , l . Day , l . Title )
}
func ( l * Link ) GemtextArchiveLink ( ) string {
return fmt . Sprintf ( "=> /y/%d/ Godina %d.\n" , l . Year , l . Year )
}
func ( l * Link ) GemtextArchiveMonthLink ( ) string {
return fmt . Sprintf ( "=> /y/%d/m/%d/ %d-%d\n" , l . Year , l . Month , l . Year , l . Month )
2023-07-30 19:21:16 +02:00
}
2023-08-05 10:58:20 +02:00
func ( l * Link ) HTMLLink ( ) string {
2023-11-27 19:44:23 +01:00
return fmt . Sprintf ( "‣ <a href=\"/p/%d/%s\">%d-%d-%d - %s</a><br>\n" , l . ID , l . TitleSlug , l . Year , l . Month , l . Day , l . Title )
2023-08-05 10:58:20 +02:00
}
func ( l * Link ) HTMLArchiveLink ( ) string {
2023-11-27 19:44:23 +01:00
return fmt . Sprintf ( " ‣ <a href=\"/y/%d/\">Godina %d.</a><br>\n" , l . Year , l . Year )
2023-08-05 10:58:20 +02:00
}
func ( l * Link ) HTMLArchiveMonthLink ( ) string {
2023-11-27 19:44:23 +01:00
return fmt . Sprintf ( " ‣ <a href=\"/y/%d/m/%d/\">%d-%d</a><br>\n" , l . Year , l . Month , l . Year , l . Month )
2023-08-05 10:58:20 +02:00
}
2023-07-30 19:21:16 +02:00
func GetRecentLinks ( ) ( [ ] Link , error ) {
db := GetDB ( )
links := [ ] Link { }
2023-11-27 19:44:23 +01:00
err := db . Select ( & links , "SELECT id, title_slug, year, month, day, post_title FROM posts where not (gemtext_content is null or gemtext_content = '') ORDER BY date DESC LIMIT 10" )
2023-07-30 19:21:16 +02:00
if err != nil {
return nil , err
}
return links , nil
}
2023-08-01 10:07:48 +02:00
func GetLinksByMonth ( year , month int ) ( [ ] Link , string , error ) {
db := GetDB ( )
links := [ ] Link { }
2023-08-05 10:58:20 +02:00
err := db . Select ( & links , "SELECT id, title_slug, year, month, day, post_title FROM posts WHERE year = ? and month = ? ORDER BY date desc" , year , month )
2023-08-01 10:07:48 +02:00
if err != nil {
return nil , "" , err
}
return links , fmt . Sprintf ( "# Arhiva za %d-%d\n\n" , year , month ) , nil
}
func GetMonthLinksByYear ( year int ) ( [ ] Link , string , error ) {
db := GetDB ( )
links := [ ] Link { }
err := db . Select ( & links , "SELECT distinct month, year FROM posts WHERE year = ? ORDER BY month DESC" , year )
if err != nil {
return nil , "" , err
}
return links , fmt . Sprintf ( "# Arhiva za %d\n\n" , year ) , nil
}
func GetAllYearLinks ( ) ( [ ] Link , string , error ) {
db := GetDB ( )
links := [ ] Link { }
err := db . Select ( & links , "SELECT distinct year FROM posts ORDER BY year DESC" )
if err != nil {
return nil , "" , err
}
return links , fmt . Sprintf ( "# Arhiva: " ) , nil
}