Have got post creation working.

This commit is contained in:
Leon Mika 2025-01-27 14:23:54 +11:00
parent 63b19a249a
commit 8e0ffb6c24
20 changed files with 479 additions and 11 deletions

46
providers/db/posts.go Normal file
View file

@ -0,0 +1,46 @@
package db
import (
"context"
"github.com/jackc/pgx/v5/pgtype"
"lmika.dev/lmika/hugo-crm/gen/sqlc/dbq"
"lmika.dev/lmika/hugo-crm/models"
"lmika.dev/pkg/modash/moslice"
)
func (db *DB) ListPostsOfSite(ctx context.Context, siteID int64) ([]models.Post, error) {
res, err := db.q.ListPosts(ctx, siteID)
if err != nil {
return nil, err
}
return moslice.Map(res, func(p dbq.Post) models.Post {
return models.Post{
ID: p.ID,
SiteID: p.SiteID,
Title: p.Title.String,
Body: p.Body,
State: models.PostState(p.State),
PostDate: p.PostDate.Time,
CreatedAt: p.CreatedAt.Time,
}
}), nil
}
func (db *DB) InsertPost(ctx context.Context, p *models.Post) error {
res, err := db.q.InsertPost(ctx, dbq.InsertPostParams{
SiteID: p.SiteID,
Title: pgtype.Text{String: p.Title, Valid: p.Title != ""},
Body: p.Body,
State: dbq.PostState(p.State),
Props: []byte(`{}`),
PostDate: pgtype.Timestamptz{Time: p.PostDate, Valid: !p.PostDate.IsZero()},
CreatedAt: pgtype.Timestamp{Time: p.CreatedAt, Valid: !p.CreatedAt.IsZero()},
})
if err != nil {
return err
}
p.ID = res
return nil
}

View file

@ -3,6 +3,7 @@ package hugo
type SiteDir string
const (
BaseSiteDir SiteDir = "base"
ThemeSiteDir SiteDir = "theme"
BaseSiteDir SiteDir = "base"
ThemeSiteDir SiteDir = "theme"
ContentSiteDir SiteDir = "content"
)

View file

@ -36,7 +36,7 @@ func (p *Provider) SiteStagingDir(site models.Site, what SiteDir) string {
case ThemeSiteDir:
return filepath.Join(p.stagingDir, site.Name, "themes", site.Theme)
}
return ""
return filepath.Join(p.stagingDir, site.Name, string(what))
}
func (p *Provider) NewSite(ctx context.Context, site models.Site) error {

View file

@ -4,7 +4,9 @@ import "lmika.dev/lmika/hugo-crm/models"
var themes = map[string]models.ThemeMeta{
"bear": models.ThemeMeta{
Name: "bear",
URL: "https://github.com/janraasch/hugo-bearblog",
Name: "bear",
URL: "https://github.com/janraasch/hugo-bearblog",
PreferTitle: true,
PostDir: "blog",
},
}