Add model

This commit is contained in:
Romain de Laage 2022-02-14 10:26:10 +01:00
parent 25bd66be5e
commit dc7c2e1abd
Signed by: rdelaage
GPG Key ID: 534845FADDF0C329
7 changed files with 133 additions and 2 deletions

View File

@ -5,23 +5,28 @@ import (
"flag"
"git.rdelaage.ovh/rdelaage/cyanocorax/version"
"git.rdelaage.ovh/rdelaage/cyanocorax/manage"
)
const (
flagInfoHelp = "Show application information"
flagInfoHelp = "Show application information"
flagVersionHelp = "Show application version"
flagSiteHelp = "Set site file path"
)
func Parse() {
var (
flagInfo bool
flagInfo bool
flagVersion bool
flagSite string
)
flag.BoolVar(&flagInfo, "info", false, flagInfoHelp)
flag.BoolVar(&flagInfo, "i", false, flagInfoHelp)
flag.BoolVar(&flagVersion, "version", false, flagVersionHelp)
flag.BoolVar(&flagVersion, "v", false, flagVersionHelp)
flag.StringVar(&flagSite, "site", "", flagSiteHelp)
flag.StringVar(&flagSite, "s", "", flagSiteHelp)
flag.Parse()
@ -34,4 +39,10 @@ func Parse() {
fmt.Println(version.Version)
return
}
if flagSite == "" {
fmt.Println("Flag site must be set")
} else {
fmt.Println(manage.SiteFromFile(flagSite))
}
}

24
manage/site.go Normal file
View File

@ -0,0 +1,24 @@
package manage
import (
"os"
"encoding/json"
"git.rdelaage.ovh/rdelaage/cyanocorax/model/site"
)
func SiteFromFile(filePath string) (site.Site, error) {
var site site.Site
file, err := os.ReadFile(filePath)
if err != nil {
return site, err
}
err = json.Unmarshal(file, &site)
if err != nil {
return site, err
}
return site, err
}

28
model/author/author.go Normal file
View File

@ -0,0 +1,28 @@
package author
import (
"strings"
)
type Author struct {
Handle string `json:"handle"`
FullName string `json:"fullName"`
Bio []string `json:"bio"`
Banner []string `json:"banner"`
}
func (a *Author) GetBio() string {
return strings.Join(a.Bio, "\n")
}
func (a *Author) SetBio(newBio string) {
a.Bio = strings.Split(newBio, "\n")
}
func (a *Author) GetBanner() string {
return strings.Join(a.Banner, "\n")
}
func (a *Author) SetBanner(newBanner string) {
a.Banner = strings.Split(newBanner, "\n")
}

19
model/page/page.go Normal file
View File

@ -0,0 +1,19 @@
package page
import (
"strings"
)
type Page struct {
Title string `json:"title"`
Path string `json:"path"`
Content []string `json:"content"`
}
func (p *Page) GetPage() string {
return strings.Join(p.Content, "\n")
}
func (p *Page) SetPage(newContent string) {
p.Content = strings.Split(newContent, "\n")
}

18
model/post/post.go Normal file
View File

@ -0,0 +1,18 @@
package post
import (
"time"
"git.rdelaage.ovh/rdelaage/cyanocorax/model/page"
"git.rdelaage.ovh/rdelaage/cyanocorax/model/tag"
)
type Post struct {
page.Page
authors []string `json:"authors"`
tags []tag.Tag `json:"tags"`
dateEdit time.Time `json:"dateEdit"`
dateCreate time.Time `json:"dateCreate"`
datePublish time.Time `json:"datePublish"`
}

26
model/site/site.go Normal file
View File

@ -0,0 +1,26 @@
package site
import (
"strings"
"git.rdelaage.ovh/rdelaage/cyanocorax/model/author"
"git.rdelaage.ovh/rdelaage/cyanocorax/model/post"
"git.rdelaage.ovh/rdelaage/cyanocorax/model/page"
)
type Site struct {
Name string `json:"name"`
Icon string `json:"icon"`
Authors []author.Author `json:"authors"`
Posts []post.Post `json:"posts"`
Pages []page.Page `json:"pages"`
Abstract []string `json:"abstract"`
}
func (s *Site) GetAbstract() string {
return strings.Join(s.Abstract, "\n")
}
func (s *Site) SetAbstract(newAbstract string) {
s.Abstract = strings.Split(newAbstract, "\n")
}

5
model/tag/tag.go Normal file
View File

@ -0,0 +1,5 @@
package tag
type Tag struct {
Name string `json:"name"`
}