2023-07-30 19:21:16 +02:00
package database
import (
"database/sql"
"fmt"
2023-08-05 10:58:20 +02:00
"github.com/russross/blackfriday/v2"
2023-07-30 19:21:16 +02:00
)
type Post struct {
ID int
Title string ` db:"post_title" `
Content string
Date string
MarkdownContent string ` db:"markdown_content" `
GemtextContent sql . NullString ` db:"gemtext_content" `
TitleSlug string ` db:"title_slug" `
Year , Month , Day int
}
func ( p * Post ) GemtextPage ( ) string {
2023-08-13 19:48:19 +02:00
return fmt . Sprintf ( "# %s\n\n" , p . Title ) + p . GemtextContent . String + "\n\n" + p . Date
2023-07-30 19:21:16 +02:00
}
2023-08-05 10:58:20 +02:00
func ( p * Post ) HTMLPage ( ) string {
extensions := blackfriday . CommonExtensions | blackfriday . HardLineBreak
2023-08-13 19:48:19 +02:00
result := fmt . Sprintf ( "<h1>%s</h1>\n%s" , p . Title , blackfriday . Run ( [ ] byte ( p . MarkdownContent ) , blackfriday . WithExtensions ( extensions ) ) )
result += fmt . Sprintf ( "%s" , p . Date )
return result
2023-08-05 10:58:20 +02:00
}
2023-07-30 19:21:16 +02:00
func GetPost ( id int ) ( * Post , error ) {
db := GetDB ( )
post := & Post { }
2023-08-28 13:42:58 +02:00
err := db . Get ( post , "SELECT id, post_title, date, markdown_content, gemtext_content, title_slug, year, month, day FROM posts WHERE id = ? and gemtext_content is not null" , id )
2023-07-30 19:21:16 +02:00
if err != nil {
return nil , err
}
return post , nil
}