hugo-cms/providers/db/sites.go
2025-03-29 21:54:14 +11:00

61 lines
1.3 KiB
Go

package db
import (
"context"
"lmika.dev/lmika/hugo-cms/gen/sqlc/dbq"
"lmika.dev/lmika/hugo-cms/models"
"lmika.dev/pkg/modash/moslice"
)
func (db *DB) ListSites(ctx context.Context) ([]models.Site, error) {
res, err := db.q.ListSites(ctx)
if err != nil {
return nil, err
}
return moslice.Map(res, dbSiteToSite), nil
}
func (db *DB) InsertSite(ctx context.Context, site *models.Site) error {
id, err := db.q.NewSite(ctx, dbq.NewSiteParams{
Name: site.Name,
Title: site.Title,
OwnerUserID: site.OwnerUserID,
Theme: site.Theme,
Props: []byte("{}"),
})
if err != nil {
return err
}
site.ID = id
return nil
}
func (db *DB) GetSite(ctx context.Context, id int64) (models.Site, error) {
site, err := db.q.GetSiteWithID(ctx, id)
if err != nil {
return models.Site{}, err
}
return dbSiteToSite(site), 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,
})
}
func dbSiteToSite(site dbq.Site) models.Site {
return models.Site{
ID: site.ID,
OwnerUserID: site.OwnerUserID,
Name: site.Name,
Title: site.Title,
Theme: site.Theme,
}
}