61 lines
1.3 KiB
Go
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,
|
|
}
|
|
}
|