Added site setting.

This commit is contained in:
Leon Mika 2025-02-02 09:54:30 +11:00
parent 39611070f8
commit 3774c903e2
17 changed files with 170 additions and 18 deletions

View file

@ -35,3 +35,12 @@ func (db *DB) GetSite(ctx context.Context, id int64) (models.Site, error) {
Theme: site.Theme,
}, nil
}
func (db *DB) UpdateSite(ctx context.Context, site models.Site) error {
return db.q.UpdateSite(ctx, dbq.UpdateSiteParams{
ID: site.ID,
Name: site.Name,
Title: site.Title,
Theme: site.Theme,
})
}

View file

@ -80,7 +80,7 @@ func (p *Provider) PublishSite(ctx context.Context, site models.Site, target mod
func (p *Provider) ReconfigureSite(ctx context.Context, site models.Site) error {
hugoCfg := hugoConfig{
Title: site.Name,
Title: site.Title,
LanguageCode: "en",
Theme: site.Theme,
Markup: hugoConfigMarkup{

View file

@ -2,11 +2,26 @@ package themes
import "lmika.dev/lmika/hugo-cms/models"
var themes = map[string]models.ThemeMeta{
"bear": models.ThemeMeta{
Name: "bear",
var themes = []models.ThemeMeta{
{
ID: "bear",
Name: "Bear",
URL: "https://github.com/janraasch/hugo-bearblog",
PreferTitle: true,
PostDir: "blog",
},
{
ID: "terminal",
Name: "Terminal",
URL: "https://github.com/panr/hugo-theme-terminal",
PreferTitle: true,
PostDir: "posts",
},
{
ID: "yingyang",
Name: "Yingyang",
URL: "https://github.com/joway/hugo-theme-yinyang",
PreferTitle: true,
PostDir: "posts",
},
}

View file

@ -1,14 +1,33 @@
package themes
import "lmika.dev/lmika/hugo-cms/models"
import (
"lmika.dev/lmika/hugo-cms/models"
"lmika.dev/pkg/modash/momap"
"slices"
"sort"
)
type Provider struct{}
type Provider struct {
themes []models.ThemeMeta
themeIndex map[string]models.ThemeMeta
}
func New() *Provider {
return &Provider{}
ts := slices.Clone(themes)
sort.Slice(ts, func(i, j int) bool { return ts[i].Name < ts[j].Name })
ti := momap.IndexSlice(themes, func(m models.ThemeMeta) string { return m.ID })
return &Provider{
themes: ts,
themeIndex: ti,
}
}
func (p *Provider) Themes() []models.ThemeMeta {
return p.themes
}
func (p *Provider) Lookup(name string) (models.ThemeMeta, bool) {
t, ok := themes[name]
t, ok := p.themeIndex[name]
return t, ok
}