feat(pages): add DB provider methods for pages
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
7755bf5043
commit
2cd9ff8721
115
providers/db/pages.go
Normal file
115
providers/db/pages.go
Normal file
|
|
@ -0,0 +1,115 @@
|
||||||
|
package db
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"lmika.dev/lmika/weiro/models"
|
||||||
|
"lmika.dev/lmika/weiro/providers/db/gen/sqlgen"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (db *Provider) SelectPagesOfSite(ctx context.Context, siteID int64) ([]*models.Page, error) {
|
||||||
|
rows, err := db.queries.SelectPagesOfSite(ctx, siteID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
pages := make([]*models.Page, len(rows))
|
||||||
|
for i, row := range rows {
|
||||||
|
pages[i] = dbPageToPage(row)
|
||||||
|
}
|
||||||
|
return pages, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (db *Provider) SelectPage(ctx context.Context, id int64) (*models.Page, error) {
|
||||||
|
row, err := db.queries.SelectPage(ctx, id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return dbPageToPage(row), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (db *Provider) SelectPageByGUID(ctx context.Context, guid string) (*models.Page, error) {
|
||||||
|
row, err := db.queries.SelectPageByGUID(ctx, guid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return dbPageToPage(row), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (db *Provider) SelectPageBySlugAndSite(ctx context.Context, siteID int64, slug string) (*models.Page, error) {
|
||||||
|
row, err := db.queries.SelectPageBySlugAndSite(ctx, sqlgen.SelectPageBySlugAndSiteParams{
|
||||||
|
SiteID: siteID,
|
||||||
|
Slug: slug,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return dbPageToPage(row), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (db *Provider) SavePage(ctx context.Context, page *models.Page) error {
|
||||||
|
if page.ID == 0 {
|
||||||
|
showInNav := int64(0)
|
||||||
|
if page.ShowInNav {
|
||||||
|
showInNav = 1
|
||||||
|
}
|
||||||
|
newID, err := db.queries.InsertPage(ctx, sqlgen.InsertPageParams{
|
||||||
|
SiteID: page.SiteID,
|
||||||
|
Guid: page.GUID,
|
||||||
|
Title: page.Title,
|
||||||
|
Slug: page.Slug,
|
||||||
|
Body: page.Body,
|
||||||
|
PageType: int64(page.PageType),
|
||||||
|
ShowInNav: showInNav,
|
||||||
|
SortOrder: int64(page.SortOrder),
|
||||||
|
CreatedAt: timeToInt(page.CreatedAt),
|
||||||
|
UpdatedAt: timeToInt(page.UpdatedAt),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
page.ID = newID
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
showInNav := int64(0)
|
||||||
|
if page.ShowInNav {
|
||||||
|
showInNav = 1
|
||||||
|
}
|
||||||
|
return db.queries.UpdatePage(ctx, sqlgen.UpdatePageParams{
|
||||||
|
Title: page.Title,
|
||||||
|
Slug: page.Slug,
|
||||||
|
Body: page.Body,
|
||||||
|
PageType: int64(page.PageType),
|
||||||
|
ShowInNav: showInNav,
|
||||||
|
UpdatedAt: timeToInt(page.UpdatedAt),
|
||||||
|
ID: page.ID,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (db *Provider) UpdatePageSortOrder(ctx context.Context, id int64, sortOrder int) error {
|
||||||
|
return db.queries.UpdatePageSortOrder(ctx, sqlgen.UpdatePageSortOrderParams{
|
||||||
|
SortOrder: int64(sortOrder),
|
||||||
|
ID: id,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (db *Provider) DeletePage(ctx context.Context, id int64) error {
|
||||||
|
return db.queries.DeletePage(ctx, id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func dbPageToPage(row sqlgen.Page) *models.Page {
|
||||||
|
return &models.Page{
|
||||||
|
ID: row.ID,
|
||||||
|
SiteID: row.SiteID,
|
||||||
|
GUID: row.Guid,
|
||||||
|
Title: row.Title,
|
||||||
|
Slug: row.Slug,
|
||||||
|
Body: row.Body,
|
||||||
|
PageType: int(row.PageType),
|
||||||
|
ShowInNav: row.ShowInNav != 0,
|
||||||
|
SortOrder: int(row.SortOrder),
|
||||||
|
CreatedAt: time.Unix(row.CreatedAt, 0).UTC(),
|
||||||
|
UpdatedAt: time.Unix(row.UpdatedAt, 0).UTC(),
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue