mirror of
https://github.com/rjNemo/go-wiki
synced 2026-06-06 02:36:40 +00:00
78 lines
1.7 KiB
Go
78 lines
1.7 KiB
Go
package models
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
)
|
|
|
|
// A Page own a wiki page data and has a title and a body.
|
|
type Page struct {
|
|
id uint
|
|
title string
|
|
body []byte
|
|
}
|
|
|
|
// ID exposes Page's title field
|
|
func (p Page) ID() uint {
|
|
return p.id
|
|
}
|
|
|
|
// Title exposes Page's title field
|
|
func (p Page) Title() string {
|
|
return p.title
|
|
}
|
|
|
|
// SetTitle edits Page's title field
|
|
func (p *Page) SetTitle(s string) {
|
|
p.title = s
|
|
}
|
|
|
|
// Body exposes Page's body field
|
|
func (p Page) Body() []byte {
|
|
return p.body
|
|
}
|
|
|
|
// SetBody edits Page's body field
|
|
func (p *Page) SetBody(b []byte) {
|
|
p.body = b
|
|
}
|
|
|
|
// BlankPage constructor returns a pointer to a blank Page.
|
|
func BlankPage() *Page {
|
|
return &Page{title: "Empty page", body: []byte("Write some content")}
|
|
}
|
|
|
|
// NewPage constructor returns a pointer to a sample Page.
|
|
// func NewPage(id uint, title string, body []byte) (*Page, error) {
|
|
func NewPage(id uint, title string, body []byte) *Page {
|
|
// if id < 0 {
|
|
// return nil, errNegID
|
|
// }
|
|
// if title == "" {
|
|
// return nil, errBlankTitle
|
|
// }
|
|
return &Page{
|
|
id: id,
|
|
title: strings.Title(title),
|
|
body: body}
|
|
// , nil
|
|
}
|
|
|
|
var errBlankTitle = errors.New("The title must not be blank")
|
|
var errNegID = errors.New("The ID must be unsigned")
|
|
|
|
// Save a page to the 'data/' folder in txt format.
|
|
// func (p *Page) Save() error {
|
|
// fileName := "data/files/" + p.title + ".txt"
|
|
// return ioutil.WriteFile(fileName, p.body, 0600)
|
|
// }
|
|
|
|
// LoadPage reads a saved page data and returns a pointer to the Page.
|
|
// func LoadPage(title string) (*Page, error) {
|
|
// fileName := "data/files/" + title + ".txt"
|
|
// body, err := ioutil.ReadFile(fileName)
|
|
// if err != nil {
|
|
// return nil, err
|
|
// }
|
|
// return &Page{title: title, body: body}, nil
|
|
// }
|