58 lines
1.0 KiB
Go
58 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
"strconv"
|
|
_ "github.com/lib/pq"
|
|
)
|
|
|
|
type (
|
|
Post struct {
|
|
Title string
|
|
}
|
|
|
|
DBPosts []Post
|
|
)
|
|
|
|
var DB *sql.DB
|
|
|
|
func db_open(url string) error {
|
|
var err error
|
|
DB, err = sql.Open("postgres", url)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if _, err := DB.Exec("select 1"); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func GetPosts() DBPosts {
|
|
rows, err := DB.Query("select title from posts order by written desc")
|
|
if err != nil { return make(DBPosts, 0) }
|
|
defer rows.Close()
|
|
|
|
return convertRowsToPosts(rows)
|
|
}
|
|
|
|
func GetPostsWithID(id_raw string) DBPosts {
|
|
id, err := strconv.Atoi(id_raw)
|
|
if err != nil { return make(DBPosts, 0) }
|
|
|
|
rows, err := DB.Query("select title from posts where id = $1", id)
|
|
if err != nil { return make(DBPosts, 0) }
|
|
defer rows.Close()
|
|
return convertRowsToPosts(rows)
|
|
}
|
|
|
|
func convertRowsToPosts(rows *sql.Rows) DBPosts {
|
|
result := make(DBPosts, 0)
|
|
for rows.Next() {
|
|
post := Post{}
|
|
rows.Scan(&post.Title)
|
|
result = append(result, post)
|
|
}
|
|
return result
|
|
}
|