0
0
Fork 0
zero-blog/database.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
}